Çarşamba, Şubat 27

1.Problem tanımı: Bulanık Mantıkla Çalışan Çamaşır Makinası

1)Üyelik fonksiyonlarının geliştirilmesi: Çamaşır makinası kullanıcıdan 1-10 arası değerler alır.Bu da iki linguistik değişkene denk düşer, "kirlilik derecesi" ve "çamaşır ağırlığı". Her birininde 3 linguistic değeri vardır.
Kirlilik derecesi(Dd) = {Az kirli, Orta kirli, Çok kirli}= ve
Aırlık (Dt) = {hafif, Orta, Ağır}= . Çamaşır makinesinden beklenen linguistic değişken ise "yıkama derecesi" 0 ve 60 dakika arasında değişir. Çıkış için ise; Wd = {Çok Kısa, Kısa, orta, uzun, Çok uzun} = .
2.Kural tabanının geliştirilmesi:3’er adet üyelik fonksiyonuna sahip iki girişimiz mevcut bu yüzden 3x3 = 9 kural çıkarabiliriz ;

1-)If degree of dirtiness High and weight is Heavy, then duration of wash cycle is Very long;
2-)If degree of dirtiness Medium and weight is Heavy, then duration of wash cycle is Long;
3-)If degree of dirtiness Low and weight is Heavy, then duration of wash cycle is Long;
4-)If degree of dirtiness High and weight is Medium, then duration of wash cycle is Long;
5-)If degree of dirtiness Medium and weight is Medium, then duration of wash cycle is Medium;
6-)If degree of dirtiness Low and weight is Medium, then duration of wash cycle is Medium;
7-)If degree of dirtiness High and weight is not heavy, then duration of wash cycle is Medium;
8-)If degree of dirtiness Medium and weight is not heavy, then duration of wash cycle is Short;
9-)If degree of dirtiness Low and weight is not heavy, then duration of wash cycle is Very short

Yukarıdaki tanımların hiçbiri bir kuralı tetiklemez, bağımsız çalışır.







3. Uzman Sistem Algoritması
Pseudocode:
1. Kullanıcıdan 1-10 arası bir giriş değeri alınır
2. Girişleri bulanıklaştırarak ,tüm girişler için üyelik fonksiyonuna göre değerler belirlenir.
3. Gerçek değerlerin çıkarımını yapmak için giriş değerlerinin üyelik fonksiyonları uygulanır.
4. Minimum çıkarım yöntemiyle yeni çıkış üyelik fonksiyonları oluşturulur.Yeni üyelik değerleri orijinal üyelik fonksiyonları ile modifiye edilmiş çıkış üyelik fonksiyonlarını elde etmek için kıyaslanır.
5. Maks. kompozisyon metoduyla yeni üyelik fonksiyonları tekil bir üyelik fonksiyonu çıkarmak üzere birleştirilir.Bu yeni oluşturulmuş üyelik fonksiyonları “Bulanık OR” ile birleştirilir.Her çıkış için muhtemel üyelik değeri belirlenir.
6. “Centroid yöntemi” ile skalar bir değer(yıkama süresi) almak üzere durulama işlemi gerçekleştirilir.

1. Üyelik Fonksiyonlarının tanımlanması:
Kirlilik derecesi(Dd) = {Az kirli, Orta kirli, Çok kirli}=
Ağırlık (Dt) = {Hafif, Orta Ağır, Ağır}=
Yıkama süresi (Wd) = {Çok kısa, kısa, orta, uzun, Çok uzun}=






2.Giriş çıkış üyelik fonksiyonları için fonsiyon tanımlamaları[4]








Şekil 1-Giriş ,ağırlık ve kirlilik derecesi

Şekil 2- Çıkış - Yıkama Süresi




3.Rastgele seçilmiş girişler için uzman sistemin çalışması

• Dd = 8 ve Dt = 4.
• Bulanıklaştırma

• 9 kural için doğruluk değerleri çıkartılır,girişler için çıkarımlar;
Kural 1: Eğer kirlilik derecesi: Çok Kirli ve ağırlık: Ağır,o zaman yıkama süresi uzun
Kural 2:
Kural 3:
Kural 4:
Kural 5:
Kural 6:
Kural 7:
Kural 8:
Kural 9:
• Yeni üyelik değerleri orijinal üyelik fonksiyonları ile kıyaslanıp çıkarım yapılır.










• Durulama centroid yöntemi yardımıyla gerçekleştirilmiştir.
Yıkama süresi= = 34 dakika

Kaynak Kod



clear all;
close all;
clc;

% Giriş
Dirtlevel=input(‘kirlilik derecesi=(1-10)');
Weight=input('agirlik=(1-10)');

% ilk deger atama
Dd = round(Dirtlevel)+1;
Td = round(Weight)+1;
rangeout = 0:1:60;
rangein = 0:1:10;

% uyelik fonk. tanimi
% Giris uyelik matrisi
Min = [1 0.8 0.6 0.4 0.2 0 0 0 0 0 0; 0 0.2 0.4 0.6 0.8 1 0.8 0.6 0.4 0.2 0;...
0 0 0 0 0 0 0.2 0.4 0.6 0.8 1];

% Cikis uyelik matrisi
Mout = zeros(5,61);
for i=1:1:16
x = 0:1:15;
Mout(1,i)=(-x(i)/15)+1;
y = 45:1:60;
Mout(5,i+45)=(y(i)/15)-3;
end
Mout(2,1:16)=Mout(5,46:61);
Mout(2,16:31)=Mout(1,1:16);
Mout(3,16:31)=Mout(5,46:61);
Mout(3,31:46)=Mout(1,1:16);
Mout(4,31:46)=Mout(5,46:61);
Mout(4,46:61)=Mout(1,1:16);

hold on;
plot(rangein,Min(1,:)');
plot(rangein,Min(2,:)','r:');
plot(rangein,Min(3,:)','g--');
hold off;
title('giris kirlilik derecesi uyelik fonksiyonlari'
legend('Az kirli','Orta kirli','Çok kirli');
xlabel('kirlilik derecesi');
figure;
hold on;
plot(rangein,Min(1,:)');
plot(rangein,Min(2,:)','r:');
plot(rangein,Min(3,:)','g--');
hold off;
title('giris agirlik uyelik fonksiyonlari');
legend(' Hafif,'Orta','Agır');
xlabel('Agirlik');
figure;
hold on;
plot(rangeout,Mout(1,:)');
plot(rangeout,Mout(2,:)','r:');
plot(rangeout,Mout(3,:)','g--');
plot(rangeout,Mout(4,:)','cd');
plot(rangeout,Mout(5,:)','m.-');
hold off;
title('yikama süresi cikis uyelik fonksiyonlari');
legend('Cok kisa','kisa','Orta ','Uzun','Çok Uzun');
xlabel('Yikama süresi');

% girisin bulaniklastirilmasi
Taz kirli = Min(1,Td);
Tmed = Min(2,Td);
Thi = Min(3,Td);
Daz kirli = Min(1,Dd);
Dmed = Min(2,Dd);
Dhi = Min(3,Dd);

% Kural tabani olusturulmasi

WTvl = min(Thi,Dhi);
WTl = min(Thi,Dmed);
WTl1 = min(Thi,Daz kirli);
WTl2 = min(Tmed,Dhi);
WTm = min(Tmed,Dmed);
WTm1 = min(Tmed,Daz kirli);
WTm2 = min(Taz kirli,Dhi);
WTs = min(Taz kirli,Dmed);
WTvs = min(Taz kirli,Daz kirli);

% MIN cikarim
Mrule(1,:) = min(Mout(1,:), WTvs);
Mrule(2,:) = min(Mout(2,:), WTs);
Mrule(3,:) = min(Mout(3,:), WTm);
Mrule(4,:) = min(Mout(3,:), WTm1);
Mrule(5,:) = min(Mout(3,:), WTm2);
Mrule(6,:) = min(Mout(4,:), WTl);
Mrule(7,:) = min(Mout(4,:), WTl1);
Mrule(8,:) = min(Mout(4,:), WTl2);
Mrule(9,:) = min(Mout(5,:), WTvl);

figure;
hold on;
plot(rangeout,Mrule');
title('Cikarimdan sonar yeni uyelik fonksiyonlari');
xlabel('Yikama süresi');
hold off;

% MAX cikarim
Mmax = max(Mrule);
figure;
plot(rangeout, Mmax)
title('Final cikis uyelik fonksiyonu');
xlabel('Yikama süresi');

% Durulama Agirlik merkezi yontemi
y=sum(Mmax.*rangeout)/sum(Mmax);

disp('Yikama süresi= ');
wash_time = y

Çıkış örnekleri

Kirlilik derecesi ağırlık Yıkama süresi
2 2 19
2 6 34
8 4 34
9 9 45

Referanslar
[1] – Siler, W; Buckley, J. J., Fuzzy expert systems and fuzzy reasoning, John Wiley & Sons, Inc., ISBN 0-471-38859-9, 2005.

[2] - Kantrowitz, M., Horstkotte, E., Joslyn, J.,"FAQ: Fuzzy Logic and Fuzzy Expert Systems 1/1", http://www.faqs.org/faqs/fuzzy-logic/part1, March 1997

[3] - Looney, C. G., "Fuzzy Rules and Approximate Reasoning.", http://ultima.cse.unr.edu/cs791j/unit2791j.htm, January 2004

[4] - Gehrke, M; Walker, Cl; Walker, E., "A mathematical setting for fuzzy logics. ",
Internat. J. Uncertain. Fuzziness Knowledge-Based Systems 5 (1997), no. 3, 223--238.

[5] – Zhang, W (Aptronix Inc.), "Controller for washing machine", http://www.aptronix.com/fuzzynet/fiusource/wash.htm, July 1992

0 yorum: