Bulanık Mantık #4: Bulanık Sistem Uygulaması

Önceki yazılarda basit bir bulanık sistem oluşturmak için gerekli olan tasarım parametrelerinden bahsettik. Bu yazıda, tasarım zincirinin son halkası olan durulaştırma yönteminden bahsedeceğiz. Yazının sonunda ise klasik bir bulanık mantık problemini, şimdiye dek incelediğimiz yöntemlerle çözmeye çalışacağız.

Durulaştırma

Bulanık sisteme girilen değerlerin; oluşturduğumuz kural ve bilgilerin süzgecinden geçmeden evvel, cebirsel dünyadan bulanık mantık dünyasına geçiş yapabilmesi için, bulanıklaştırma denilen bir işlemden geçirildiğine değindik. Burada tam olarak; bildiğimiz aralıktaki giriş değerleri, 0 ve 1 aralığındaki bulanık değerlere (üyelik fonksiyonlarının yardımıyla) ölçekleniyor. Sonrasında oluşturulan kurallar ve bu kurallara göre çalışan çıkarım birimleri, bulanık değerleri referans alarak işlemlerini gerçekleştiriyor. Üretilen çıkış değeri buraya kadar bulanık değer olarak geldiği için durulaştırılması gerekiyor.

1. Ağırlık Merkezi

Özellikle Mamdani çıkarım yönteminde tercih edilen ve sıkça kullanılan durulaştırma yöntemlerinden birisidir. Tetiklenen kurallardan gelen üyelik değerlerinin, bulanık çıkış kümeleri üzerinde kestiği alanlar toplanır. Daha sonra bu alanların geometrik ağırlık merkezi aşağıdaki formül (Formül 1) ile hesaplanır. Ortaya çıkan değer, artık durulaşmış çıkış değerdir.

Formül 1. Ağırlık merkezinin hesaplanması

2. Ağırlıklı Ortalama

Simetrik üyelik fonksiyonuna sahip çıkış kümelerinde uygulanan bir yöntemdir. Ağırlıklı ortalama yönteminde her bir kuraldan alınan üyelik değeri, bu değerin çıkış kümesi üzerinde kestiği alanla çarpılır. Bu çarpımların toplamının; bütün kurallardan alınan üyelik değerlerinin toplamına oranı bize ağırlıklı ortalamayı vermektedir. Aşağıdaki formülde (Formül 2) belirtilmiştir.

Formül 2. Ağırlık ortalama değeri ile durulaştırma. n, toplam kural sayıdır.

3. Alan Merkezi

Bulanık çıkış kümeleri üzerinde kesilen alanlarda, en büyük üyelik değerini veren çıkış değerleri için aşağıdaki formül (Formül 3) uygulanır. Ortaya çıkan değere alan merkezi denilmektedir. Ağırlıklı ortalamaya benzer bir yöntemdir. Fakat bu yöntemde alan hesaplamaya gerek kalmaz.

Formül 3. Alan merkezi. n, toplam kural sayısıdır.

4. En Büyüklerin En Küçüğü ve En Büyüğü

Tüm bulanık çıkış kümelerinin birleşiminde belirlenen en küçük ya da en büyük değerlerin seçilmesi yöntemidir. Doğrudan çıkış aralığı üzerinde, üyelik derecesine göre bir değer seçildiği için; matematiksel işleme gereksinim duyulmaz. (Şekil 1)

5. En Büyüklerin Ortalaması

4. yönteme benzer bir yöntemdir. Burada da, en büyük üyelik değerini veren çıkış değerlerinin ortalaması hesaplanır. (Şekil 1)

Şekil 1. Durulaştırma yöntemleri. Y ekseni, çıkış değerler için istenen aralığı tutan eksendir.

Uygulama: Çamaşır Makinesi Tasarımı

Görsel: kaynak
  • Çıkış: Yıkama devri (rpm)

Adım 1: Bulanık kümelerin oluşturulması

Belirlediğimiz giriş ve çıkış değerleri için, dilsel değerleri belirten bulanık kümeleri aşağıdaki gibi oluşturalım:

  • Çamaşır: Az, Normal, Çok
  • Devir: Hassas, Hafif, Normal, Güçlü

Adım 2: Üyelik fonksiyonlarının oluşturulması

Belirtilen bulanık kümeler için üçgen ve yamuk üyelik fonksiyonları kullanarak, aşağıdaki grafikleri oluşturalım.

Şekil 2. Sertlik için üyelik fonksiyonları.
Şekil 3. Çamaşır miktarı için üyelik fonksiyoları.
Şekil 3. Devir sayısı için üyelik fonksiyonları.

Adım 3: Kuralların oluşturulması

Sistemimizin kural tabanı için, aşağıdaki kuralları belirleyelim:

  • Kural 2: EĞER su AZ YUMUŞAK VE çamaşır NORMAL İSE, O HALDE devir HAFİFTİR.
  • Kural 3: EĞER su AZ SERT VEYA çamaşır NORMAL İSE, O HALDE devir NORMALDİR.
  • Kural 4: EĞER su SERT VEYA çamaşır ÇOK İSE, O HALDE devir GÜÇLÜDÜR.

Adım 4: Giriş değerlerinin alınması ve bulanıklaştırılması

Problemimiz için tanımlanan giriş değerleri şu şekilde olsun:

  • Çamaşır miktarı: 4.5 kg
  1. µAzYumuşak(8) = 0.5
  2. µAzSert(8) = 0.5
  3. µSert(8) = 0
  1. µNormal(4.5) =0.25
  2. µÇok(4.5) = 0.75

Adım 5: Tetiklenen kuralların tespit edilmesi

Dikkat ettiyseniz, 1. ve 2. kuralda olgular ‘ve’ bağlacı ile bağlanmışken; diğer kurallarda ‘veya’ bağlacı kullanılmıştır. Bu da, kurallardan çıkarılacak sonuçlar için, ve bağlacı yerine min; veya bağlacı yerine ise max operatörünün kullanılması gerektiği anlamına gelir. Üyelik değerlerini, kuralların ifade ettiği olgulara göre, ilgili operatörlere uygularsak;

  • Kural 2: min(0.5, 0.25) =0.25
  • Kural 3: max(0.5, 0.25) = 0.5
  • Kural 4: max(0, 0.75) = 0.75

Adım 6: Çıkarımın gerçeklenmesi

Çıkarım yöntemi olarak Mamdani çıkarımını tercih edebiliriz. Hatırladığınız gibi Mamdani çıkarımını; tetiklenen kurallardan gelen üyelik değerlerinin, çıkış kümeleri üzerinde kestiği bölgelerin hesaplanmasını öneren yöntem olarak belirtmiştik. O halde; kurallardan gelen değerlerin, işaret ettikleri çıkış kümelerine göre y-ekseninde (üyelik değerleri ekseni) keseceği değerler şu şekilde olacaktır (ÇK: Çıkış Kümesi):

  • Hafif ÇK için: 0.25 (Kural 2)
  • Normal ÇK için: 0.5 (Kural 3)
  • Güçlü ÇK için: 0.75 (Kural 4)
Şekil 4. Mamdani çıkarımı sonucunda ortaya çıkan alanlar.

Adım 7: Durulaştırma

Durulaştırma için alan merkezi yöntemini kullanalım. Öncelikle her bir kuraldan gelen çıkış değeri için; Şekil 4.te gösterilen, üyelik fonksiyonlarını kestiği minimum ve maksimum çıkış değerlerini, ardından bu değerlerin ortalamasını hesaplayalım:

  • Hafif ÇK için: min = 450, max = 750, ortalama = 600
  • Normal ÇK için: min = 700, max = 900, ortalama = 800
  • Güçlü ÇK için: min = 950, max = 1200, ortalama = 1075
  • Alan merkezi = 1356.25 / 1.5 = 904,16

Sonuç

Literatürde sıkça geçen çamaşır makinesi tasarımı üzerinden; basit bir bulanık sistem oluşturmayı ve bu bağlamda, bir optimizasyon problemini çözümlemeyi tecrübe ettik. Sonraki yazılarda, çeşitli örnekleri Python üzerinden gelişmiş modüller ile çözümlemeyi deneyeceğiz.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store