Fuzzy Algoritması

Lycaon

Üye
Katılım
30 Eki 2008
Mesajlar
24
Puanları
1
Yaş
39
merhaba arkadaşlar,
öncelikle söyleyeyim, ben makine mühendisliği öğrencisiyim. dolayısıyla terminolojiye çok hakim değilim. yanlış terimler kullanırsam affola.

bitirme tezim olarak şöyle bir konu aldım. okulda halihazırda devam eden bir quadrator dengeleme projesinde, simulinkte kullanılan fuzzy bloğu, bir hafıza probleminden dolayı mikroişlemcide bir sorun oluşturuyormuş. ben programlama ile ilgilendiğimi söyleyince, hoca da benden bu fuzzy bloğunun yaptığı işi yapan bir matlab embedded function hazırlamamı istedi. algoritmayı yazmakta çok bi sorun yok da fuzzy bloğunun tam olarak ne yaptığını bilmediğim için yazamıyorum :) makine müh de okuduğum için elimde çok kaynak da yok. yardımcı olabilecek arkadaşlardan her türlü yardıma ihtiyacım var.

burdan sonraki kısmı vakti olup kafa yorabilecek arkadaşlar için yazıyorum. sistemde iki giriş (e,de) ve bir çıkış var. bir giriş bir çıkış olduğu durum için bir hesaplama yöntemi buldum. sinyalin üyelik fonksiyonlarını kestiği noktaları, çıkış üyelik fonksiyonlarında üçgenin yüksekliği olarak kullandım. oluşan üçgenlerin ortak ağırlık noktası çıkış sinyalimi verdi. ama bu yöntemi iki giriş olduğu durumda nasıl uygulayacağımı bulamadım. çıkış sinyalini hesaplamak için farklı bir yöntem var mıdır? yoksa bu yöntem iki giriş için nasıl uygulanabilir?
yada tamamen yanlış yoldaysam :) elimde iki giriş, üyelik fonksiyonları ve kural tablosu varken çıkışı nasıl hesaplarım?

yardımcı olan arkadaşlara şimdiden teşekkürler.
iyi çalışmalar.
 
İki giriş olduğu zaman bu sefer iki girişin durumuna göre tablo yapacaksın.
 
e : hata
de : hata değişimi
hatanın ve hata değişiminin bulanık kümeleri şöyle olsun.
NB (negatif büyük)
NK (negatif küçük)
S (sıfır)
PK (pozitif küçük)
PB (pozitif büyük)

hata ve hata değişiminin üyelik değerleri bulunur.
örneğin hata : PK ya 0,25 S ye 0,75 üye.
hata değişimi : NK 0,2 ve NB ye 0,8 üye.

elimizde 4 adet kural tabanına gönderilecek değer var.
1- e=PK(0,25) ve de=NK(0,2)
2 - e=PK(0,25) ve de=NB(0,8)
3 - e=S(0,75) ve de=NK(0,2)
4 - e=S(0,75) ve de=NB(0,8)

bundan sonrası bulanık içermeyi tanımlamaktır.minumun kurali,çarpım kuralı,aritmetik ürün gibi.burada minimum kuralıno uygular isek;

1 - 0,25 ^0,2 = 0,2
2 - 0,25 ^0,8 = 0,25
3 - 0,75 ^0,2 = 0,2
4 - 0,75 ^0,8 = 0,75 (yani iki değer arasından küçüğünü seçme işlemi)

Sonrası kural tabanına başvurup bulanık çıkarım yapmaktır.
1 - e=PK ve de=NK ise sonuc=S dır.
2 - e=PK ve de=NB ise sonuc=PK dır.
3 - e=S ve de=NK ise sonuc=S dır.
4 - e=S ve de=NB ise sonuc=NK dır.

Burada 4 adet bulanık çıkarım elde ettik.

1- S (0,2)
2 - PK (0,25)
3 - S (0,2)
4 - NK (0,75)
Bu noktadan sonra durulama yapılır.bu aşamada dilsel ifadeler sayısal ifadelere çevrilir.
Duruluma işleminin birkaç yöntemi vardır ama en çok tercih edileni ağırlıklı ortalama metodudur.Çıkış kümesinde yukarıda elde edilen 4 adet çıkarım yerleştirilir.üyelik değerleri üzerinde kalan kısımları kesilir.ortaya yamuklar çıkar. kümelerin ağırlık ortalamaları bulunur ve ortaya net sonuç çıkar.

elimden geldiğince basit bir şekilde anlatmaya çalıştım.Yanlış bilgiler var ise lütfen arkadaşlarım uyarsınlar.
 
de_staco ilgin için teşekkürler dostum.
5 ay önce bu mesajı yazdığımda bu yöntemlerle ilgili gerçekten hiçbir fikrim yoktu ama farklı kaynaklar incelemeye başlayınca hesaplamayı başardım. Bu benim bitirme tezimin bir parçasıydı. Matlab emmedded function olarak bulanık bir kontrolcü algoritması yazdım. Matlab FIS editor tarafından oluşturulan eşdeğer bir bulanık kontrolcüyle karşılaştırıldığında çok yakın çıkışlar verdiği gözlemlendi. Bu kontrolcü algoritması ile bir quadrotorun bulanık kendinden ayarlamalı PD kontrolü yapıdı ve oldukça başarılı sonuçlar elde edildi.
Eğer ilgilenen olursa bu algoritmayı ayrıntılı bir açıklamasıyla beraber paylaşabilirim. İlgilenenler pm ile iletişime geçebilir.

de_staco aslında sana sormak istediğim başka birşey var. Benim yazdığım algoritme üçgen üyelik fonksiyonları kullanıyor. Şu sıralar bu algoritmanın gaus eğrisi ile çalışan bir versiyonunu yazmaya çalışıyorum ama çıkış hesaplanırken eğri altında kalan alanların ağırlık merkezi nasıl hesaplanabilir onu çözebilmiş değilim. Bu konuda bir bilgin ya da bir fikrin varsa çok yardımcı olur.

İyi çalışmalar.
 
aslında gauss eğrisi ile hiç ilgilenmedim.İncelediğim kaynaklarda da durulama yöntemleri içerisinde rastlamadım.Yazdığınız algoritma ile kesinlikle ilgilenmekteyim.pm den msj atarım.
 
Sayın Lycaon bitirme tezinizi çoğu kişi gibi bende merak ediyorum. Bitirme tezinizi ayrıntılı bir anlatımla ayrı bir konu açarak forum üzerinden paylaşırsanız bilginin oldukça az olduğu fuzzy kontrol alanında yıllarca faydalanılacak önemli bir kaynak yaratmış olursunuz.
 
Sayın Lycaon bitirme tezinizi çoğu kişi gibi bende merak ediyorum. Bitirme tezinizi ayrıntılı bir anlatımla ayrı bir konu açarak forum üzerinden paylaşırsanız bilginin oldukça az olduğu fuzzy kontrol alanında yıllarca faydalanılacak önemli bir kaynak yaratmış olursunuz.

kesinlikle "AzRail" arkadaşa katılıyorum. hatta şuanda bir projemde sıkışmış durumdayım ve buna benzer bir algoritma yazıp yazmama konusunda ikilimde kaldım.
 
Fuzzy kontrol konusunda bu kadar az kaynak bulunca insanların çok ilgilenmeyeceğini düşünmüştüm. En kısa zamanda bir konu açıp ayrıntılı bir şekilde anlatıp tezimi paylaşacağım.
 
Fuzzy kontrol konusunda bu kadar az kaynak bulunca insanların çok ilgilenmeyeceğini düşünmüştüm. En kısa zamanda bir konu açıp ayrıntılı bir şekilde anlatıp tezimi paylaşacağım.

şimdiden emeğein için teşekkür ederim. bu konuda farklı kaynakalrın da varsa o konuunun altında paylaşırsan sevinirimi. iyi çalışmalar
 

Forum istatistikleri

Konular
128,179
Mesajlar
915,658
Kullanıcılar
449,940
Son üye
yavuzturan

Yeni konular

Geri
Üst