Fuzzy Logic Controller

Başlatan Firzen, 02 Haziran 2022, 16:07:20

Firzen

Herkese Merhabalar,

Forumda soru sormak yerine kısa bir bilgi paylaşayım dedim:  Fuzzy Logic Controller. Klasik kime göre neye göre sorusunu yazmayacağım size. İşin biraz matematik birazda kontrol kısmından bahsedeceğim.
Adım adım nasıl çalışıyor yayında anlattığım gibi anlatacağım.

Öncelikle blok yapısı:



Yukarıdaki Fuzzy PID block yapısı mevcut. Bizim sisteme giriş işaretlerimiz: "Hata(e)" ve "Hatanın Değişimi(dE)". Bu değerler nereden geliyor? Tabiki sensör ve istenilen referanstan: "Reference – Measurement". Bu e ve dE sisteme göre tüne edilmiş katsayılar. Bunları optimize etmek için Genetik algoritma Big-Bang Big-Crunch gibi algoritmalar kullanılsa da basit sistemlerde deneme yanılma ile de bulunabiliyor (Basit Sistemlerde!). Ardından asıl Fuzzy olan yere geliyor. Bunun içinse öncelikle tanımlamalarda kullanılan membeship function(MF) tanımlamaları yapılıyor. Ben buradaki anlatım için Triangular 3 değerli membeship function seçtim her bir hata ve hatanın değişimi için. Yani bu aşağıdaki fonksiyondan 2 tane olacak demektik.



Tamam bu MF'leri belirledim de ne oldu? Buradaki sistemin girişlerini fuzzyleştiriyoruz. Nasıl?
Öncelikle  hani Ke ve Kd ile e ve dE yi çarpmıştık bundan sonra sistemin işaret aralığı [-1, 1] arasında oldu. Ardından girişe gelen işaret belirlenen method ile işleme sokuluyor. Nasıl bir method? Örneğin Sugeno.
Örneğin; Fuzzy Logic Block kısmına E için girdi: -0.3, dE için 0.2 olsun. [-1, 1] eksenine dik olacak şekilde her ikisi için ayrı ayrı verilen doğruları çiziyoruz.

Doğal olarak E için-> N ve Z aktif P fonksiyonu için 0 olacak.
dE içinse -> P ve Z aktif olacak N 0 olacak. Bundan sonra karşılaştırma için kullanılan yöntem belirlenmeli örneğin aşağıdaki gibi "Weighted Average " a göre hesap yapılmış (weigted product max min, tsukomoto vs daha bir sürü var...).



Tamam çıktı burada 65 çıkmış ama bu tabiki kendi sistemleri için. Bizde aynı işlemi yaptık farzedelim ve çıkışımız Crisp yani sabir bir değer çıktı. Z1 = 0.70



Bu durumda kural tablosuna bakılıp hangi aralığa giriyor bakılıyor. PM: 0.65 daha yakın. Bu değer bizim Uf değerimiz oluyor.
Sonrasında da Uf değeri integrator ve K1 değeri ile çarpılıp sistemin giriş controlor işareti uF'ye dönüyor.

Okuduğunuz için teşekkürler.

Kararsız...

Epsilon

#1
Daha anlaşılır yapmak için bir senaryo ve değerlerle izah etseniz.

Mesela aşağıdaki videoda nerelerde kullanıldığını izah etmiş
Hava "iyi" demek için ülkenin enlemi boylamı,hangi ayda olduğu bilindiğinde saat bilgisi alındığında ,güneş den gelen aydınlık değeri ,rüzgar ,atmosfer basıncı değeri alındığında  "iyi"  yada "Kötü" derken çokmu hata yapıyoruz?
 Bulanık mantık kısmı neresi oluyor?


Erol YILMAZ

Firzen hocam tebrikler, Gayet güzel özet geçmişsiniz konuyu.
İlk yarısı anladığım bildiğim kısımdı. İkinci yarısını da daha sakin kafayla okuyup anlamaya çalışacağım.

Firzen

#3
Söylemeyi unuttum internette Bu farklı yöntemler için ve MCU'lar için Python, C/C++ kodları mevcut. Öyle afilli sözler, deyimler, hikayelerle süsleyemediğim içinse ayrıca kusura bakmayın.
Kararsız...

Firzen

Alıntı yapılan: Epsilon - 02 Haziran 2022, 17:13:57Daha anlaşılır yapmak için bir senaryo ve değerlerle izah etseniz.

Mesela aşağıdaki videoda nerelerde kullanıldığını izah etmiş
Hava "iyi" demek için ülkenin enlemi boylamı,hangi ayda olduğu bilindiğinde saat bilgisi alındığında ,güneş den gelen aydınlık değeri ,rüzgar ,atmosfer basıncı değeri alındığında  "iyi"  yada "Kötü" derken çokmu hata yapıyoruz?
 Bulanık mantık kısmı neresi oluyor?


Sanırım forumda teknik bir sıkıntı oluştu yazdığım mesaj önce gönderildi sonra silindi falan.

Şöyle tekrar özetleyeyim:

Örneğin elinizde bir sistem var bazen yumuşak bazen sert bazense normal davranmasını istiyorsunuz.
Ama bazense Sert ile normal arası birşey davranmasını istiyorsunuz.

Bu durumda - > Yumuşak - Normal - Sert = N Z P diye nitelendirilen yere denk geliyor.

İyi ve Kötü demektense 3'e ayrılan İyi Kötü Normal - > Bazen ÇOKTA KÖTÜ DEĞİL İYİ NORMAL arası deriz işte o bu.
Kararsız...

Epsilon

Wikipedianın sayfasını da okuyunca biraz daha anlamaya başladım gibi.

1965 den sonra ortaya çıkmış.
Bu arada bulanık mantıkla ilgili Microsoft Excel de bazı komutlar ve fonksiyonlarda varmış
 

Firzen

Alıntı yapılan: Epsilon - 02 Haziran 2022, 18:43:10Wikipedianın sayfasını da okuyunca biraz daha anlamaya başladım gibi.

1965 den sonra ortaya çıkmış.
Bu arada bulanık mantıkla ilgili Microsoft Excel de bazı komutlar ve fonksiyonlarda varmış
 

Bu aralar meşhur olan Pirinç makineleri, ev tipi ekmek yapmak makineleri ve AirFryer'lar bulanık mantık tabanlı çalışıyor.
Kararsız...

Epsilon

Alıntı yapılan: Firzen - 02 Haziran 2022, 18:47:15Bu aralar meşhur olan Pirinç makineleri, ev tipi ekmek yapmak makineleri ve AirFryer'lar bulanık mantık tabanlı çalışıyor.
Yani pirinci örneğin 20 dakika 250 derecede pişirmek yerine ,bulanık mantıkta neye göre pişip pişmediğine karar veriyor ?

Erol YILMAZ

Alıntı yapılan: Epsilon - 02 Haziran 2022, 18:51:35Yani pirinci örneğin 20 dakika 250 derecede pişirmek yerine ,bulanık mantıkta neye göre pişip pişmediğine karar veriyor ?

cikan buhar/nem miktari olabilir

Epsilon

#9
Burada izah ediyor.O kadar ölçek ve seçimden sonra


Firzen

#10
Alıntı yapılan: Epsilon - 02 Haziran 2022, 18:51:35Yani pirinci örneğin 20 dakika 250 derecede pişirmek yerine ,bulanık mantıkta neye göre pişip pişmediğine karar veriyor ?

Aynen 20DK 250C de yumuşak pirinç
15DK 230C normal
10DK 200C sert pirinç diyelim

Bu sistem sizin yumuşaklık talebinizi arttırıyor Y1 Y2 Y3 gibi. Y3 için 18DK 245C yapabilir.

02 Haziran 2022, 19:35:01
Alıntı yapılan: Erol YILMAZ - 02 Haziran 2022, 19:00:12cikan buhar/nem miktari olabilir

Aynen böyle çalışıyor Nem, Basınç
Kararsız...