Doç. Dr. GÜRAY SONUGÜR

Doç. Dr. Güray SONUGÜR – Öğrenci Bilgi Paylaşım Platformu

2018 Bulanık Mantık ile Kontrol Vize

SORU)

Bulanık Mantık Çıkarsama Sistemi ile bir ana yol üzerindeki yan yolda bulunan yeşil ışığın yanma süresi tahmin edilecektir. Sistemin görsel hali aşağıda verilmiştir.

Sistemin iki girişi ve bir çıkışı olacaktır.

Girişler:

  • Anayoldan gelen araçların ortalama hızları (Hiz) [0-60]km/saat
  • Yan yolda bekleyen araçların oluşturduğu kuyruk uzunluğu (KuyrukUzunlugu)[0-200] metre

Çıkış:

  • Yeşil ışığın süresi (YesilZamani) [0-90]saniye

Kural tablosu aşağıdaki şekilde olacaktır.

  1. If [Hiz is Hizli] then [YesilZamani is Uzun]
  2. If [Hiz is Normal] and [KuyrukUzunlugu is Az] then [YesilZamani is Kısa]
  3. If [Hiz is Normal] and [KuyrukUzunlugu is Normal] then [YesilZamani is Ortalama]
  4. If [Hiz is Normal] and [KuyrukUzunlugu is Cok] then [YesilZamani is Uzun]
  5. If [Hiz is Yavaş] and [KuyrukUzunlugu is Az] then [YesilZamani is Ortalama]
  6. If [Hiz is Yavaş] and [KuyrukUzunlugu is Normal] then [YesilZamani is Ortalama]
  7. If [Hiz is Yavaş] and [KuyrukUzunlugu is Cok] then [YesilZamani is Uzun]

Her giriş ve çıkış 3’er adet üyelik fonksiyonundan oluşacak olup üyelik fonksiyonları üçgen, yamuk ya da gauss olabilecektir.

  • Yukarıdaki sistemi fuzzy araç kutusu ara yüzü kullanarak ya da komut kullanarak kurunuz.
  • Ortaya çıkacak olan 3 boyutlu etkileşim grafiğini yorumlayınız.
  • Rastgele belirlenecek 100 adet giriş değerine karşı oluşacak olan çıkış değerlerini m-dosyası programıyla ya da komut satırından hesaplayınız.
  • Belirlediğiniz giriş ve çıkış değerlerini kullanarak Hiz, KuyrukUzunlugu  ve YesilZamani  değişimlerini aynı grafik üzerinde farklı renklerde çizdiriniz.

YANIT)

Fis Dosyasının açık hali aşağıda verilmiştir. (vize2018.fis)

[System]
Name=’vize2018′
Type=’mamdani’
Version=2.0
NumInputs=2
NumOutputs=1
NumRules=7
AndMethod=’min’
OrMethod=’max’
ImpMethod=’min’
AggMethod=’max’
DefuzzMethod=’centroid’

[Input1]
Name=’Hiz’
Range=[0 60]
NumMFs=3
MF1=’YAVAS’:’trapmf’,[-21.6 -2.4 0 21.6]
MF2=’NORMAL’:’trimf’,[6 30 54]
MF3=’HIZLI’:’trapmf’,[38.4 60 70 81.6]

[Input2]
Name=’KuyrukUzunlugu’
Range=[0 200]
NumMFs=3
MF1=’AZ’:’trapmf’,[-72 -8 0 72]
MF2=’NORMAL’:’trimf’,[20 100 180]
MF3=’COK’:’trapmf’,[128 200 208 272]

[Output1]
Name=’YesilZamani’
Range=[0 90]
NumMFs=3
MF1=’KISA’:’trapmf’,[-32.4 -3.6 0 32.4]
MF2=’ORTALAMA’:’trimf’,[9 45 81]
MF3=’UZUN’:’trapmf’,[57.6 90 93.6 122.4]

[Rules]
3 0, 3 (1) : 1
2 1, 1 (1) : 1
2 2, 2 (1) : 1
2 3, 3 (1) : 1
1 1, 2 (1) : 1
1 2, 2 (1) : 1
1 3, 3 (1) : 1

Kuralların bir görüntüsü:

Surface Grafiğinin görüntüsü:

m-Dosyası programı:

clear;clc;close all;
% Hız değeri için [0-60] aralığında rastgele 100 giriş değeri oluşturuldu.
hiz=round(0+60*rand(100,1));
% kuyrukUzunlugu değeri için [0-200] aralığında rastgele 100 giriş değeri oluşturuldu.
kuyrukUzunlugu=round(0+200*rand(100,1));

f=readfis(‘vize2018.fis’);
girisler=[hiz kuyrukUzunlugu];%İki giriş birleştirildi
cikislar=evalfis(girisler,f);

figure;
plot(girisler(:,1),’r’);
hold on;
plot(girisler(:,2),’g’);
plot(cikislar,’b’);
legend(‘hiz’,’kuyrukUzunlugu’,’yesilZamani’);

%Grafik yorumu:
%Kuyruk uzunluğu 140m ‘yi geçtikten sonra ve hıx 40 km/s’i geçtikten sonra
%yeşil zamanının doğrusal olarak arttığı görülüyor. Grafikte Hız 20-40
%arasında kuyrukUzunlugu 0-15 m arasında yeşilZamanı sıfır ya da sıfıra
%yakındır. Bunun sebebi ise 2 numaralı kuraldır. KuyrukUzunlugu arttıkça
%hızlı bir doğrusal yükselme içine girer.

Rastgele girdi değerleri için grafik:

Yukarıdaki m-dosyası programında değerler rastgele oluşturulmuştur. Sıralı veriler ile giriş ve çıkış arasındaki ilişkiyi biraz daha net görebiliriz. Bunun için programda küçük bir değişiklik yapmalıyız. Programın tamamı aşağıda verilmiştir. (Bu kısım sınavda sorulmamıştır. Fazladan bilgi olarak verilmektedir.)

clear;clc;close all;
% Hız değeri için [0-60] aralığında eşit aralıklı sıralı 100 giriş değeri oluşturuldu.
hiz=linspace(0,60,100)’;
% kuyrukUzunlugu değeri için [0-200] aralığında eşit aralıklı sıralı 100 giriş değeri %oluşturuldu.
kuyrukUzunlugu=linspace(0,200,100)’;

f=readfis(‘vize2018.fis’);
girisler=[hiz kuyrukUzunlugu];%İki giriş birleştirildi
cikislar=evalfis(girisler,f);

figure;
plot(girisler(:,1),’r’);
hold on;
plot(girisler(:,2),’g’);
plot(cikislar,’b’);
legend(‘hiz’,’kuyrukUzunlugu’,’yesilZamani’);

%Grafik yorumu:
%Kuyruk uzunluğu 140m ‘yi geçtikten sonra ve hıx 40 km/s’i geçtikten sonra
%yeşil zamanının doğrusal olarak arttığı görülüyor. Grafikte Hız 20-40
%arasında kuyrukUzunlugu 0-15 m arasında yeşilZamanı sıfır ya da sıfıra
%yakındır. Bunun sebebi ise 2 numaralı kuraldır. KuyrukUzunlugu arttıkça
%hızlı bir doğrusal yükselme içine girer.

Sıralı girdi değerleri için grafik: