Bulanık Mantık için kod, makale, çalışma dosyaları.

musa_

Üye
Katılım
12 Kas 2013
Mesajlar
10
Puanları
1
Yaş
34
değerli dostlar bu yıl bitirme tezimi bulanık mantık üzerine özellikle de bulanık mantık ve veri tabanı konuları üzerine yazmak istiyorum. eğer elinizde kaynak kod, makale veya çalışma notları varsa bu başlık altında paylaşalım. bende tüm bulduklarımı burda paylaşacağım ki birilerine faydalı olsun. saygılar.
 
bulanık mantık ile ilgili ilk örnek kodları ekliyorum. örneği açıklayım biraz ; servis ve yemek durumuna göre bahşiş veren bir bulanık mantık örneği. mesela servis iyi ve yemek kötü ise ona göre bir bahşiş miktarı, servis kötü yemek de kötü ise ayrı bir bahşiş vs.. diğer ihtimaller işte. Neyse kodları ekleyim yanına kısa kısa notlar da eklerim.Kodlar c++ kodudur. Bulanık mantık düzenleyici bir program ile mantığı oluşturduktan sonra kodları kendi oluşturuyor.

fl::Engine* engine = new fl::Engine; engine->setName("tipper1");

engine->addHedge(new fl::Any);

engine->addHedge(new fl::Extremely);

engine->addHedge(new fl::Not);

engine->addHedge(new fl::Seldom);

engine->addHedge(new fl::Somewhat);

engine->addHedge(new fl::Very);

// aslında burda biraz açıklama yapmam gerek, bulanık mantıkta bilinmesi gereken en önemli şey girişler ve kurallardır. Aşağıda girişleri tanımlandıktan sonra bu girişlere göre kurallar belirlenecek ve o kurallar dahilinde bahşiş miktarı gösterilecektir.

fl::InputVariable* inputVariable1 = new fl::InputVariable;

inputVariable1->setName("service");

inputVariable1->setRange(0.000, 10.000);



inputVariable1->addTerm(new fl::Gaussian("poor", 0.000,1.500));
inputVariable1->addTerm(new fl::Gaussian("good", 5.000,1.500));
inputVariable1->addTerm(new fl::Gaussian("excellent", 10.000,1.500));
engine->addInputVariable(inputVariable1);


fl::InputVariable* inputVariable2 = new fl::InputVariable;
inputVariable2->setName("food");
inputVariable2->setRange(0.000, 10.000);


inputVariable2->addTerm(new fl::Trapezoid("rancid", 0.000,0.000,1.000,3.000));
inputVariable2->addTerm(new fl::Trapezoid("delicious", 7.000,9.000,10.000,10.000));
engine->addInputVariable(inputVariable2);


fl::OutputVariable* outputVariable1 = new fl::OutputVariable;
outputVariable1->setName("tip");
outputVariable1->setRange(0.000, 30.000);
outputVariable1->setDefaultValue(std::numeric_limits<fl::scalar>::quiet_NaN());
outputVariable1->setLockDefuzzifiedValue(true);
outputVariable1->setDefuzzifier(new fl::Centroid(500));
outputVariable1->output()->setAccumulation(new fl::Maximum);


outputVariable1->addTerm(new fl::Triangle("cheap", 0.000,5.000,10.000));
outputVariable1->addTerm(new fl::Triangle("average", 10.000,15.000,20.000));
outputVariable1->addTerm(new fl::Triangle("generous", 20.000,25.000,30.000));
engine->addOutputVariable(outputVariable1);


fl::RuleBlock* ruleblock1 = new fl::RuleBlock;
ruleblock1->setName("");
ruleblock1->setTnorm(new fl::Minimum);
ruleblock1->setSnorm(new fl::Maximum);
ruleblock1->setActivation(new fl::Minimum);


ruleblock1->addRule(fl::MamdaniRule: parse(
"if service is poor or food is rancid then tip is cheap", engine));
ruleblock1->addRule(fl::MamdaniRule: parse(
"if service is good then tip is average", engine));
ruleblock1->addRule(fl::MamdaniRule: parse(
"if service is excellent or food is delicious then tip is generous", engine));
engine->addRuleBlock(ruleblock1);
 
vay muhteşem yaa nasıl degerlendire bilirim bakıyım bii
 
bulanık mantığın bir de veritabanı üzerinde kullanılan şekli var. bulanık veritabanı sorguları. şimdi onun üzerine araştırma yapıyorum, SQL server 2012 veya oracle üzerinde nsaıl kullanabiilrim bulanık mantığı bakalım. yalnız bu konuda ileri seviye türkçe kaynak bulmak baya sıkıntılı. bakalım elime geçenleri en son düzenledikten sonra burda paylaşmayı, tez'im bittikten sonra ana hatları ile burda da paylaşabilirim.
 
Bulanık mantık uygulamasıyla DC Motor Hız Kontrolü Gazi niversitesi Akeriim Bu linkte 2008 yılında Gazi Üniversitesi Fen Bilimleri Enstitüsünde yüksek lisans yapan Mohammed M.Faris adlı şahsın tezini indirebilirsiniz. İyi çalışmalar.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…