çoklu kompresör sisteminin bulanık mantık ile kontrolü
-
Upload
khangminh22 -
Category
Documents
-
view
3 -
download
0
Transcript of çoklu kompresör sisteminin bulanık mantık ile kontrolü
ÇOKLU KOMPRESÖR SİSTEMİNİN BULANIK MANTIK İLE KONTROLÜ
Pamukkale Üniversitesi Fen Bilimleri Enstitüsü
Yüksek Lisans Tezi Elektrik Elektronik Mühendisliği Anabilim Dalı
Serdar KARADENİZ
Danışman: Yrd. Doç. Dr. Ahmet ÖZEK
Haziran 2006 DENİZLİ
i
TEŞEKKÜR
Tezimin hazırlanması sırasında yardımlarından ve yönlendirmelerinden dolayı,
danışman hocam Sayın Yrd. Doç. Dr. Ahmet Özek’ e, her türlü maddi ve manevi
desteği veren Erbakır A.Ş. yönetim kuruluna, Erbakır A.Ş. genel müdürü Sayın Müjdat
Keçeci’ye, Erbakır A.Ş. teknik müdürü Sayın Halil Göker’e, yazım aşamasındaki
yardımlarından ve manevi desteklerinden dolayı eşim Ayşen Karadeniz’e teşekkür
ederim.
ii
ÖZET
ÇOKLU KOMPRESÖR SİSTEMİNİN BULANIK MANTIK İLE KONTROLÜ
Karadeniz, Serdar Yüksek Lisans Tezi, Elektrik-Elektronik Mühendisliği ABD
Tez Yöneticisi: Yrd. Doç. Dr. Ahmet ÖZEK
Temmuz 2006, 71 Sayfa
Bu tezde bulanık kontrolün temeli, gelişimi, bulanık mantık kontrolcüsünün genel yapısı üzerinde durularak, çoklu kompresör sistemlerinde klasik PID kontrol algoritmasından çok farklı olarak bulanık mantık kontrol uygulama tasarım çalışması gerçekleştirilmiştir. Dizayn için gerekli olan bulanık mantık temelli yazılım geliştirme araçlarından FuzzyTECH ve CCS C paket programları öğrenilerek sistem tasarımı gerçekleştirilmiştir. Bu çalışmada 4 adet çoklu kompresör sisteminin bulanık mantık temelinde basınç kontrolünün nasıl yapılacağı oluşturulan bir simülator sistemi üzerinde gösterildi.
Anahtar Kelimeler: Bulanık mantık, Bulanık mantık kontrolcüsü, bulanıklaştırma, durulama, kural tabanı, FuzzyTECH, CCS C, Çoklu kompresör sistemi
iii
ABSTRACT
FUZZY LOGIC CONTROLLER FOR MULTIPLE COMPRESSOR SYSTEM
Karadeniz, Serdar M.Sc.Thesis in Electric-Electronic Engineering Faculty
Supervisor: Asst. Prof. Dr. Ahmet ÖZEK
July 2006, 71 Pages
In this thesis, the fundamentals of fuzzy logic control, structure, practices and design of fuzzy logic controller are explained. Moreover, FuzzyTECH and CCS C, these are the software tools to develop fuzzy logic base projects explained. Using these tools how the multiple compressors systems pressure controlled in the fuzzy logic base also explained.
Keywords: Fuzzy logic, Fuzzy logic controller, Fuzzifier, Defuzzifier, Rule base ,FuzzyTECH, CCS C, Multiple compressor system
iv
İÇİNDEKİLER
Sayfa İçindekiler ………………………………………………...…………………………….iv Şekiller Dizini …………………..………………………………………………………v Tablolar Dizini ……...………………………………………………………………....vii Simgeler ve Kısaltmalar ………………….………………………………………...…viii 1. GİRİŞ …………………………………………………………………….………….1
1.1. Erbakır A.Ş. Kompresör Sistemi ………………………………….…...………5 2. BULANIK MANTIK KONTROLCÜSÜ ………………………………..……....….7 2.1. Bulanık Küme Teorisi …………………………………………….……………7 2.1.1. Temel kavramlar ………………………………………………..….……7
2.1.2. Bulanık sayılar …………………………………………………………14 2.1.3. Standart bulanık küme işlemleri ……………………………………….16
2.2. Bulanık Kontrol Sistemleri …………………………………………………...18 2.2.1. Uzman sistemler …………………………………………...…………...19
2.2.2. Bulanık mantık kontrolcülerin genel yapısı ……………………………21 2.2.2.1. Bulanık kontrol basamakları …….……………...……………………23
2.2.2.1.1. Bulanıklaştırma ünitesi …..…………………………………………23 2.2.2.1.1.1. Üyelik fonksiyonlarının oluşturulması …………...…………...….24
2.2.2.1.2. Bilgi tabanı …………….…………………………………………...25 2.2.2.1.2.1. Veri tabanı …………….…….…………………………....………26 2.2.2.1.2.2. Kural tabanı .…………….…………………………………….…26 2.2.2.1.3. Çıkarım ünitesi …………..…………………………………………29 2.2.2.1.4. Durulama ünitesi ………………………………….………...………31
2.2.2.1.4.1. Bir durulama örneği …………………………….….………….…34 3. BULANIK MANTIK TEMELLİ YAZILIM GELİŞTİRME VE ARAÇLARI ……38
3.1. Fuzzytech Paket Programı ……………………………………...…………….38 3.2. CCS C Paket Pogramı …………………………………………………………48 3.3. Fuzzytech – CCS C Uyumu …………………………………………...………48 4. BULANIK MANTIK DENETİMLİ KOMPRESÖR SİSTEMİ ……………………50
4.1. Simülasyon Donanımı ………………………………...………………………53 4.1.1. Frekans konvertörü ………………………………….…………………54 4.1.2. PIC 16F877 mikrokontroller …….……………….……………………54 4.2. Sistemin Yapısı …………………………………………….…………………57 4.3. Sistemin Çalışma Prensibi ……………………………………………………57 5. SONUÇ ……………………………………………………….………….…………60 Kaynaklar ………………………………………………………………………………61 Ekler ……………………………………………………………………………………62 Özgeçmiş ………………………………………………………………………………71
v
ŞEKİLLER DİZİNİ
Sayfa Şekil 2.1 [1-3] aralığının karakteristik fonksiyonu …………………………………..…8 Şekil 2.2 1’ e yaklaşan sayıların üyelik fonksiyonu ..………………………………..…8 Şekil 2.3 Bir sabit diskin dönme hızını belirten µ bulanık kümesi ………………….…9 Şekil 2.4 Genç, orta yaşlı ve yaşlı kavramlarını temsil eden üyelik fonksiyonları
A2’nin kesikli yaklaşık değerler gösterilmiştir (D2) ………..……………...11 Şekil 2.5 Subnormal, konveks bulanık küme …………………………………………13 Şekil 2.6 Normal konveks olmayan bulanık küme ……………………………………13 Şekil 2.7 α-kesitleri ile tanımlanmış normal konveks bulanık küme …………………13 Şekil 2.8 Üçgen bulanık sayı (triangular fuzzy number) ………………………………15 Şekil 2.9 Yamuk bulanık sayı …………………………………………………………15 Şekil 2.10 A, B’ nin alt-kümesidir ……………………………………………………..16 Şekil 2.11 A ve B üçgen bulanık sayılarının kesişimi ……………………….………...17 Şekil 2.12 A ve B üçgen bulanık sayılarının kesişimi ……………………..………..…17 Şekil 2.13 A bulanık kümesinin tümleyeni ……………………………………………18 Şekil 2.14 Bulanık mantık kontrolcüsünün blok diyagramı …………………………...22 Şekil 2.15 Algılayıcı okuyucu x0 ile üyelik fonksiyonu µ(x)’in µ(x0)’ a gelmesi ……..24 Şekil 2.16 Çeşitli üyelik fonksiyonları a)Monotonik b)Üçgen c)Yamuk d)Çan eğrisi..25 Şekil 2.17 Minimum ilişki yöntemi ile kuralların değerlendirilmesi ……………….…30 Şekil 2.18 Üyelik fonksiyonlarının max noktaları ile durulama işlemi ………….….…31 Şekil 2.19 Merkez yöntemi ile berraklaştırma işlemi ……………………………….…32 Şekil 2.20 Ağırlıklı ortalama yöntemi ile durulama işlemi ……………………………32 Şekil 2.21 Max noktaların ortalaması yöntemiyle durulama işlemi ……………...……33 Şekil 2.22 Geniş alan merkezi metodu ile berraklaştırma işlemi ………...……………33 Şekil 2.23 İlk veya son yükselti metodu ile durulama işlemi …………………….……34 Şekil 2.24 Örnekteki COA ve MOM durulama yöntemlerinin birleşmiş son hali ….…37 Şekil 3.1 FuzzyTECH ilk açılış görüntüsü …………………………………………….39 Şekil 3.2 Fuzzy Design Wizard çalıştırılınca ……………….…………………………39 Şekil 3.3 Fuzzy Design Wizard’ ın ilk adımı …………...……………………………..40 Şekil 3.4 Fuzzy Design Wizard’ ın ikinci adımı ………………………………………41 Şekil 3.5 Değişken skalası ………………………………….………………………….42 Şekil 3.6 Fuzzy Design Wizard’ ın üçüncü adımı ……………………………………..42 Şekil 3.7 Fuzzy Design Wizard’ ın dördüncü adımı …………………………………..43 Şekil 3.8 Fuzzy Design Wizard’ ın beşinci adımı …………….……………………….43 Şekil 3.9 Fuzzy Design Wizard’ ın altıncı adımı ……….….…………………………..44 Şekil 3.10 Fuzzy Design Wizard’ ın yedinci adımı …….………………..…………….44 Şekil 3.11 Dilsel değişkenlerin tanım aralığı …………………………………………..45 Şekil 3.12 Kural tablosu ……………………………………………………………….46 Şekil 3.13 Değişken tipi ………………………..………………………………………46 Şekil 3.14 Debug işlemi ……………….……………………………………………….47 Şekil 3.15 C tabanlı kod üretimi ……….………………………………………………47 Şekil 4.1 Değişken devirli kompresörün akış şeması ……………………………….…50 Şekil 4.2 Boş-yük kontrollü kompresörlerde güç kapasite ilişkisi ………………….…51
vi
Şekil 4.3 Boş-yük kontrollü kompresörlerde çalışma basınç aralığı ……………..……51 Şekil 4.4 Değişken devirli kompresörlerde güç kapasite, çalışma basınç aralığı
ilişkisi ……………………………………………………………………...…51 Şekil 4.5 Değişken devirli ve konvansiyonel kompresörlerin karşılaştırılması …….…52 Şekil 4.6 Konvansiyonel kompresörler ile değişken devirli kompresörlerin birlikte
kullanımı …………………………………………………………………..…52 Şekil 4.7 Sistemin fiziksel yapısı ………………………………………………………57 Şekil 4.8 Kontrol bloğu ………………...………………………………………...……58
vii
TABLOLAR DİZİNİ
Sayfa Tablo 2.1 Orta yaşlı bulanık kümesini temsil eden A2 kümesinin üyelik
fonksiyonlarının sayısal değerleri …………………………………………11 Tablo 4.1 Sistem kontrolcüsünün hava ihtiyacına bağlı olarak ürettiği çıkışlar …...…58
viii
SİMGELER VE KISALTMALAR
Simge Açıklama
∩ Kesişim
∪ Birleşim
_ Tümleyen
∈ Elemanıdır
∉ Elemanı değildir
∑ Kartezyen toplam
µ Üyelik fonksiyonu
u* Durulanmış değer
Wi Üyelik ağırlığı
' Değil
o Bileşim operatörü
≤ Küçük eşittir
≥ Büyük eşittir
∧ Ve
∨ Veya
Kısaltmalar Açıklama
RAM Rastgele Erişimli Bellek (Random Access Memory)
ROM Yalnızca Okunan Bellek (Read Only Memory)
I/O Giriş-Çıkış (Input / Output)
FLC Bulanık Mantık Kontrolcüsü
Min Minimum
Max Maksimum
1
1. GİRİŞ
Günümüzün gelişen teknolojileri artık geleneksel elektronik denetim biçimlerinden
yeteri kadar verim alamamaktadır. Gün geçtikçe ortaya çıkan daha hassas birimler ve
kaçınılmaz olan enerjiden tasarruf sağlama zorunluluğu bilim adamlarını bu yönde
araştırmalar yapmaya itmiştir. Gitgide mükemmele yakınlaşma isteği ve doğanın belki
de bir gün aynısının yapay yollarla ortaya çıkarılmaya çalışılması Yapay Zeka
(Artificial Intelligence - AI), Yapay Sinir Ağları (Neural Networks), çok değerli Mantık
(Multivalued Logic) ve bunlarla birlikte Bulanık Mantığın (Fuzzy Logic) ortaya
çıkarılmasına neden olmuştur.
Bulanık mantık her gün kullandığımız ve davranışlarımızı yorumladığımız yapıya
ulaşmamızı sağlayan matematiksel bir disiplindir. Temelini doğru ve yanlış değerlerin
belirlendiği Bulanık Küme Kuramı (Fuzzy Set Theory) oluşturur. Burada yine
geleneksel mantıkta olduğu gibi (1) ve (0) değerleri vardır. Ancak bulanık mantık
yalnızca bu değerlerle yetinmeyip bunların ara değerlerini de kullanarak; örneğin bir
uzaklığın yalnızca yakın yada uzak olduğunu belirtmekle kalmayıp ne kadar yakın yada
ne kadar uzak olduğunu da söyler.
Bulanık mantık elektrikli ev aletlerinden oto elektroniğine, gündelik kullandığımız
iş makinelerinden üretim mühendisliğine, endüstriyel teknolojilerden otomasyona kadar
aklımıza gelebilecek her yerde kendisine uygulama alanı bulabilir (Günal 1997b).
Bulanık küme teoremi (fuzzy sets theory), hayattaki kesin olmayan, örneğin; “sıcak”
ve “soğuk” kesin ifadelerinin arasında kalan “az soğuk” veya “soğuğa yakın” şeklindeki
belirsizlikleri de matematiksel olarak ifade etmeye yönelik bir teoremdir. 1965’te
bulunan bu teorem, ancak 1970’lerden sonra kontrol teknolojisinde uygulama alanı
bulmuştur. Teoremin sahibi Prof. Lütfi A. Zadeh’ tir. Kendisi aslen matematikçi
olmasına rağmen, kontrol alanında da çalışmalar yapmıştır.
İlk olarak bulanık küme teorisini denetim için uygulayan Prof. Lütfi A. Zadeh,
karmaşık işlevlerin bulanık denetim tasarımı için temel yaklaşımını da formüle etti.
2
Kontrol alanında karmaşık problemlere yol açan ve matematiksel modeli
çıkartılamayan denetimlere daha genel yaklaşılabilecek ve insanın düşünüş şekline
yakın çözümler aranmıştır. Çünkü, aslında insan, günlük hayatta mantıksal hesaplarla
birçok şeyin kontrolünü yapmaktadır. Örneğin öndeki arabanın yavaşladığını gören bir
sürücü, mantıksal bir kararla arabasını yavaşlatmaktadır. Burada “eğer arabalar
arasındaki mesafeler azalıyorsa, hızın düşürülmesi gerekir.” şeklinde mantıksal bir
yaklaşım vardır. Bu model, kontrole aktarılmaya çalışılmıştır. Sayısal kontrolde, giriş
parametrelerine ait değişim aralığı bölgelere ayrılarak bu bölge bilgisine göre sistem
çıkışı değerlendirilir. Tanımlanan çalışma aralıkları sıklaştırıldıkça hassasiyet
artmaktadır. Bulanık mantık matematiğindeki belirsizlik ifadelerinin modellenmesi,
kontrol alanında da örnek alınarak, tanımlanmış çalışma aralıkları arasındaki birçok
belirsiz ara değer aktif hale getirilmeye çalışılmıştır. Böylece sabit kontrol sistemleri
kullanmadan geniş çalışma aralıklarına cevap verebilen kontrol şekli oluşmuştur.
Endüstriyel bir sürecin denetimi için tasarım yapılırken her şeyden önce o sürecin bir
dinamik modeline gerek vardır. Ancak pratikte bu her zaman mümkün olmayabilir.
Süreç içindeki olaylar matematiksel modellemeye elverecek ölçüde açıkça
bilinmeyebilir, veya bir model kurulabilse bile bu modelin parametreleri zamanla
değişiklikler gösterebilir. Bazı durumlarda ise doğru bir model kurulsa bile bunun
kontrolcü tasarımında kullanılması karmaşık problemlere yol açabilir. Bu gibi
sorunlarla karşılaşıldığı zaman genellikle bir uzman kişinin bilgi ve deneyimlerinden
yararlanma yoluna gidilebilir. Uzman operatör, dilsel niteleyiciler olarak
tanımlanabilecek, uygun, az uygun, yüksek, biraz yüksek, fazla, çok fazla gibi günlük
yaşantımızda sıkça kullandığımız kelimeler doğrultusunda esnek bir denetim
mekanizması geliştirir. İşte bulanık denetim de bu tür mantıksal ilişkiler üzerine
kurulmuştur (Kaynak 1992, Kıray 1997).
Bugün tam kesinlik isteyen ve kararlı kontrollerde hala PID gibi klasik kontrol
şekilleri kullanılmaktadır. Fakat bulanık mantığın kullanıldığı denetimler hem daha
basit ve hem de çok hassasiyet gerektirmeyen birçok uygulama için yeterli olmaktadır.
Özellikle giriş parametreleri çok ve sürekli değişen sistemlerde çokça tercih
edilmektedir.
PID, modern kontrol teorisinin ortaya çıkışından bu yana en çok kullanılan kontrol
algoritmalarının başında gelmiştir. Adını, proportional-integral-derivative kelimelerinin
3
baş harflerinden almıştır. Türkçe’si oransal-integral-türev’ dir. Parametre ayarı iyi
yapılmış PID kontrolör, rejim halindeki bir işlevin, hassas kontrolünde oldukça
başarılıdır. Ancak bu algoritma, endüstriyel uygulamalarda çok sık karşılaşılan, ayar
noktasının (set point) değişimi, çalışma şartlarının değişimi, sistemin durdurulup tekrar
çalıştırılması ve dış etkilerin olması gibi durumlarda, prosesin değişik kriterlere göre
optimumda kontrol edilmesine engel oluşturabilmektedir (Gerişkovan 1996).
Günümüzde çok geniş bir bilim adamı kadrosu bulanık mantıkla ilgilenmektedir.
1970'lerden itibaren sürekli gelişme gösteren bulanık mantık, son çalışmalarda, PID ve
yapay sinir ağları ile beraber kullanılmaya başlanmıştır ve çok daha geniş bir alana
girme imkanı bulmuştur. Başka bir çalışmada, bulanık mantığın geçirdiği evreler şu
şekilde anlatılmıştır;
Bulanık küme kuramı, ilk kez 1965 yılında Berkeley’ de Californiya Üniversitesi
öğretim üyelerinden aslen Azerbaycanlı olan Prof. Lütfi A Zadeh tarafından ortaya
atılmış ve hızla gelişerek, modern denetim alanında bir çok bilim adamının ilgisini
çeken araştırmaya açık yeni bir dal olmuştur. Örneğin; Londra Üniversitesinden Prof.
Dr. Mamdani kuramı bir buhar türbinin hızının denetlenmesine uygulamayı düşünmüş
ve bu amaçla, bir insanın davranışlarını mimikleyen; “Eğer türbin hızı çok hızlı
artıyorsa ve basınç da çok düşükse, buhar vanasını biraz aç” türünden kurallardan
oluşan bir uzman sistem geliştirmiştir. Prof Dr. Mamdani bulanık mantık temelli bu tür
bir uzman sistemle türbin hızının ve performansının çok başarılı bir şekilde
denetlenebileceğini göstermiştir.
Bulanık mantık kuramının ilk önemli endüstriyel uygulaması çimento sanayisinde
olmuştur. Bu sanayide değirmen içerisindeki sıcaklık ve oksijen oranı ürün kalitesi
açısından çok önemlidir. Kısıtlı ve hassas olmayan, ısı ve karbondioksit oranı gibi
bilgilerle iyi bir çalışma düzeni elde edilebilmesi bir sanat olup operatörlerin bu konuda
yeterli bir uzmanlık kazanabilmeleri için yıllar geçmesi gerekir. Fakat kişiler ve
uzmanlık düzeyleri arasında kaçınılmaz farklılıklar olacağından, üretilen çimento da
vardiyalardan vardiyalara değişecek, tutarlı kalitede çimento üretimi çok zor olacaktır.
İşte bir Danimarka firması bu nedenlerden dolayı lineer bir model üzerine kurulu
geleneksel denetleyici yerine bir bulanık mantık kontrolcüsü (fuzzy logic controller -
FLC) kullanmayı düşünmüş ve çok başarılı sonuçlar veren bir uzman sistem
geliştirmiştir. Bu veya benzeri sistemler bugün bile Japonya ve Amerika'da dahil olmak
4
üzere bir çok ülkede kullanılmaktadır.
Kronolojik sıra içerisinde bundan sonraki en önemli aşama Japonya’ da 1987 yılında
görülmüştür. Hitachi firması, ilk olarak 1987 yılında ulaştırma bakanlığına başvurmuş
ve Sedai Metro sisteminde çalışan trenlerin otomatik olarak denetimi için bulanık
mantık kullanımını önermiştir. Bakanlık öneriye olumlu baktığını belirtmiş, fakat
bulanık mantık denetleyicinin kullanılmakta olan sisteme göre belirgin üstünlükleri
olacağı konusunda kanıt istemiştir. Hitachi firması, dokuz yıl içerisinde 300.000
simülasyon çalışması ve 3.000 insansız operasyon gerçekleştirmiş ve sonunda 1986
yılının sonlarına doğru ulaştırma bakanlığından kullanım iznini almıştır. Geliştirilen
sistemde, daha önce tren operatörü tarafından bir PID temelli denetleyici aracılığıyla
yapılan ve yolcuların sarsıntılı bir yolculuk geçirmelerine neden olabilen hızlanma ve
yavaşlama gibi işlemler otomatik olarak yapılmakta ve tren operatörünün yapması
gereken işler, kapıları kapatmak ve başlatma düğmesine basmak gibi bir kaç işlemle
sınırlı kalmaktadır. Böylece yolcuların, demirlere tutunma gereksinimi duymadan rahat
bir yolculuk yapabilmeleri sağlanmış, daha önce kullanılan sisteme göre trenin istenilen
konumda durması üç kat iyileşmiş ve kullanılan enerji %10 azalmıştır. Sağlanan bu
başarının Hitachi firmasına getirdiği mükafat, Tokyo Metrosu’nda da böyle bir sistemin
kullanılması için yapılan anlaşma olmuştur.
Yukarıda açıklanan başarılı uygulamalardan sonra bulanık denetim konusundaki
çalışmalar, yeni bir ivme kazanmış ve endüstriyel uygulama alanları hızla artmıştır.
Çalışmaların uluslararası alanda koordinasyonu amacı ile Japonya'da 1989 yılında
LLFE (Laboratory for International Fuzzy Engineering) adlı bir laboratuar kurulmuştur.
Bu laboratuarlarda yapılan araştırma çalışmalarına, aralarında Hitachi, Toshiba, Omron,
Matsushita gibi ünlü Japon firmalarının yanı sıra BM, NCR ve Thomson gibi Japonya
dışı firmaların da bulunduğu toplam 51 firma katılmakta olup 6 yıllık bütçesi 70 milyon
dolardır.
Bulanık mantık denetleyiciler konusundaki kuramsal çalışmaların hala sürüyor
olmasına rağmen, artık bu konu endüstride kendisine önemli bir yer edinmiş
durumdadır. Uygulama alanları arasında çeşitli beyaz eşya, tren, asansör, trafik kontrolü
ve otomobil sanayisi sayılabilir. Bugün Japonya’ da bulanık denetim kullanan beyaz
eşyalar ve elektronik aletler, örneğin; fotoğraf ve çamaşır makineleri, güncel yaşamın
birer parçasıdırlar. Tüm dünyada ise, bulanık mantık içeren ürünlerin satış hacmi 1990
5
yılında 1,5 milyar dolara ulaşmıştır.
Günümüzde, 30’ dan fazla ülkede bulanık mantık konusunda araştırmalar yapılmakta
olup, bunlar arasında ABD, Japonya, Çin ve Batı Avrupa ülkeleri başta gelmektedir.
Çin’ de bu konu ile uğraşan bilim adamı sayısı on binin üzerinde olup, hemen arkasında
Japonya yer almaktadır. Uygulama açısından ise, Japonya belirgin bir şekilde önde
gözükmektedir. Bu durum, belki de uzak doğu insanının düşünüş şeklinin bulanık
mantığa daha uygun oluşundan kaynaklanmaktadır. Üzerinde “bulanık” sözcüğü yer
alan bir fotoğraf makinesi, bir batı ülkesinin toplumu tarafından tepki ile karşılanabilir.
Japonya’da ise, ev kadınları bile bu sözcükle haşır neşir olmuşlar ve bulanık mantık
kullanan her türlü ev aletini özellikle arar duruma gelmişlerdir. Bir başka neden de
ABD’ de yapılan çalışmaların genellikle askeri amaçlara ve uzay uygulamalarına
yönelik olması ve bu nedenle projelerin ve sonuçlarının herkese açık literatürde
yayınlanmaması olabilir. NASA bünyesinde bulanık mantık kontrol konusunda çalışan
çok kuvvetli bir gurup vardır. Bu gurup uzay mekiği için, pilotların yükünü azaltmak,
sistemin güvenirliliğini artırmak ve yakıt tüketimini azaltmak amacı ile bulanık mantık
temelli sistemler geliştirmiş ve böylece konuşlandırma ve konuşlandırılan pozisyonda
tutma sırasında harcanan yakıt üç misli yaklaşma sırasında tüketilen yakıt 1.5 misli
azaltılmıştır (Kaynak 1992).
1.1. Erbakır A.Ş. Kompresör Sistemi
Erbakır A.Ş. bünyesinde bulunan dört adet kompresör farklı hatlara hava
basmaktadır. Bu kompresörler konvansiyonel olarak adlandırılan boş-yük mantığında
çalışmaktadır. Başka bir deyişle kompresör motoru belirlenen bir alt hava basınç
seviyesinde devreye girmekte (yükte durumu), yine belirlenen bir üst hava basınç
seviyesinde devreden çıkmaktadır (boşta durumu). Kompresörler boşta çalışırken dahi
enerji tüketimi devam etmektedir. Ayrıca hattaki sabit bir basınç seviyesi de proses
açısından önemlidir. Basınç, Erbakır’da ürün kalitesini doğrudan etkileyen bir
parametredir. Dolayısıyla daha kaliteli ürün üretmek, enerji tasarrufu sağlamak
amacıyla bu kompresörlerin bir araya getirilmesi planlamıştır. Bu amaç doğrultusunda
dört adet kompresörün hava bastığı hatlar ring sistemiyle birleştirilmektedir. Ayrıca bu
kompresörlerden bazıları değişken devirli hale getirilip tek merkezden kontrolü
sağlanacaktır. Bu anlamda tek merkez görevini icra edecek ünitenin çalışma mantığının
6
bulanık mantık olması kararlaştırılmıştır. Bu proje üniversite sanayi işbirliği
çerçevesinde ele alınmıştır.
Mekanik hatların birleştirilme süreci devam etmekte olduğu için bulanık mantık
temelli merkez görevini icra edecek ünite bir simülasyon sistemi kurularak denenmiş ve
başarılı sonuçlar elde edilmiştir.
7
2. BULANIK KÜME KONTROLCÜSÜ
2.1. Bulanık Küme Teorisi
2.1.1. Temel kavramlar
İki değerli mantıkla iki mutlak sonucu “0” ve “1” olarak, sonsuz değerli mantıkta
sonuçları [0.0, 1.0] aralığında tanımlayabiliriz. Bu değerlere “üyelik derecesi” denir.
“0” mutlak “yanlışlığı”, “1” ise mutlak “doğruluğu” gösterir. Bu üyelik derecesi daha
önce bahsettiğimiz belirsizliği tanımlamaya çalışan bir fonksiyonla ölçülebilir. Bu
fonksiyon bir A Bulunak Kümesinin elamanlarını [0,1] aralığındaki reel bir değere
dönüştürür. Aşağıdaki şekilde gösterilir.
µA(x)∈ [0,1]
Tanım 1: X boş olmayan bir küme olsun. X’ deki bir bulanık A kümesi üyelik
fonksiyonu
A: X � [0,1]
ile özelleştirilmiştir. ∀ x∈X için; x’ in üyelik derecesi A(x) olarak yorumlanmıştır (µA
olarak da gösterilebilir). Çalışılan X evreni kesin ve sınırlı olduğu zaman A kümesi
sembolik olarak aşağıdaki gibi gösterilir (Klir ve Yuan 1995).
A = { µA(x1) + µA(x2)+.......}= { ∑ µA(xi)} i= (1,..) x1 x2 i xi
X evreni sürekli ve sınırsız ise A kümesi
A: { ∫ µA(x)} x
ile gösterilir. Bu gösterimdeki cebirsel semboller cebirsel anlamlarıyla kullanılmazlar.
Örneğin “+” toplam anlamında değil teorik olarak birleşme anlamındadır. Konuya
aşağıdaki örneklerle yaklaşalım.
8
Örnek 1.
Z= { n∈ N tek basamaklı sayılar}
A= { n∈N }
∏A(n) = { 1, 1-3 arası } 0, diğer haller
1
1 3 5 7 9
Şekil 2.1 [1-3] aralığının karakteristik fonksiyonu
Şekil 2.1 ‘ deki karakteristik fonksiyon 1 ile 3 arasındaki tek sayılarda 1 iken, diğer
aralıklarda sıfırdır.
Örnek 2.
Çoğu zaman örnek 1’den farklı olarak sınırları kesin olarak belirleyemediğimiz
durumlar ortaya çıkabilir. “1’e yaklaşan” reel sayıların bulanık kümesinin üyelik
fonksiyonunu şekil 2.2’ deki gibi tanımlanabilir.
1
Şekil 2.2 1’ e yaklaşan sayıların üyelik fonksiyonu
Yukarıdaki önerme için uygun fonksiyonlardan biri çan eğrisidir (Gaussian eğrisi).
µa,m (x) = e –a(x-m)² a>0, m ∈R . Bu örnekte m=1 dir.
Eğer özel olarak “1’ yaklaşan doğal sayılar” için bir küme tanımlamak istersek,
bunu aşağıdaki şekilde ifade edebiliriz.
-2 -1 0 1 2 3 4
9
A= { 0.0 ⁄ -2 + 0.3 ⁄ -1 + 0.6 ⁄ 0 + 1.0 ⁄ 1 + 0.6 ⁄ 2 + 0.3 ⁄ 3 + 0.0 ⁄ 4 }
Reel sayıların kümesi sürekli iken doğal sayıların kümesinin kesikli olduğuna dikkat
ediniz. Bu örnekte çan eğrisi keyfi olarak seçilmiştir. Örneğe uygun başka bir
fonksiyonda seçilebilirdi. Fonksiyon şu koşulları sağlamalıdır.
• fonksiyon x=1’ye göre simetrik olmalıdır.
• A(1)=1 ve diğer tüm x∈X için A(x)< 1
• A(x) 1’den 0’a |x-1| artan farkı ile monoton olarak azalmalıdır.
Açıkça görülmektedir ki bulanık kümelerin kullanışlılığı büyük oranda bizim, farklı
kavramlara uygun üyelik derecesi fonksiyonlarını oluşturabilme becerimize
dayanmaktadır. Bu beceri, bulanık kümeler teorisinin ilk zamanlarında zayıf olsa da,
günümüzde birçok alanda gelişmiştir. En sık kullanılan fonksiyonlar kolaylık açısından
“üçgen” ve “yamuktur”.
Örnek 3.
x bir sabit disk’in bir dakikadaki dönme hızı olsun. x hiçbir zaman çok hassas bir
şekilde ölçülemeyeceği için bu durumda şu önermeyi yapmak daha gerçekçi olur:
“Dönme hızı nerdeyse tam olarak x ‘e eşittir.”
Eğer sabit diskin işlevi hakkında istatistiksel veriler mevcutsa, olasılık teorisi
yaklaşımları ile bilinen hata hesaplamaları kullanılarak yukarıdaki önerme
modellenmelidir. Eğer böyle bir veri yoksa yada yeterince hassas değilse bulanık
kümelere geçilebilir. Çünkü bulanık kümeler genellikle uzmanlar tarafından sezgisel
biçimde belirlenebilir.
µ 1
a b x c d dönme hızı
Şekil 2.3 Bir sabit diskin dönme hızını belirten µ bulanık kümesi
10
Uzmanın şekil 2.3’teki µ bulanık kümesini seçtiğini varsayalım. Bu durumda dönme
hızının a’dan küçük ve d’den büyük olamayacağı ve b ile c arasında herhangi bir değer
almasının nerdeyse kesin olacağı düşünülmüştür. Bu nedenle [a,d] aralığı kümenin
desteği( support) ve [b,c] aralığıda özü( core) olarak adlandırılır.
Tanım 2 (destek): A X’in bir bulanık kümesi olsun. A’nın desteği, supp(A), X’in
elamanları sıfır olmayan bir alt kümesidir (Klir ve Yuan 1995).
Supp(A) : {x∈X, A(x) > 0}
Tanım 3 (normal bulanık küme): Eğer herhangi bir x∈X için A(x)=1 oluyorsa A
bulanık kümesine normal denir. Aksi halde subnormal’dir (Klir ve Yuan 1995).
Tanım 4 (bulanık kümenin yüksekliği): A bulanık kümesinin en büyük üyelik
derecesine o kümenin yüksekliği denir (Klir ve Yuan 1995).
h(A)= sup A (x) x∈X
Tanım 5 (α-kesiti): X de tanımlı bir A bulanık kümesi ve α∈[0,1] verilsin. α-kesiti,
αA, ve güçlü α-kesit, α+A, aşağıdaki gibi tanımlanmış keskin kümelerdir (Klir ve Yuan
1995).
αA = { x | A(x) ≥ α}
α+A = { x | A(x) > α}
Tanım 5’te ifade edilen α-kesitleri aşağıdaki örnekte incelenmiştir.
Örnek 4
Genç, orta yaşlı ve yaşlı insan kavramını temsil eden [0,80] aralığında tanımlı üç
bulanık küme göz önüne alalım. Sırasıyla A1, A2 ve A3.
1 x≤20
A1(x) = (35-x)/15 20<x≤ 35
0 x≥35
0 x≤20 veya x≥ 60
A2(x) = (x-20)/15 20<x< 35
(60-x)/15 45<x<60
1 35≤x≤45
11
1 x≤20
A3(x) = (35-x)/15 20<x≤ 35
0 x≥35
A2 fonksiyonunun mümkün bir kesikli yaklaşık değerleri (discrete approximation),
D2, şekil 2.4’ de ve sayısal değerleri tablo 2.1’de gözükmektedir. Bu yaklaşık değerler
bulanık kümelerinin bilgisayar gösterimlerinde sıkça kullanılır.
Bulanık kümelerin en önemli kavramlarından biri α-kesit ve varyantı güçlü α-kesit’tir.
genç A1 orta yaşlı A2 yaşlı A3
1
10 20 30 40 50 60 70 80
Şekil 2.4 Genç, orta yaşlı ve yaşlı kavramlarını temsil eden üyelik fonksiyonları. A2’nin
kesikli yaklaşık değerler gösterilmiştir. (D2)
Tablo 2.1 Orta yaşlı bulanık kümesini temsil eden A2 kümesinin üyelik fonksiyonlarının sayısal değerleri
0A1=0A2=
0A3= [0,80]= X
αA1=[0.35 − 15α] , αA2=[15α + 20, 60 – 15α] , αA3= [15α + 45, 80] tüm α∈(0,1]
için ;
α+A1=(0.35 − 15α) , α+A2=(15α + 20, 60 – 15α) , α+A3= (15α + 45, 80) tüm α∈[0,1)
x D2(x)
x∉{22, 24,......58} 0.0 x∈ {22,58} 0.13 x∈ {24,56} 0.27 x∈ {26,54} 0.40 x∈ {28,52} 0.53 x∈ {30,50} 0.67 x∈ {32,48} 0.80 x∈ {34,46} 0.93 x∈ {36, 38, ... 44} 1.00
12
için ;
1+A1=1+A2=
1+A3= ∅
Her α∈[0,1] için oluşan α-kesitlerinin kümesine A’nın seviye kümesi denir.
“Λ” , X’de tanımlı bulanık A kümesinin seviye kümesini göstermek üzere;
Λ (A1) = Λ (A2) = Λ (A3) = [0,1] ve
Λ (D2) = {0, 0.13, 0.27, 0.4, 0.53, 0.67, 0.8, 0.93, 1}
α-kesitlerinin ve güçlü α-kesitlerinin tanımlarından aşağıdaki önermelerin doğruluğu
açıkça görülmektedir:
α1, α2 ∈ [0,1] ve α1 < α2 olmak üzere
α1A ⊇ α2A ve α1+A ⊇ α2+A
α1A ∩ α2A = α1A ve α1+A ∩ α2+A= α1+A
α1A ∪ α2A = α1A ve α1+A ∪ α2+A= α1+A
ℜn ‘de tanımlanmış bulanık kümelerin önemli diğer bir unsuru da konvekslikleridir.
Bir bulanık kümenin konveks olması için her α∈[0,1] için α-kesitlerinin konveks
olması gerekir. Şekil 2.5 ‘de subnormal bir konveks bulanık küme gösterilmiştir. Şekil
2.6’de normal konveks olmayan bir bulanık küme gösterilmiştir. Şekil 2.7’de tüm α-
kesitleri ile (α>0) ℜ2 ’de tanımlı bir bulanık küme göstermektedir ve tüm α-kesitleri
konveks olduğu için kendisi de konvekstir (Klir ve Yuan 1995).
NOT: Bulanık kümeler için konveksliğin tanımının üyelik fonksiyonlarının konveks
olması anlamına gelmediğine dikkat ediniz. Aslında çoğu zaman kullanılan üyelik
fonksiyonları ne konvekstir ne de konkavdır. α-kesitleri birer keskin kümedir ve keskin
kümelerde konvekslik şu şekilde tanımlanır: “ ℜn ’de tanımlı bir kümenin herhangi iki
elamanını birleştiren doğru parçasının her bir noktası kümenin içinde kalıyorsa bu
kümeye konveks denir”
13
0,5
α2
Şekil 2.5 Subnormal, konveks bulanık küme
1
α
x
αA
Şekil 2.6 Normal konveks olmayan bulanık küme
y
α=0 x
Şekil 2.7 α-kesitleri ile tanımlanmış normal konveks bulanık küme
α=.3 α α
-2 -1 0
α1
2 3 4
14
Teorem 1: x1, x2 ∈ ℜ; λ ∈ [0,1] olmak üzere ℜ üzerinde tanımlı bir A bulanık
kümesinin konveks olması için gerek ve yeter koşul (Klir ve Yuan 1995).
A(λx1 + (1– λ)x2) ≥ min[A(x1), A(x1)]
2.2.3. Bulanık sayılar
Çoğu durumda insanlar sayısal bilgileri hassas bir şekilde tanımlayamazlar. Örneğin
“yaklaşık 55”, “0’a yakın”, “6000’den büyük” gibi ifadeler kullanırlar. Bunlar bulanık
sayılara birer örnektir. Bulanık alt- kümeler teorisini kullanarak bu bulanık sayıları reel
sayılar kümesinin bir bulanık alt-kümesi olarak tanımlayabiliriz. Bulanık bir A sayısı en
azından aşağıdaki 3 koşulu sağlamalıdır:
(i) A normal bir bulanık küme olmalıdır
(ii) A konveks bir bulanık küme olmalıdır
(iii) A’nın desteği, 0+A, sınırlı olmalıdır.
Eğer bulanık sayı aşağıdaki koşulları sağlıyorsa quazi bulanık sayısı olarak adlandırılır.
Lim A(t)= 0 Lim A(t)= 0 t�∞ t�–∞
Tanım 6 (üçgen bulanık sayı): Bir A bulanık kümesinin merkezi a, sağ ve sol açıklığı
sırasıyla γ>0 ve β>0 ve üyelik fonksiyonu aşağıdaki gibi veriliyorsa A kümesine üçgen
bulanık sayı denir (Klir ve Yuan 1995). Üçgen bulanık sayı şekil 2.8’ de gösterilmiştir.
1–(a–t) / γ eğer a–γ≤ t< a
A (t) = 1–(t–a) / β eğer a≤ t< a+β
0 diğer haller
A = (a,γ,β) notasyonu ile gösterilir.
αA = [ a – (1–γ)α, a + (1–γ)β ] ; tüm γ∈[0,1]
Önermesinin doğruluğu da kolayca görülebilir.
15
1
a-α a a+β
Şekil 2.8 Üçgen bulanık sayı (triangular fuzzy number)
a merkezli üçgen bulanık sayı şu şekilde yorumlanabilir;
“x yaklaşık olarak a’ya eşittir.”
Tanım 7 (yamuk bulanık sayı): Bir A bulanık kümesinin tolerans aralığı [a,b], sağ ve
sol açıklığı sırasıyla γ>0 ve β>0 ve üyelik fonksiyonu aşağıdaki gibi veriliyorsa A
kümesine yamuk bulanık sayı denir (Klir ve Yuan 1995). Yamuk bulanık sayı şekil 2.9’
da gösterilmiştir.
1–(a–t) / γ eğer a–γ≤ t< a
A (t) = 1 a≤t≤b
1–(t–b) / β eğer b≤ t< b+β
0 diğer haller
A = (a,b,γ,β) notasyonu ile gösterilir.
αA = [ a – (1–γ)α, a + (1–γ)β ] ; tüm γ∈[0,1]
Önermesinin doğruluğu da kolayca görülebilir.
1
a-γ a b b+β
Şekil 2.9 Yamuk bulanık sayı
16
Yamuk bir bulanık sayı şu şekilde yorumlanabilir:
“x yaklaşık olarak [a,b] aralığındadır .”
Tanım 8 (altküme): A ve B X evreninde tanımlanmış iki bulanık küme olsun.
Aşağıdaki koşul sağlanıyorsa A, B’nin alt-kümesidir denir (Klir ve Yuan 1995). Bu
tanım şekil 2.10’ da grafiksel olarak gösterilmiştir.
A(t) ≤ B(t) tüm t∈X için
B
Şekil 2.10 A, B’ nin alt-kümesidir.
Örnek 5: A ve B X evreninde tanımlı iki bulanık küme olsun.
X = { 1, 5, 10, 15, 20}
A= {0.0/1 + 0.2/5 + 0.4/10 + 1/15 + 0.6/20
B = {0.1/1 + 0.3/5 + 0.5/10+ 1/15 + 0.7/20
A ⊂ B olduğu görülmektedir.
2.1.3. Standart bulanık küme işlemleri
Boş olmayan bir X evreninde A ve B bulanık kümeleri tanımlanmış olsun. A ve B
kümeleri için birleşme, arakesit ve tümleyen teorik küme işlemleri sırasıyla aşağıdaki
gibi verilmiştir.
(i) (A∪B)(t) = max[A(t), B(t)] = A(t) ∨ B(t)
(ii) (A∩B)(t) = min[A(t), B(t)] = A(t) ∧ B(t)
(iii) ¬A(t) = 1– A(t)
Örnek 6:
X = { -2, -1, 0, 1, 2, 3, 4}
A
17
A = {0.6/-2 + 0.3/-1 + 0.6/0 + 1.0/1 + 0.6/2 + 0.3/3 + 0.0/4}
B = {0.1/-2 + 0.3/-1 + 0.9/0 + 1.0/1 + 0.9/2 + 0.3/3 + 0.2/4}
A∪B = 0.6/-2 + 0.3/-1 + 0.9/0 + 1.0/1 + 0.9/2 + 0.3/3 + 0.2/4 }
Şekil 2.11’ de A ve B üçgen bulanık sayılarının kesişimi gösterilmiştir.
Şekil 2.11 A ve B üçgen bulanık sayılarının kesişimi
Örnek 7:
X = { -2, -1, 0, 1, 2, 3, 4}
A = {0.6/-2 + 0.3/-1 + 0.6/0 + 1.0/1 + 0.6/2 + 0.3/3 + 0.0/4}
B = {0.1/-2 + 0.3/-1 + 0.9/0 + 1.0/1 + 0.9/2 + 0.3/3 + 0.2/4}
A ∩ B = 0.1/-2 + 0.3/-1 + 0.6/0 + 1.0/1 + 0.6/2 + 0.3/3 + 0.0/4 }
Şekil 2.12’ de A ve B üçgen bulanık sayılarının kesişimi gösterilmiştir.
Şekil 2.12 A ve B üçgen bulanık sayılarının kesişimi
Örnek 8:
X = { -2, -1, 0, 1, 2, 3, 4}
A = {0.6/-2 + 0.3/-1 + 0.6/0 + 1.0/1 + 0.6/2 + 0.3/3 + 0.0/4}
B = {0.1/-2 + 0.3/-1 + 0.9/0 + 1.0/1 + 0.9/2 + 0.3/3 + 0.2/4}
¬A = {0.4/-2 + 0.7/-1 + 0.4/0 + 0.0/1 + 0.4/2 + 0.7/3 + 1.0/4}
¬B = {0.9-2 + 0.7/-1 + 0.1/0 + 0.0/1 + 0.1/2 + 0.7/3 + 0.8/4}
Şekil 2.13’ de A bulanık kümesinin tümleyeni gösterilmiştir.
18
¬A
A
Şekil 2.13 A bulanık kümesinin tümleyeni
Keskin Kümeler için bilinen tüm işlemler aşağıdaki iki durum haricinde bulanık
kümeler içinde geçerlidir:
1. A ∪ ¬A = X ve 2. A ∩ ¬A = ∅
Bu iki durum bulanık kümeler için geçerli değildir.
Durum 1 . A ∪ ¬A ≠ X . tüm t∈X için A(t) = 1/2 olsun.
(¬A∨A)(t) = max (¬A, A) = max (1–1/2, 1/2) = 1/2
1/2 ≠ 1
Durum 2 . A ∩ ¬A ≠ ∅ . tüm t∈X için A(t) = 1/2 olsun.
(¬A∧A)(t) = min (¬A, A) = min (1–1/2, 1/2) = 1/2
1/2 ≠ 0
Buna karşın De Morgan kuralları bulanık mantık içinde geçerlidir.
¬(A∧B) = ¬A∨¬B ¬(A∨B) = ¬A∧¬B
2.3. Bulanık Kontrol Sistemleri
Denetim sistemleri, fiziksel niceliklerden oluşurlar ve bir başka fiziksel sistemi
değiştirmek, denetlemek yada uyarlamak amacı ile kurulurlar.
Denetim sistemleri tipik olarak ikiye ayrılarak incelenebilir. Bunlardan birincisi açık-
devre denetim sistemleri (open-loop control systems) dir. Bu sistemlerde fiziksel
ortamdan elde edilen çıkış bilgileri kullanılmaz. Örnek olarak bir tost makinesi
verilebilir. Makinenin işlevi yalnızca ayarlanan sıcaklıkta yiyeceğin ısıtılmasıdır ve siz
el ile istemi durdurabilir veya devam ettirebilirsiniz.
İkinci olarak da kapalı-devre denetim sistemleri (closed-loop control systems) yada
geri beslemeli denetim sistemleri (feed-back control systems) bulunmaktadır. Bu
sistemlerde ise fiziksel ortamdan elde edilen çıkış bilgileri kullanılır. Örneğin odamızda
19
bulunan iklimlendirme cihazı gibi. Cihaz odamızı, belirlenen sıcaklıkta tutabilmek için
sürekli olarak oda sıcaklığını ölçer ve buna göre ortamı otomatik olarak soğutur yada
ısıtır.
Fiziksel bir ortamın denetlenebilmesi için gerekli ilk koşul bu ortama ait
değişkenlerin ölçülebilmesidir. Denetim işaretlerinin elde edildiği bu ölçümler,
algılayıcılar (sensors) tarafından gerçekleştirilirler. Kapalı-devre denetim sistemlerinde,
giriş işaretleri, sistemin cevap işaretleriyle birlikte sistemi yönlendirirler.
Ayrıca bu tür sistemlerde çevrim içinde bir karşılaştırıcıya veya bir denetleyiciye
gereksinim vardır. Denetim sistemleri bazen de işleyiş biçimlerine göre iki sınıfa
ayrılabilmektedir. Bunlardan birincisi, ortamdan aldığı bilgilere göre kendini istenen
biçime uydurmadır. Buna düzenleyici sistemler (regulatory) denir. Örneğin,
iklimlendirme cihazı gibi. Diğeri ise, izleyici denetimdir (tracking control). Burada
denetim, zamanın bir işlevi olarak adım adım yapılmaktadır. Buna örnek olarak hava
yastıklı geminin rampaya yanaşması ve yere inmesi verilebilir. Denetim sistemlerinde
asıl sorun, sistem çıkış bilgileri, cevapları yada fiziksel ortamdaki hata işaretleridir
(error signals). Çünkü kapalı-devre denetim sistemlerinde bu bilgiler sistemin
işleyişinde çok büyük rol oynarlar ve sistem bu bilgilere göre yönlendirilir.
2.2.1. Uzman sistemler
Uygulama yapılacak fiziksel ortamın, daha önce hangi giriş bilgilerine karşılık ne
cevap verdiğini bir dizi deneme ile belirleyen yada uzun süre bir uzmanın, sistemi nasıl
yönlendirdiğini izleyip buna göre oluşturulan sistemler uzman sistemler (expert systems)
olarak adlandırılmaktadır.
Özellikle bulanık mantık uygulamaları uzman sistem tanımına çok uygundur. Çünkü,
komut olarak dilsel niteleyiciler kullanan bulanık mantık, yalnız bununla kalmaz bir
uzmanın en iyi şekilde nasıl kullanması gerekiyorsa sistemi o şekilde yönlendirir.
Burada sistemin çalışma biçimi sanki bir insan tarafından gerçekleniyormuş gibi
olmaktadır.
Merloni Elettrodomestici firmasının çıkardığı Ariston ürün serisinde yer alan bir
çamaşır makinesinde, merkezi denetim ve bulanık mantık sistemi kullanılmıştır. Bu
tasarım gerçekten de bir kullanıcı için en iyi biçimde gerçekleştirilmiş, 1500’ den fazla
20
birbirinden farklı çamaşır yıkama programı çevrimi sisteme yerleştirilmiştir.
Kullanıcının yapacağı tek şey çamaşırların naziklik derecesini belirlemektir. Bundan
sonrası tamamıyla otomatik olarak makine tarafından yapılır.
Ariston çamaşır makinelerinde National’ in COP888EG, 8 - Bit mikrodenetleyicisi
ve yine National firmasına ait “NeuFuz” yazılımı kullanılmıştır. Sistemin en önemli
özelliği tasarımcının yalnızca giriş ve çıkış bilgilerini belirlemesiyle tasarımın kolayca
gerçekleştirilebilir olmasıdır. Sistem, kendi kendine bir dizi tekrarlar yaparak gerekli
olan bulanık mantık kurallarını ve üyelik işlevlerini üretebilmektedir.
Daha gelişmiş bir sistemle, AEG çamaşır makinesinde kullanılan bulanık mantık,
NeuroFuzzy yöntemiyle, kendi kendine çamaşır makinesindeki suyu
yorumlayabilmekte ve buna göre davranarak hem güç (% 20 oranında) hem de zaman
birikimi sağlayarak en iyi performansı gösterebilmektedir. Burada kullanılan bulanık
program fuzzy TECH Explorer ve ürün ise SGS-Thomson’ a ait 8-bit bir
mikrodenetleyici olan ST6’ dır.
Neff firması ise bulanık mantığı mikrodalga fırınlarında kullanmaktadır. Fırın
sıcaklığı bulanık mantıkla denetlenmekte ve en düşük ısıda işlem gerçeklenmektedir.
Mikrodalga fırında geleneksel ızgara, sıcak hava ile pişirme, fırında kızartma, sıcak
hava ile ızgara gibi seçeneklerin de bulunduğu sekiz değişik pişirme seçeneği
bulunmaktadır. Bütün bu seçeneklerde bulanık mantık sayesinde zamandan %80 ve
enerjiden ise %50 tasarruf sağlanmıştır. Programlanabilir pişirme süresi üç saate kadar
ayarlanabilen üç ayrı güç seviyesi bulunan idealinizdeki pişirmeyi gerçekleştirebilecek
pek çok pişirme seviyesini içeren bu mikrodalga 1995’ li yıllarda İngiltere’ de satışa
sunulmuştur.
Yine, 1996 yılı başlarında bulanık mantıkla gerçekleştirilmiş bir fırın tasarımı
bulunmaktadır. Bulanık mantık kuralları Matlab Yazılımı ile gerçekleştirilmiştir.
Bulanık mantık düzeneği yeni geliştirilen Direnç Sıcaklık Elemanı (RTD - Resistance
Temperature Device) algılayıcıları sayesinde tencerelerdeki değişimi
denetleyebilmektedir.
1993 yılında, Cambridge Mass. danışmanlık firması ile Gaz Araştırma Enstitüsü
(Gas Research lnstitute) arasında yapılan bir anlaşmayla başlatılan çalışmalar
sonucunda ortaya çıkarılan bu fırın gerçek zamanda denetlenmekte ve sıcaklık ayarını
21
tencere genişliğini ve ısı miktarını kendiliğinden belirleyebilmektedir. Otomatik olarak
algılanan ısı değişimleri değerlendirilerek tencerelerdeki yemeklerin yanma sorunu
kesin olarak önlenmiştir. Fırında kullanıcı için bir gösterge, alev denetimi için valfler ve
elektronik ateşleme sistemi bulunmaktadır. Ayrıca otomatik alev ayarı sayesinde
güvenli bir kullanım olanağı tüketiciye sunulmuştur.
Bunların dışında pek çok beyaz eşya uygulamalarının yanı sıra faks cihazlarında,
güvenlik sistemlerinde, nesne belirleme ve netlik sistemlerinde, ses analiz sistemlerinde
ve aklınıza gelebilecek pek çok konuda, bulanık mantık uygulamaları vardır. Özellikle
görüntülü ürünlerde üç önemli uygulama alanı bulunmaktadır. Bunlardan birincisi 35
mm’ lik fotoğraf makinelerinin otomatik odaklama sistemleri, kameraların görüntü
sabitleme denetim sistemleri ve üçüncüsü ise televizyonlardır (Günal 1997a).
2.3.2. Bulanık mantık kontrolcülerin genel yapısı
Bulanık mantık, endüstriyel süreçleri denetlerken kesin ve tam sayısal kurallardan
ziyade dilsel kuralları içine alır. Bulanık mantık kontrolcüleri, klasik ve modern kontrol
teorisinde olduğu gibi kesin ve tam matematik modellere ihtiyaç duymaz. Çoğu
sistemde benzer model ölçümleri belirtmek oldukça zordur. Denetlemesi zor olan
karmaşık süreçlerde (çimento ocakları, çelik fırınları, çöp işleme fabrikaları gibi),
bulanık mantık denetimini kullanmak zorunlu hale gelmektedir.
Bulanık mantık kontrolcüleriyle daha az bir çabayla daha fazla iş yapılabilmektedir.
Deneyimler etkin bir şekilde kullanılarak fiziksel bir sistemin kontrolü, aşağıdaki dört
unsur dikkate alınarak yapılmaktadır.
1- Mikrodenetleyicilerle çıkarım işlemcisini kademeli (cascade) bağlayıp beraber
çalıştırmak,
2- Yazılım kontrolcüsü kullanmak,
3- Bilgisayar tabanlı uygulamalarda ise; kural tabanı, veri tabanı, bulandırıcı, çıkarım
motoru ve berraklaştırıcı olarak yazılım kullanmak ve paralel iletişimle kontrol
sistemini tasarlamak,
4- İçinde RAM, EPROM, I/O birimlerinin yanı sıra bulandırıcı, çıkarım motoru ve
durulatıcı bölümlerinin de bulunduğu tüm devre şeklinde bulanık işlemciler kullanarak
fiziksel sistemlerin kontrolünü sağlamak mümkün olacaktır (Doğueri 1996).
22
Bulanık mantık kontrolcülerin dayandığı temel nokta; uzman bir sistem
operatörünün bilgi deneyim sezgi ve kontrol stratejisini, kontrolcü tasarımında bilgi
tabanı olarak oluşturmaktadır. Kontrol işlemleri bilgi ve deneyime dayanan sözel
kurallarla gerçekleştirilir. Örneğin bir uzman, sistem için gerekli olan kontrol
davranışlarını “küçük”, “hızlı”, “yavaş” gibi sözel terimlerle tanımlarsa, “EĞER-
ÖYLEYSE ” (IF-THEN) komutlarıyla oluşturulacak kurallarda sözel terimler
kullanılarak elde edilecektir.
Şekil 2.14’ de bir bulanık mantık kontrolcünün iç yapısı görülmektedir. Bu kontrolcü,
genel olarak dört ana kısımdan oluşur.
Bulanıklaştırma ünitesi (Fuzzifier): Bu bölüm giriş değişkenlerini ölçer, onlar
üzerinde bir ölçek değişikliği yaprak bulanık kümelere dönüştürür. Yani onlara bir
etiket vererek, dilsel bir ölçek değişikliği yaparak bulanık mantık kümelerine dönüştürür.
Çıkarım motoru (Inference engine): Bu ünite,kurallar bulanık mantık kurallarını
uygulayarak bulanık çıkışlar verir. Burada insanın düşünüş şeklinin benzetimi
yapılmaya çalışılmıştır.
Veri tabanı (Data Base): Çıkarım motoru, kural tabanında kullanılan bulanık
kümeleri bu bölümden alır.
Kural tabanı (Rule Base): Kontrol amaçlarına uygun dilsel denetim kuralları buradan
bulunur ve çıkarım motoruna verilir.
Durulama ünitesi (Defuzzifier): Çıkarım motorunun bulanık küme üzerinde yapmış
olduğu ölçek değişikliklerini, sayısal değerler dönüştürür (Atacak 1998).
Bulanıklaştırıcı Çıkarım motoru Durulayıcı Bulanık değer Bulanık değer Sayısal değer Şekil 2.14 Bulanık mantık kontrolcüsünün blok diyagramı
Veri Kural
23
2.3.2.1. Bulanık kontrol basamakları
2.2.2.1.1 Bulanıklaştırma ünitesi
Fiziksel giriş bilgilerinin, dilsel niteleyicilerle ifade edebileceğimiz bulanık mantık
bilgileri şekline çevirme işlemine bulanıklaştırma (fuzzification) adı verilir. Ancak bu
bilgilerin tamamının mutlaka kesin bilgiler olması söz konusu değildir. Bulanıklaştırma
işlemi önemli ölçüde kesin olmayan bilgiyi de içine alır ve bulanıklaştırır.
Bulanıklaştırma sonucu elde edilen değişkenlere dilsel değişkenler (linguistic variables)
denir ve işlemle birlikte tüm giriş değişkenlerinin değerleri, üyelik derecesi olarak
buraya atanır.
Eğer algılayıcı kesin bir değer olursa, o zaman şekil 2.15 (a)’ da görüldüğü gibi
bulanıklaştırma aşamasında dilsel etiketin üyelik fonksiyonuyla algılayıcı ölçme
karşılaştırılması gerektirir. Eğer algılayıcı okuyucusunda gürültü var ise, üçgenin tepesi,
algılayıcı ölçülerinin veri kümesinin değeri anlamında baş vurulan üçgen üyelik
fonksiyonu kullanılarak modellenmiş olabilir ve bilgi tabanı standart sapma
fonksiyonuna başvurur. Bu örnek, bulanıklaştırma üyelik fonksiyonunun etiketinin
kesişme noktasının araştırılıp öğrenmesine başvurur ve şekil 2.15 (b)’ de görüldüğü
gibi anlamlandırılmış veri için dağıtır. Bununla beraber geniş çapta kullanılan
bulanıklaştırılma metodu algılayıcı okuyucunun kesin olduğu örnektir.
Bulanıklaştırma işlemi göreceli olarak bu kadar kolay olmasına karşın, daha önce de
değinildiği gibi uzman sistem kalıplarından dolayı bu işlemlerin yapılması büyük
ölçüde deneyime dayanmaktadır. Operatörün sistemde çalışırken gösterdiği davranışlar,
sistemin matematiksel modelinden daha önemlidir. Dolayısıyla bulanıklaştırma
aşamasına gelinebilmesi için gerekli süre bazen çok uzun olabilir. Bununla birlikte
kesin olmayan bilgileri kullanılabilmesi, sürecin matematiksel bir modeline gereksinim
duyulmaması ve uygulamaya çabucak geçilebilmesi, bütün bunlardan sonra da yüksek
derecede verim alınabilmesi bulanık mantığın önemini açıkça ortaya koymaktadır.
(Yager ve Zadeh 1992).
24
µ(x) µ(x) algılayıcı ölçme 1.0 1.0 µ(x0) etiket (label) µ(x0) x0 x0 ( a ) ( b )
Şekil 2.15 Algılayıcı okuyucu x0 ile üyelik fonksiyonu µ(x)’in µ(x0)’ a gelmesi
a) Keskin algılayıcı okuyucu b) Bulanık algılayıcı okuyucu
2.2.2.1.1.1. Üyelik fonksiyonlarının oluşturulması
Bulanık mantıkta, dilsel ifadelerle anılan bölgelerin sınırlarını belirtmede ve giriş
bilgilerine ait üyelik ağırlıklarının tespit edilmesinde kullanılmak üzere uygun üyelik
fonksiyonlarının belirlenmesi gerekir (Kıray 1997).
Bulanıklaştırma stratejisinin bazılarında bulanıklaştırılmış ifade tek bir değeri verir.
Bulanık sayıda ise sistemden alınan bilgiler bulanık sayılarla ifade edilebilir (yaklaşık 7
gibi).Fonksiyon tasarımcıya bağlıdır. Karma bulanık random sayı bulanıklaştırma
stratejisinde ise, süreçten alınan bilgilerin bir kısmı istatistiksel bilgiler olabilir. Bu
durumda bir kontrol istenirse bu strateji seçilir. Sistemin performansının iyi olması için
sistem giriş-çıkış değişkenlerinin en uygun şekilde tanımlanması işlemleri işte bu
bulanıklaştırma stratejileri kullanılarak yapılır.
Üyelik fonksiyonunun tespiti, çok önemli bir basamaktır ve sistemin hassasiyetini
belirler. Üyelik fonksiyonlarını oluşturmada özel bir kural yoktur. Fakat öncelikle, dilsel
olarak ifade edilecek olan bölgelerin, sayıları tespit edilmelidir. Çünkü bu, sistemin en
kaba haliyle hassasiyetini belirler. Örneğin bir koşul kümesindeki dilsel niteleyiciler
{küçük, büyük, orta }= {small, medium, large} bazı alanlarda yeterli olmayabilirler. O
zaman {çok küçük, küçük, orta, büyük ve çok büyük }={very small, medium, large and
very large} beş koşul ünitesi kullanılması gerekebilir (Yager ve Zadeh 1992). Daha
sonraki hassasiyet ise, üyelik fonksiyonlarının şekilleriyle arttırılır. En kullanışlı üyelik
25
fonksiyonu elde edilinceye kadar birçok denemeler yapılır. Örneğin bu bölümün giriş
kısmında da bahsedildiği gibi Japonya Sedai metrosunun bulanık kontrolü için 300.000
benzetim çalışması ve 3.000 insansız uygulama gerçekleştirilmiştir. Üyelik fonksiyonu
tespiti, uzman kişinin deney ve tecrübesi sonucu çok çeşitli şekillerde olabilir.
Üyelik fonksiyonları sistem parametrelerini tanımlar. Üyelik fonksiyonlarının
sayısına ve şekline ait hiçbir kısıtlama yoktur. Tamamıyla tasarımcının istek ve
tecrübesine bağlıdır. Bu zamana kadar yapılmış olan çalışmalarda en çok üçgen, yamuk,
çan eğrisi şeklinde üyelik fonksiyonları kullanıldığı görülmektedir. Yine de bu
fonksiyon1ar, kontrolü yapılan sisteme göre çok değişiklik gösterebilir (Baba 1995).
Şekil 2.16’ de çeşitli üyelik fonksiyonları gösterilmiştir.
µ(x) µ(x)
x x ( a )
( b ) µ(x) µ(x) x x ( c ) ( d )
Şekil 2.16 Çeşitli üyelik fonksiyonları
a) Monotonik b) Üçgen c)Yamuk d) Çan eğrisi
2.2.2.1.2. Bilgi tabanı
Bulanık mantık uygulamalarında bilgi tabanı şeklinde kendi başına bir ünite yoktur,
fakat teorik anlatımda, anlama kolaylığı sağlamak ve şematik ifade edebilme açılarından
veri tabanı ve kural tabanı, ikisi beraber bilgi tabanı olarak gösterilir. Çıkarım ünitesi
karar verme işlemlerinde, bilgi tabanına gidip, veri tabanından üyelik fonksiyonlarıyla
ilgili bilgileri, kural tabanından ise değişik giriş değerleri için tespit edilmiş olan kontrol
çıkışları bilgisini alır. Bu bakımdan bilgi tabanı ve çıkarım ünitesi sürekli ilişki
halindedir.
26
2.2.2.1.2.1. Veri tabanı
Üyelik fonksiyonlarının tespit edilmesi için yapılan ön çalışmalar ile, son hali belli
olmuş üyelik fonksiyonlarının sınır ve eğim bilgilerini içeren veri tabanını ayrı
düşünmek gerekmektedir. Bir bulanık kontrol sisteminde, Basic, Pascal, C gibi üst
düzey dilleri kullanan bir bilgisayar veya Assembly dilini kullanan bir mikroişlemci
kullanılmış olabilir. Her iki şekilde de üyelik fonksiyonu bilgilerinin, program olarak
oluşturulması gerekmektedir. Bir veya birden fazla üyelik fonksiyonunun sınırlandırmış
olduğu bir alan, dilsel olarak ifade edilen bir bölgeyi oluşturur (Şekil 2.16). Bu
bölgelerin, bir program dilinde oluşturulabilmesi için, her bir bölgeyi sınırlandıran
üyelik fonksiyonların başlangıç, bitiş noktaları ve fonksiyon denklemlerinin bilinmesi
gerekmektedir.
Teorik çalışmalarda üyelik fonksiyonları grafik olarak izah edildiği ve gözle takip
edilebildiği için veri tabanı grafiklerden ibaret kalmakta ve bazı çalışmalarda yüzeysel
olarak anlatılmaktadır. Fakat uygulamalı bir bulanık kontrol çalışmasında, üyelik
fonksiyonlarıyla oluşturulan bölge bilgilerinin, çalışmanın yapıldığı programlama
dilinde oluşturulması, programlamanın önemli bir kısmını oluşturmaktadır.
Veri tabanı oluştururken evrensel kümenin ayrıklaştırılması yani analog bilgilerin
dijitale çevrilmesi ve normalizasyonu ve giriş-çıkış aralıklarının bulanık olarak
bölümlendirilmesine dikkat edilmelidir. Normalizasyon sisteme esneklik kazandırmak
için yapılır.
2.2.2.1.2.2. Kural tabanı
Kural tabanında, sistemin bilgi girişlerinin alabileceği çeşitli değerlere göre mantıki
olarak uygunluk gösteren sistem çıkış değerleri, kural satırları haline getirilerek, kural
tabanı oluşturulur. Örneğin bir klima kontrolünde “içerisi az sıcak ise az soğut, çok
sıcak ise çok soğut” şeklinde bir ilişki kurulabilir. Kural tabanında değerlendirilecek
giriş bilgileri birden fazla olabileceği gibi, kontrol çıkışı da birden fazla olabilir.
Aslında “sıcak”, “soğuk” gibi dilsel ifadeler sistemin girişinde ve çıkışındaki değer
uzayını aralıklara ayırmaktadır. Kural tabanı bu şekliyle klasik sayısal kontrolleri
andırmaktadır, fakat bölge bilgisinin yanında girişlere ait üyelik ağırlıklarının da dikkate
alınıyor olması bulanık kontrolü, uzman sistemlerden ve diğer kontrollerden
27
ayırmaktadır.
Basit olarak bir sistem için kural tabanı geliştirdiğimizde, sistem çıkışını
etkileyebilecek ölçülebilen giriş değerleri tespit edilmelidir. Giriş bilgisine ait değer
uzayı, üyelik fonksiyonları ile bölgelere ayrılarak, dilsel ifadelerle isimlendirilir ve aynı
zamanda her giriş değeri için bir üyelik ağırlığı tespit edilmiş olur. Böylece her giriş
değerinin, ait olduğu bir bölgesi ve bir üyelik ağırlığı olur. Kural tabanı, her birisi bir
bölgeyi temsil eden dilsel ifadelerle düzenlenir. Örneğin “1. giriş sıcak, 2. giriş normal
ise, çıkış yüksektir.” gibi bir kural satırında görüldüğü gibi, kural tabanını oluşturan
bilgiler, tamamen dilsel ifadelerdir. Fakat her kural satırındaki, tespit edilmiş olan çıkış
değeri, birim fonksiyonlarla oluşturulmuş ise, sayısal değerlerle de ifade edilebilir. Bu
durumda oluşturulacak kural satırları “1. giriş sıcak. 2. giriş normal ise, çıkış l.5’tir.”
şeklinde bir kuralın benzeri olabilir. Kural satırları birbirlerine “veya” bağlacı ile
bağlanır ve her kural satırında girişler ve çıkışlar arasında “ve” bağlacı kullanılır.
Kural tabanında, giriş değerleri ve kontrol çıkışı değerlerinin birbirleri arasında “ve”
ifadesi, ayrı davranışları ifade eden kurak kümeleri arasında “veya” ifadesi kullanılır.
Kontrol tabanını oluşturan kurallar aşağıdaki özelliklere sahiptir.
1- Her kural bağımsız bilgi parçasını içerir.
2- Yeni kurallar diğer kurallardan bağımsız olarak kural tabanına eklenebilir.
3- Eski kurallar diğer kurallardan bağımsız olarak değiştirilebilir.
4- Kontrol sisteminin kararlarını ve çözümlerini içerir (Baba 1995).
Bir bulanık kontrolcünün gerçekleşmesinde, denetlenecek sistemin bir matematiksel
modelinden daha çok, o sistemi çalıştıracak operatörün sistem davranışı konusunda
sahip olduğu bilgiler daha önemlidir. Tasarım sırasında genellikle bu tür bilgilerden
yararlanılır. Böyle bir yaklaşım, uzun yıllar boyunca kazanılan deneyimlerin kontrolcü
içerisine, yorumlanmış halde kolaylıkla yerleştirilebilmesine olanak sağlar. Bu yararın
yanında getirdiği sakınca, kontrolcü tasarımında belirli bir otomasyon elde
edilememesidir. Buna rağmen, bulanık kontrolcünün en önemli kısmını oluşturan kural
tabanının oluşturulması için kullanılabilecek çeşitli yaklaşımlar şunlardır:
a- Kontrol kuralları doğrudan doğruya uzman kişinin bilgi ve deneyiminden
yararlanılarak elde edilir.
28
b- Operatörünün kontrol davranışları gözlenir ve kontrolcü bu davranışlardan bulanık
model oluşturur.
c- Kontrol kuralları sistemin karakteristiklerinin bulanık şekilde ifade edilmiş
modellerden elde edilebilir.
d- Kendi kendine organize etme/öğrenme (Yager ve Zadeh 1992).
Yukarıdaki metotlar arasındaki birinci metot geniş çapta çokça kullanılır. Uzman
operatörün bilgi modellemesinde bulanık kontrol kurallarının formu, “eğer hata küçükse
ve hatadaki değişim küçük ise o halde kuvvet küçüktür” şeklindeki çalışmalar Turksen
ve Jiang (1993), Lembesis ve Tanscheit’ de (1993) kullanılmıştır. Bu metot uzman
operatörlerin sezgilerine (heuristic) yada bilgi tabanı anlatırken etkindir. Bunlar
yukarıdaki formun kurallarının şartlarında yöntemin kontrol edilmesinde uzman
operatörlerce kullanılırlar. Mamdani ve diğerleri tarafından kullanılmış sıradan bulanık
kontrolcüleri kuralı geliştirilerek, kuralın sonucunun giriş parametrelerinin fonksiyonu
olduğu yeni bir form geliştirilmiştir. Örneğin aşağıdaki ilişkiyi yazarsak,
Eğer X = A1 ve Y = B1 ise Z = f1(X,Y)
olur. Z çıkışı X ve Y değerlerini alan fonksiyondur (Yüksel 1997).
Yukarıdaki ikinci metot operatörün kontrol hareketlerinin hemen modellenmesidir.
Operatörün görüşlerini almak yerine operatörler tarafından kontrol hareketlerinin tipleri
modellenir. Takagi ve Sugeno (1985), Yager ve Zadeh (1992) park edilen bir arabadaki
sürücünün kontrol hareketlerinin modellenmesinde bu metodu kullanmışlardır.
Üçüncü metot, sistemin olası aşamalarını tamamlayan işlemlerin kullanılmasıyla
konfigüre edilen sistemin yaklaşık modellenmesi yani bulanık modellenmesiyle ilgilidir.
Bu metotta bir model geliştirilir ve bulanık kontrolcü kontrol teorisindeki geleneksel
yaklaşıma benzer bir yaklaşımla bulanık modelin kontrolünü yapar. Bu nedenle yapı
teşhis yöntemlerine ihtiyaç vardır. Örneğin, Sugeno ’ nun aşağıdaki kural formunu
inceleyelim.
Eğer x1 = Ai 1 , x2 = Ai
2 , ........., ise y = pi 0 + pi
1 x1 + pi 2 x2 +......+ pi
m xm
i =1,....,n kadardır ve sonuç, m giriş değişkenlerinin bir doğrusal fonksiyonudur.
Sonuncu metotta ise Mamdani ve öğrencilerinin kendi kendini denetleyen
kontrolcüleri geliştiren araştırmasına başvurur. Bu metottaki ana tema kuralların
29
gelişimidir. Bu kurallar kontrolcünün performansını daha iyi olması için zaman
içerisinde düzeltilebilir. Bu metot bir bulanık mantık kontrolcüsünün bilgi tabanının
tasarımında yapay sinir ağlarının çalışmasına çok benzer.Bulanık kontrol kurallarını
üretmek için kullanılan yaklaşımlar ise;
Tecrübeye dayalı metot
Deterministik metot
Tecrübeye dayalı metotta, bulanık kontrol kurallarını üretmek için uzman bilgisini ve
kontrol edilen sürecin davranışının analizi kullanılmaktadır. Deterministik metotta ise,
bulanık modelleme ile kontrol kurallarının yapısı ve parametreleri belirlenmektedir.
2.2.2.1.3. Çıkarım ünitesi
Bu ünite, bulanıklaştırma biriminden gelen bulanık değerleri, kural tabanındaki
kurallar üzerinde uygulayarak bulanık sonuçlar üretmektedir. İlk olarak, her bir giriş
değerinin ne oranda hangi üyelik kümesine ait olduğu saptanmaktadır. Bu değerler kural
tablosuna yerleştirilerek uygun çıkışlar elde edilmektedir. Bulanık mantık kuralları
kural içerisindeki bileştiricilerin anlamlarının yorumlanması ile hesaplanmaktadır. Bu
kurallar çıkarım işlemi süresince genelleştirilmiş modus ponens yöntemi kullanmaktadır.
X ve Y evrenlerinde girişi A, çıkışı B ile temsil eden iki bulanık küme tanımlansın. Bu
iki bulanık küme arsındaki kural ise “ Eğer A ise B” şeklinde verilsin. Bu ifadelerin
oluşturduğu kural tabanı, X x Y evrenindeki bir RA→B bulanık ilişkisiyle yorumlanır. Bu
şekilde verilen bir bulanık ilişki; cebrik çarpım, aritmetik kural, minimum ilişki gibi
değişik yöntemler kullanılarak elde edilmektedir. RA→B verilen bulanık ilişki minimum
ilişki yöntemiyle aşağıdaki gibi hesaplanmaktadır.
µR (x,y) = (µA (x) ∧µB (y))
“Eğer A’ ise B” şeklinde verilen bir kural, “Eğer A ise B” şeklindeki bir kurala
uygulanırsa elde edilecek B’ çıkışı, A’ ile R’ nin kompozisyonu alınarak bulunmaktadır.
B’=A’ o R
Yukarıdaki “o” işlemi bir bileşimi göstermekte olup bulanık yorumlama kuralları
kullanılarak elde edilmektedir. Bu işlem, max - min yöntemiyle yorumlanırsa aşağıdaki
gibi elde edilmektedir.
30
µB’(y) = max[µA’ (x) ∧ µR(x,y)] µR’ nin değeri 3.5’ de yerine yazılırsa;
µB’(y) = max[µA’ (x) ∧(µA (x) ∧ µB (y))] = max[µA’ (x) ∧ µA (x) ∧ µB] α= max(µA’ (x) ∧ µA (x)) ise
µB’ (y) = α ∧ µB (y)
Bulanık kontrolcüsü sistemlerinde n tane kural birbirine “veya” bağlacı ile bağlanır.
n adet kuraldan oluşan bir kural tabanında bir çok kural aktif hale gelebilmektedir. Bu
durumda minimum ilişki yöntemiyle tespit edilen kurallar, kendi arasında tekrar
değerlendirmeye tabi tutulmaktadır.
Şekil 2.17 Minimum ilişki yöntemi ile kuralların değerlendirilmesi
31
Minimum ilişki yöntemi kullanılarak elde edilen çıkarım sonuçları, “ve” bağlacı
kullanılarak yorumlanmaktadır. Bulanık mantıkta “veya” bağlacı max işlemine karşılık
gelmektedir. İlk olarak girişler arasında minimum işlemi uygulanarak, her bir kuralın
çıkış üzerinde ne kadar etkili olacağı bulunur. Sonra çıkışlar üzerinde max işlemi
uygulanarak bulanık sonuç elde edilmektedir. Eğer kurallar arasında aynı çıkışı veren
kurallar mevcut ise bunların en büyüğü seçilerek diğer kural iptal edilmektedir. Şekil
2.17’ de üç kural için bu işlemler gösterilmektedir (Kıray 1997).
Eğer A1 ve B1 ise, veya Eğer A2 ve B2 ise, veya Eğer A3 ve B3 ise, veya.
2.2.2.1.4. Durulama ünitesi
Bu ünite, çıkarım ünitesinden gönderilen kontrol işaretinin fiziksel ve kesin sayılara
getirilmesini sağlamaktadır. Durulayıcı, bu işlemi aşağıda kullanılan yöntemlerden
birini kullanarak yapmaktadır.
1- Üyelik Fonksiyonunun Max Noktası (Max - Membership Principle): Bu yöntemden
“yükseklik yöntemi” olarak da söz edilmektedir. Aktif olan kuralların en büyük üyelik
derecesi sayısal kontrol işareti olarak alınmaktadır (Şekil 2.18).
µA(u*) ≥ µA(u)
µ 1 A U u*
Şekil 2.18 Üyelik fonksiyonlarının max noktaları ile durulama işlemi
2- Merkez Yöntemi (Centroid Method): Alan merkezi yada ağırlık merkezi de denilen
bu yöntem, durulama yöntemi olarak en çok kullanılan yöntemlerden biridir ve ağırlık
merkezi hesaplanarak yapılmaktadır (Şekil 2.19).
32
∫ µ(u).u.dU U* =
∫ µ(u).dU
µ 1 A 0 u u*
Şekil 2.19 Merkez yöntemi ile berraklaştırma işlemi
3- Ağırlıklı. Ortalama Yöntemi (Weighted Average Method): Bu yöntem yalnızca
simetrik çıkışlı üyelik fonksiyonları için kullanılmaktadır. Her bir simetrik üyelik
değerinin tepe noktası değeri belirlenerek, ortalamaların alınmasıyla yapılmaktadır
(Şekil 2.20).
∑ µ(u).u U* =
∑ µ(U) µ 1 0 u u*
Şekil 2.20 Ağırlıklı ortalama yöntemi ile durulama işlemi
4- Üyelik İşlevinin Max Noktalarının Ortalaması (Mean - Max Membership=MOM):
Yüksek noktaların ortası da denilen bu yöntem, ilk yöntemle aşağı yukarı
benzemektedir. Ancak üyelik işlevinin en yüksek noktası burada tek değildir. Şekil
2.21’ de görüldüğü gibi bir dörtgen olabilmektedir.
33
a +b U* =
2 µ 1 0 u a u* b
Şekil 2.21 Max noktaların ortalaması yöntemiyle durulama işlemi
5- Geniş Alan Merkezi (Center of Largest Area =COA): Eğer bulanık çıkarımlar en az
iki tane dışbükey üyelik elamanından oluşuyorsa bu yöntem kullanılabilir. Bu yöntemde
dışbükey olmayan üyelik değerlerinin bileşkeleri parçalanarak durulanır. Burada Ak
durulanmış geniş bir parçadır. Zaten Ak dışbükey olsaydı, yöntem tamamıyla merkez
yöntemiyle aynı olacaktı. Şekil 2.22’ da görüldüğü gibi (1) numara ile belirlenmiş olan
geniş alan ele alınmaktadır ki bu alan dışbükeydir.
∫ µ Ak (u).u.dU U* =
∫ µAk(u).dU µ 1
(1) 0 u u*
Şekil 2.22 Geniş alan merkezi metodu ile berraklaştırma işlemi
İlk veya son yükselti (First or last of maxima): Bu yöntem tüm bulanık çıkışlarda
uygulanabilecek bir yöntemdir. Bileşkedeki en yüksek değer
hgt (Ak) = supµAk(u) olmak üzere;
(u ∈ U) ilk yükselti,
34
u * = inf {u ∈ UµAk (u) = hgt (Ak) }
yada son yükselti, u * = sup {u ∈ UµAk (u) = hgt (Ak) }
burada sup (supremum), en düşük yüksek sınırı ve inf (infimum) da en yüksek düşük
sınırı göstermektedir. Şekil 2.23’ da görüldüğü gibi ilk yükselti çözümü u*1 veya son
yükselti çözümü ise u*2’ dir.
µ 1 0 u
u*1 u
*2
Şekil 2.23 İlk veya son yükselti metodu ile durulama işlemi
Burada altı ayrı durulama yönteminden söz edildi. Ancak, akla “Acaba bunlardan
hangisi daha iyi?” yada “Acaba hangisini kullanmalıyım?” şeklinde bir soru gelmektedir.
Bunun cevabı, probleme en uygun olanının seçilmesidir. Hellendom ve Thomas 1993
yılında uygun olanın seçilmesi için beş dayanak ortaya atmıştır. Bunlar; süreklilik
(continuity), belirsiz olmama (disambiguity), uygunluk (plausibilty), hesapsal kolaylık
(computational simplicity) ve ağırlık yöntemi (weighting method) dir. Ayrıca fiziksel
sistemin yapısı ve kullanıcıların deneyimleri de elbette durulama yönteminin seçilmesi
için dayanak noktasını oluşturmaktadır (Günal 1997a, Atacak 1998).
2.2.2.1.4.2. Bir durulama örneği
Aşağıdaki gibi iki kuralımız olduğunu varsayalım. Kural 1:EĞER X = A1 VE Y = B1 ise Z = C1 olur. Kural 2:EĞER X = A2 VE Y = B2 ise Z = C2 olur.
X ve Y bulanık değerleri için x0 ve y0 algılayıcı okuyucuları olduğunu varsayalım ve
üyelik fonksiyonları;
35
(x-2) / 3 , 2 ≤ x ≤ 5 µA1 = (8-x ) / 3 , 5 < x ≤ 8 (y-5) / 3 , 5 ≤ y ≤ 8 µB1 = (11-y ) / 3 , 8 < y ≤ 11
(z-1) / 3 , 1 ≤ z ≤ 4 µC1 = (7-z ) / 3 , 4 < z ≤ 7
(x-3) / 3 , 3 ≤ x ≤ 6 µA2 = (9-x ) / 3 , 6 < x ≤ 9
(y-4) / 3 , 4 ≤ x ≤ 7 µB2 = (10-y ) / 3 , 7< x ≤ 10 (z-3) / 3 , 3 ≤ z ≤ 6 µC2 = (9-z ) / 3 , 6 < z ≤ 9
Ayrıca x0 = 4 ve y0 = 8 algılayıcı değerlerimiz olsun. Örneklerle nasıl hesaplayacağımızı
görelim.
1- Kontrol hareketi için üyelik fonksiyonu, bu iki kuralların birleşmesiyle bulunur.
2- Kontrol hareketinin kesin değeri COA ve MOM metotları kullanılarak bulunur.
Öncelikle algılayıcı okuyucuları x0 ve y0 önceki durumlardaki sırasıyla A1,B1 ile
karşılaştırılmalıdır. Bu µA1(x0) = 2 / 3 ve µB1(y0) = 1 sonuçlarını çıkarır. Benzer olarak
kural 2’ de µA2(x0) = 1 / 3 ve µB2(y0) = 2 / 3 olur. Kural 1 için hesaplanacak kuvvet;
36
α1 = min ( µA1(x0) , µB1(y0) ) = min (2 / 3 , 1) = 2 / 3
ve benzer şekilde kural 2 için;
α2 = min ( µA2(x0) , µB2(y0) ) = min (1 / 3 , 2 / 3) = 1 / 3 olur.
C1 için, şekil 2.24’ de görüldüğü gibi kural 1 sonucunda α1 uygulamasında üçgen
şekil gölgelendirilmiştir. Aynı işlemler C2 için kural 2 sonucunda α2 uygulamasında
uygulanmıştır. Üst üste bindirme yöntemi ile her bir üyelik fonksiyonları sonuçları üst
üste konmuş ve max operatör kullanılarak kuralların birleştirilmiş son hali için (şekil
2.24’ de en son şekil ) üyelik fonksiyonu bulunmuştur.
Ayrıca, COA metodu kullanarak durulama değer sonucu ise şöyledir:
2 . 1/3 + 3 . 2/3 + 4 . 2/3 + 5 . 2/3 + 6 . 1/3 + 7 . 1/3 + 8 . 1/3 Z*
COA = 1/3 + 2/3 + 2/3 + 2/3 + 1/3 + 1/3 + 1/3
= 4.7
MOM durulama stratejisi kullanılarak üç ayrıklaştırılmış değer birleştirilmiş üyelik
fonksiyonu içerisinde max üyeliğe erişir (yani 3, 4 ve 5 ile 2/3’ ün üyelik değeri ). Bu
nedenle
Z*MOM = ( 3 + 4 + 5 ) / 3
= 4.0 olur.
1 A1 B1 C1
2/3 x y z 1 A2 B2 C2 1/3 x y z x0 = 4 y0 = 8
37
1 3 5 7 9 z Z*
COA = 4.7 Z*
MOM = 4.0 Şekil 2.24 Örnekteki COA ve MOM durulama yöntemlerinin birleşmiş son hali
38
3. BULANIK MANTIK TEMELLİ YAZILIM GELİŞTİRME VE ARAÇLARI
Bulanık mantık temelli uygulama geliştirme için bir çok araç mevcuttur. Bulanık
mantığın kullanılacağı donanım bu aracın seçimini de belirler.Eğer bir PLC
kullanılıyorsa, kullanılan PLC’ nin üretici firmasının bulanık mantık ile ilgili hazır
kütüphanelerinin mevcut olup olmadığına bakılabilir. Bunlardan en bilineli Siemens ‘in
bulanık mantık kütüphanesidir. Bu kütüphane Siemens S7 300 ve S7 400 grubu PLC
‘ ler de kullanılabilir. Eğer donanım olarak bir PC düşünülüyorsa Labview, Fuzzytech
Professional düşünülebilir. Pamukkale Üniversitesi Elektrik Elektronik Mühendisliği
Bölümü bünyesinde mevcut olan Labview programı bulanık mantık kütüphanelerine
sahiptir. Eğer uygulama için düşünülen donanım bir mikrokontroller ise Fuzzytech
programı en iyi seçimlerden biridir.
3.1. Fuzzytech Paket Programı
Fuzzytech, bulanık mantık ile modelleme yapmak ve test edebilmek için geliştirilmiş
dünyanın sayılı paket programlarındandır. Sistem bir kere tasarlandığında Fuzzytech
oluşturulan tasarımı FTL dosya yapısı olarak kaydeder. FTL "Fuzzy Technology
Language" ifadesinin kısaltmasıdır ve bulanık mantık yapısının programlama dili olarak
düşünülebilir. FuzzyTech her türlü grafik arayüz desteğini verdiğinden FTL de kod
yazılmasına gerek yoktur. Bunun yanısıra Fuzzytech FTL de hazırlanan yapıyı,bulanık
mantık sisteminin çalıştırılacağı donanım için gerekli gömülü kod haline çevirebilir. Bu
sebeple mikrokontroller ve PC tabanlı uygulamalar için vazgeçilmez bir araçtır. Birçok
modeli(edition) vardır. Pamukkale Üniversitesi bünyesinde bulunan Fuzzytech paket
programının modeli Fuzzytech MCU-MP dir. Bu model kullanılarak oluşturulan
bulanık mantık modellemesi sonucunda ASCI C, ASM, Matlab dosya tabanlı kodlar
üretilebilir. Bunun dışında en gelişmiş Fuzzytech modeli olan Fuzzytech Professional
modeli kullanılarak Visual C++/MFC ,Visual Basic, Matlab, ANSI C, Java tabanlı
kodlar elde edilebilir. Fuzzytech programı ilk çalıştırıldığında şekil 3.1’ deki görüntü
ekrana gelir (WEB_1).
39
Şekil 3.1 FuzzyTECH ilk açılış görüntüsü
Burada File->New menusu kullanılarak yeni bir proje oluşturulabileceği gibi, çoğu
kişi tarafından da daha hızlı proje hazırlanabildiği için tercih edilen File->Fuzzy Design
Wizard kullanılarak proje hazırlanır. Fuzzy Design Wizard’ı çalıştırdıktan sonra şekil
3.2’ deki ekran görüntüsü ekrana gelir.
Şekil 3.2 Fuzzy Design Wizard çalıştırılınca
40
Next düğmesine basınca şekil 3.3’ deki ekran görüntüsü elde edilir.
Şekil 3.3 Fuzzy Design Wizard’ ın ilk adımı
Burada “inputLVs” yazan yere bulanık modellemenizde kullanmak istediğiniz giriş
değişkenlerinin sayısını , “input Terms/LV” yazan yere bu değişkenler için düşünülen
dilsel olay sayısını gireriz. Aynı şekilde “Output LVs” yazan yere bulanık
modellemenizde kullanmak istediğiniz çıkış değişkenlerinin sayısını, “output
Terms/LV” yazan yere bu değişkenler için düşünülen dilsel olay sayısını gireriz.
Modellemede ara değer tanımlamak istersek “ intermediateLVS” alanına adedini ve
karşısına da dilsel olay sayısını yazarız. Next düğmesine basınca şekil 3.4’ deki ekran
görüntüsü elde edilir.
41
Şekil 3.4 Fuzzy Design Wizard’ ın ikinci adımı
Burada 1. giriş değişkenimizin adını error olarak tanımladığımız görülmektedir. Bu
değişkenimizin fiziksel sistem içindeki aralığı Range From kutusu içinde tanımlanır.
Burada dikkat edilmesi gereken husus fiziksel sistem içindeki aralık ile (bu olay
program içinde shell value olarak adlandırılmıştır.) kod içerisinde kullanılan aralıkların
uygun şekilde ayarlanmasıdır. Bu konuyu biraz daha açarsak ; Pic 16f877 kullanılarak
bir analog değerin 10bitlik bir çözünürlükle okunduğunu düşünelim. Bu değeri
set_value olarak tanımlanan bir değişkene atayalım. Aynı şekilde Pic 16f877 ‘nin başka
bir analog girişini 10bitlik bir çözünürlükle okuyalım. Bunu da real_value adlı başka bir
değişkene atayalım. Eğer biz error=set_value-real_value+1023 şeklinde bir tanımlama
yaparsak, error sinyalimiz minimum 0 maksimum 2046 olur. Bu değerler fiziksel
değerlerdir. Çünkü dış ortamdan A/D çevirici ile koda dönüşmüş değerlerdir. Fuzzytech
ise bu değerlerin kod değerlerini kullanır. Şekil 3.5’ dede görüldüğü gibi Fuzzytech 0
için 0 değerini kullanırken 2046 için 65535 değerini kullanır.Bu durum uygulama
kodları içinde daha net olarak gösterilmiştir.
42
Şekil 3.5 Değişken skalası
Next düğmesine bastıktan sonra şekil 3.6’ daki ekran görüntü oluşur.
Şekil 3.6 Fuzzy Design Wizard’ ın üçüncü adımı
43
Yukarıda sistemimiz için 2. bir giriş olan ivme değişkeninin tanımlanması
görülmektedir. Next düğmesine basınca şekil 3.7’ deki görüntü oluşur.
Şekil 3.7 Fuzzy Design Wizard’ ın dördüncü adımı
Burada çıkış değişkenimizin adını power olarak tanımladığımız görülmektedir. Next
düğmesine basınca şekil 3.8’ deki görüntü oluşur.
Şekil 3.8 Fuzzy Design Wizard’ ın beşinci adımı
44
Next düğmesine basınca şekil 3.9’ daki görüntü oluşur.
Şekil 3.9 Fuzzy Design Wizard’ ın altıncı adımı
Burada “Rule Blocks” alanına bulanık mantık kural blok sayısı adedi girilir. Next
düğmesine basınca şekil 3.10’ daki görüntü oluşur.
Şekil 3.10 Fuzzy Design Wizard’ ın yedinci adımı
45
Böylece iki girişli bir çıkışlı bir proje oluşturulmuş oldu. Her bir değişkenin üzerine
çift tıklayarak açılan pencerelerden dilsel değişkenlerin tanım aralığını belirlenebilir.
Bununla ilgili ekran görüntüsü şekil 3.11’ de verilmiştir.
Şekil 3.11 Dilsel değişkenlerin tanım aralığı
Yukarıda da görüldüğü gibi istenilen giriş çıkış değişkenlerinden birisi seçilerek,
seçilen bu değişkenin ayarlanması düşünülen dilsel ifade aralığı seçilir. Ardından da
yukarıda görülen üçgenler fare sürüklemesi ile yeniden tanımlanabildiği gibi x/y yazan
bölümlere ilgili değerler klavye ile girilerek yeniden tanımlama yapılabilir.”Rule Box”
çift tıklanarak açılan pencereye de if-then-else kuralları uygulanarak aidiyetlik ile ilgili
gerekli düzenlemeler yapılır. Bununla ilgili ekran görüntüsü şekil 3.12’ de
görülmektedir.
46
Şekil 3.12 Kural tablosu
Tools->Project Options menusu kullanılarak açılan pencereden “general” başlığı
altında temel değişken veri tipi seçilebilir. Değişkenin 16bitlik integer tipinde seçildiği
şekil 3.13’ de gözükmektedir.
Şekil 3.13 Değişken tipi
Buraya kadar yapılanlarla proje tamamlanmıştır. Kod üretmeden önce Debug özelliği
kullanılarak giriş değişkenlerinin değişik değerlerine karşılık çıkış değişkeninin nasıl
değiştiğini gözlemlenebilir. Debug işlemi sırasında şekil 3.14’ deki görüntü elde edilir.
47
Şekil 3.14 Debug işlemi
Sıra oluşturulan bu proje için kod üretilmesine geldi. Bunun için Tools->Compile to
menusundan istenilen kod tabanında ki seçenek seçilir. C tabanlı kod seçildiği zaman
program proje adı ile aynı iki ANSI C tabanlı dosya üretir. Bu durumda şekil 3.15’ deki
ekran görüntüsünü oluşur.
Şekil 3.15 C tabanlı kod üretimi
48
3.2. CCS C Paket Pogramı
CCS C, Microchip firmasının pic12,16 ve 18 serisi mikrokontrollerı için c
derleyicisini sunar.Bu c derleyicisi bünyesinde barındırdığı fonksiyonlar sayesinde
yazılım çok kolay kodlanabilir. Kodlara kolayca bakılabildiği için hızlı metotlar
geliştirmenize olanak verir. Başlıca özellikleri şunlardır (WEB_4);
• MPLAB ve diğer simulatorlerle ayrıca programlayıcılarla tam uyumludur.
• Formatlı printf özelliği ile hex ve ondalık sayılarda kolay gösterim imkanı
sağlar.
• Etkin fonksiyon uyarlaması sayesinde hardware stack limitlerinden daha fazla
çağrılara izin verir.
• LCD modülleri,keypadler,24xx,93xx, serial
e2promlar,x10,DS1302,NJU6355,Real time cloks,DALLAS TOUCH
MEMORY, DS2223,PCF8570 Seri sram,LTC1298,PCF8591 A/D konvertörler
ve daha fazlası için sürücüler eklenmiştir.
• 1,8,16 bit ve 32 bit floating point aritmetik kullanabilir.
• Assembly kodlar c programının içine herhangi bir yerde eklenebilir.
• Değişik kod sayfaları otomatik eklenirler.
• Sabitler(kelime ve kalıplar) program hafızasında yer alır.
• Standard tek bit kodlar (SHORT INT) sayesinde çok kısa ve değişken bit
bazında kodlar üretilebilir.
• #BIT and #BYTE komutları c değişkenlerini kesin adreslere yerleştirirler.
• Özel pencerelerde ram hafıza haritası c/assembly listesi ve çağrı ağacını
görüntüleyebilir.
• 8 veya16 bit pointerlar sunulur.
3.3. Fuzzytech – CCS C Uyumu
Fuzzytech ile üretilen kodlar CCS C compiler ile birebir uyumlu değildir. Bu sebeple
kodlar üzerinde bazı değişiklikler yapmak gerekir. Bunlar sırasıyla şunlardır:
ftlibc.h dosyası üzerinde aşağıdaki değişiklikler yapılır ve bu dosya CCS C ile
oluşturulan proje klasörüne five.c ve five.h adlı Fuzzytech tarafından bizim bulanık
modelimize uygun olarak üretilen dosyalarla birlikte kopyalanır.
49
//#define VOID void
//#define CONST const
//typedef unsigned char BYTE;
satırları iptal edilir.
typedef unsigned char FTCRTU8;
typedef unsigned short FTCRTU16;
typedef unsigned long FTCRTU32; değişkenleri
typedef unsigned int FTCRTU8;
typedef unsigned long int FTCRTU16;
typedef unsigned int32 FTCRTU32; şeklinde yeniden tanımlanır.
five.h dosyası içindeki
//extern FUZZY * const pcvfive;
satır silinir.
five.c dosyası içindeki
static const FUZZY tpts[28] =
static const FUZZY xcom[7] =
static const BYTE rt0[32] =
static const FRAT frat0[14] =
değişkenler aşağıdaki gibi yeniden tanımlanır.
static FUZZY tpts[28] =
static FUZZY xcom[7] =
static BYTE rt0[32] =
static FRAT frat0[14] =
Ayrıca CCS C ana kodun içine aşağıdakiler dahil edilir.
#include "five.c"
#include "Hf2p.c"
#include "Himfmin.c"
#include "Hdcom.c"
#include "Hdmom.c"
Oluşturulan modele bağlı olarak CCS C içine dahil edilmesi gereken dosya olur ise
C:\Program Files\INFORM\fuzzyTECH 5.5\Runtime\C\Lib\Src\MCU altındaki
dosyalardan yararlanılır (WEB_4).
50
4. BULANIK MANTIK DENETİMLİ KOMPRESÖR SİSTEMİ
Dünyadaki çeşitli üretici firmalar daha fazla enerji tasarrufu yapabilmenin
peşindedirler. Değişken devirli kompresörler enerjinin bir formu olan basınçlı havanın
daha verimli kullanılmasını sağlamaktadır. ERBAKIR A.Ş. bünyesinde bulunan dört
adet kompresör farklı hatlara hava basmaktadır. Bu kompresörler boş-yük mantığında
çalışmaktadır. Dolayısıyla enerji tasarrufu sağlama amacıyla bu kompresörler için ortak
bir basınçlı hava hattı oluşturmak ve kompresörleri değişken devirli olarak çalıştırmak
planlanmıştır.
Şekil 4.1 Değişken devirli kompresörün akış şeması
Değişken devirli kompresörlerde şekil 4.1’ de görüldüğü gibi sensör vasıtasıyla
devamlı hava hattından veriler alan mikroişlemci/mikrokontroller içinde gömülü
bulunan kontrolcü algoritmasına uygun olarak bir analog değer üretir ve bunu frekans
konvertörüne iletir. Frekans konvertörüde bu veriyi uygun frekansla birleştirerek motora
verir. Motor elde ettiği frekansa göre hızını azaltır veya artırır. Motorun devrindeki
azalma veya artma değişen hava ihtiyacını karşılanmasını sağlayacaktır. Değişken
devirli kompresörlerde kompresör bünyesinde titreşim oluşması nedeniyle titreşim
testleri yapılmaktadır. Bu yolla titreşim oluşturan tüm hızlar saptanarak gerekli önlemler
alınmaktadır. (Özel borulamalar, motorun desteklenmesi, kaplin yuvasının modifiye
edilmesi, hız sürücüsüne uygun motor ve yağ pompası seçilmesi vb.) Rezonans yaratan
tüm frekansların önlenmesinin mümkün olmadığı durumlarda hız regülatörü üzerinde
51
programlama yapılarak rezonans yaratan bazı hız aralıkları atlanmaktadır. Değişken
devirli kompresör seçiminde aranması gereken diğer önemli bir nokta EMC
talimatlarına tam uygunluktur. Bu talimatlara bağlı olarak konvertörün verimli
kullanılabilmesi ve oluşabilecek rezonansın önlenebilmesi için hız sürücüsündeki
kapasitörün nominal voltajının büyük seçilmesi ve şok filtrelerinin kullanılması
gerekmektedir.
Boş yük prensibiyle çalışan kompresörlerde hava ihtiyacı söz konusu olmadığında
kompresör boşta çalışarak % 25 civarında enerji tüketir. Bu durum şekil 4.2 ve şekil
4.3‘ de gösterilmiştir. Değişken devirli kompresörlerde ise güç, kapasite kullanımı
birbirine paraleldir. Sistemin azalan ve artan hava ihtiyaçları, aynı oranda azalan ve
artan güç miktarıyla karşılanmaktadır. Bu durum şekil 4.4’ de gösterilmiştir.
Şekil4.2 Boş-yük kontrollü
kompresörlerde güç kapasite
ilişkisi
Şekil 4.3 Boş-yük kontrollü kompresörlerde
çalışma basınç aralığı
Şekil4.4 Değişken devirli kompresörlerde güç kapasite, çalışma basınç aralığı ilişkisi
52
Değişken devirli kompresörler basınçlı hava sisteminin azalan ve artan hava
ihtiyacını azalan ve artan güç miktarlarıyla karşılamaktadır. Kalkış ve duruşlar sinirsiz
sayıda olduğu için motorun boşta çalışmasına gerek kalmamaktadır. Boşta çalışmada
harcanan enerji tüketimi de potansiyel olarak enerji tasarrufuna dönüşmektedir. (Soft
start-soft stop) Ayni zamanda yumuşak kalkış söz konusu olduğu için ilk çalıştırma
akımlarında ortaya çıkan pik çekişler ortadan kalkacaktır. Motorun devri değişken
olduğu için dişli kutusu veya kayış kasnak bağlantılarına gerek yoktur. Bu yüzden
oluşacak enerji kayıpları da söz konusu olmayacaktır. Konvansiyonel kompresörlerde
ise bu bağlantılara ihtiyaç vardır. Bu durum Şekil 4.5 ‘de gösterilmiştir.
Şekil 4.5 Değişken devirli ve konvansiyonel kompresörlerin karşılaştırılması
Şekil 4.6’da gösterildiği gibi Erbakır A.Ş. ‘de düşünülen uygulamada değişken
devirli kompresörler ile konvansiyonel kompresörlerin birlikte kullanılması söz
konusudur.
Şekil 4.6 Konvansiyonel kompresörler ile değişken devirli kompresörlerin birlikte kullanımı
53
Erbakır A.Ş.’ de bulunan 4 kompresör tek bir hava hattı üzerinde birleştirildikten
sonra, kontrol sisteminin hava hattında basıncı 5.8bar ile 6.0bar arasında tutması
istenmektedir. Dört kompresörden ikisi konvansiyonel kompresör olarak (1 ve 2 nolu)
çalışırken kalan ikisi de değişken devirli kompresör olarak çalışacaktır. Böylece
yukarıda anlatılan enerji verimliliği sağlanacak ve ilk yatırım maliyeti de düşük
tutulmuş olacaktır. Şekil 4.6 ‘da gösterilen grafiğin zaman ekseni üzerinde ilerlenirse;
başlangıçta sistem tarafından maksimum havanın çekildiği ve dört kompresöründe
devrede olduğu gözlemlenir. Zaman ilerledikçe hava tüketimi belirli bir seviyeye
gerileyince 2 nolu konvansiyonel kompresör devreden çıkar. Hava ihtiyacı belirli bir
seviyenin altına inince de 1 nolu konvansiyonel kompresör devreden çıkar. Bu durumda
sistemin hava ihtiyacı değişken devirli iki adet kompresör tarafından karşılar. Grafikte
değişken devirli kompresörlerin yüksek ve düşük devirde çalışma noktaları
gösterilmiştir. Erbakır A.Ş. bünyesinde bulunan kompresör sistemine ait mekanik
hatların birleştirilmesi ve iyileştirilmesi süreci devam etmekte olduğu için bulanık
mantık temelli merkez görevini icra edecek ünite bir simülasyon sistemi kurularak
denenmiş ve başarılı sonuçlar elde edilmiştir.
4.2. Simülasyon Donanımı
Erbakır A.Ş. bünyesinde bulunan dört adet kompresörlerden ikisi değişken devirli
kalan ikisi de konvansiyonel kompresör olacak şekilde çalıştırılacaktır. Sistem ortak
hava hattı üzerindeki basınç sensöründen aldığı geri besleme ile kontrol edilecektir. Bu
kontrolde değişken devirli kompresörlere ait AC motorların hız kontrolü ile birlikte,
konvansiyonel kompresörlere ait AC motorların devreye girip çıkma zamanları sistemin
iyi çalışmasının en önemli kriteridir. Dolayısıyla simülasyon sitemi de dört adet AC
motordan oluşmaktadır. Bunlardan ikisi değişken devirli mantığında çalıştırılmak üzere
birer AC motor frekans konvertörü tarafından sürülmektedir. Diğer ikisi ise
konvasiyonel kompresör mantığına uygun olarak sürücüsüz olarak çalıştırılır.
Simülasyon sitemi aşağıdaki parçalardan oluşur:
1- Dört adet AC motor
0.55 kW, 2.42A, 2760rpm, 230V, 50Hz
2- İki adet takojenerator
60/1000 Volt/rpm
54
3- 1 adet 1.5kW Omron marka frekans konvetrörü
4- 1 adet 1.5kW Siemens marka frekans konvetrörü
5- Pic 16F877, Voltaj bölücü devreler ve elektronik kart
4.1.1. Frekans konvertörü
Frekans konvertörü, 3 ayrı kısımdan oluşmaktadır; Doğrultucu, DC-link ve invertör.
Güç kaynağı 3 faz 380 volt ( küçük güçteki motorlar için 1 faz 230volt) ve 50 Hz AC
voltajı redresöre iletir. Doğrultucu da bu voltajı DC voltaja çevirir. DC link bu voltajı
filtreden geçirir ve stabilize eder. (Doğrultucu ve DC link beraber, invertörü besleyen
sabit doğru akım voltaj kaynağı gibi davranırlar.) Invertör de değişken frekans ve
değişken gerilim yaratarak kompresör motorunu besler. Bu çevrimle, motorun devri
dalgalanan hava ihtiyacına göre değişecektir.
4.1.2. PIC 16F877 mikrokontroller
PIC 16F87X serisi öncelikle, PIC 16CXX ailesinin özelliklerini taşır. PIC 16CXX’de
Harvard mimarisi kullanılmıştır. Von Neuman mimarisinde, veri ve program belleğine
aynı yoldan erişilebilirken, bu mimaride program belleği ve veri belleğine erişim farklı
boylarda yapılır. Veri yolu (databus) 8 bit genişliğindedir. Aynı anda, veri belleğine 8
bit genişliğindeki bu yolla erişilirken; program belleğine program yolu yada adres yolu
(program bus / adress bus) denilen 14 bit genişliğindeki diğer bir yolla erişilir. Bunun
için PIC 16F87X ‘ de komut kodları (opcode), 14 bittir. 14 bitlik program belleğinin her
bir adresi, bir komut koduna (Instruction Code / Instruction Word) karşılık gelir.
Dolayısıyla her komuta bir çevrim süresinde (cycle) erişilir ve komut kaydedicisine
yüklenir. Komut kaydedicisi, CPU tarafından kullanılan bir kaydedicidir ve dallanma
komutları dışındaki bütün komutlar, aynı çevrim süresinde çalıştırılırlar. Bu sırada
program sayacı, PC (Program Counter) bir artar. Dallanma yada sapma komutları ise,
iki ardışık periyotta çalıştırılır ve program sayacı PC, iki arttırılır. Merkezi işlem
biriminin (CPU) en önemli alt birimlerinden biri, ALU (Aritmetik Logic Unit) olarak
adlandırılan aritmetik mantık birimidir. ALU’nun görevi, kendisine yollanan veriler
üzerinde, aritmetik yada mantıksal işlemler yapmaktır. ALU’nun biri W (Working
Register) ismi verilen kaydediciden olmak üzere, iki ana girişi vardır. ALU kendisine
gelen iki veriyi (işleçler), toplayıp çıkarılabilir. Çeşitli mantık işlemleri yapabilir(and,or,
xor gibi).Mikroişlemcilerde en çok kullanılan kaydedici, “working register”dır. Bu
55
kısaca W olarak adlandırılır. W, aritmetik ve mantık işlemlerinde, iki işlevi bir arada
yürütür. İşlemden önce,işlenenlerden birini barındırır. İşlemden sonra ise işlem
sonucunu saklar, 16F87X serisi mikrodenetleyiciler de, komutun sonuna konan 1 veya 0
sayısıyla (d), sonucun W’de yada başka bir kaydedicisinde tutulacağı mikroişlemciye
bildirilir.PIC 16F877, 8 Kword büyüklüğünde belleğe sahiptir. Program belleği
yonganın içerisindedir.PIC 16F87X serisi mikrodenetleyiciler, kendi kaydedicilerini ve
veri belleğini, doğrudan, dolaylı ve göreceli olarak adresleyebilirler. PIC 16F87X
Mikrodenetleyici ailesi aşağıdaki temel özellikleri taşır (WEB_2).
• CPU azaltılmış komut seti
• RISC temeline dayanır.
• Öğrenilecek 35 komut vardır ve her biri 14bit uzunluktadır.
• Dallanma komutları iki çevrim (cycle)sürede, diğerleri ise bir çevrimlik sürede
uygulanır.
• İşlem hızı 16F877’de DC-20 MHz’dir. (16F877’de bir komut DC-200 ns hızında
çalışır.)
• Veriyolu (databus) 8 bittir.
• 32 adet SFR (Special Function Register)olarak adlandırılan özel işlem
kaydedicisi vardır ve bunlar statik RAM üzerindedir.
• 8Kword’e kadar artan flash belleği 1 milyon kez programlanabilir.
• 368Byte’a kadar artan veri belleği (RAM),
• 256Byte’a kadar artan EEPROM veri belleği vardır.
• Pin çıkışları PIC 16C73B/74B/76 ve 77 ile uyumludur.
• 14 kaynaktan kesme yapabilir.
• Yığın derinliği 8’dir.
• Doğrudan, dolaylı ve göreceli adresleme yapabilir.
• Power-onReset (Enerji verildiğinde sistemi resetleme özelliği)
• Power-upTimer (Power-up zamanlayıcı)
• OsilatörStart-up Timer (Osilatör başlatma zamanlayıcısı)
• Watch-dogTimer (Özel tip zamanlayıcı), devre içi RC osilatör
• Programla kod güvenliğinin sağlanabilmesi özelliği
• Devrek içi Debugger (Hata ayıklamakta kullanılabilecek modül)
• Düşük gerilimli programlama
• FlashROM program belleği (EEPROM özellikli program belleği)
56
• Enerji tasarrufu sağlayan, uyku –Sleep Modu
• Seçimli osilatör özellikleri
• Düşük güçle, yüksek hızla erişilebilen, CMOS-Flash EEPROM teknoloji
• Tümüyle statik tasarım
• 2pinle programlanabilme özelliği
• yalnız5V girişle, devre içi seri programlanabilme özelliği
• İşlemcinin program belleğine, okuma/yazma özelliği ile erişimi
• 2.0V – 5.0 V arasında değişen geniş işletim aralığı
• 25mA’lik kaynak akımı
• Devre içi, iki pin ile hata ayıklama özelliği
• Geniş sıcaklık aralığında çalışabilme özelliği
• Düşük güçle çalışabilme özelliği
Çevresel özellikleri ise şöyle sıralanabilir:
• TMR0: 8 bitlik zamanlayıcı, 8 bit ön bölücülü
• TMR1: Ön bölücülü, 16 bit zamanlayıcı, uyuma modundayken dış kristal
zamanlayıcıdan kontrolü arttırılabilir.
• TMR2: 8 bitlik zamanlayıcı, hem ön bölücü hem de son bölücü sabiti birlikte
• Paralel Slave Port, 8 bit genişlikte ve dış RD, WR, CS kontrolleri
• USART/SCI, 9 bit adres yakalamalı
• BOR Reset (Brown Out Reset) özelliği
• PIC 16F84 ile PIC 16F87X mikrodenetleyici ailesinden farkları aşağıdaki
tabloda
• İki Capture / Compare / PWM modülü
• 10 bit çok kanallı A/D çevirici
• senkron seri port (SSP), SPI (Master mod) ve I2C (Master Slave) ile
görülmektedir (WEB_3).
4.2. Sistemin Yapısı
Sistem şekil 4.7 ‘de gösterildiği gibi sistem Pic 16F877 mikrokontroller ile kontrol
edilmektedir. Pic 16F877 mikrokontroller hava tüketimi bilgisini aldıktan sonra, buna
uygun olarak sistem kontrolcüsü ve bulanık mantık kontrolcüsü bloklarını işeterek
57
frekans konvertörleri için uygun hız referans değerlerini PWM çıkışından üretir. Ayrıca
dijital çıkışlarını kullanarak sürücüsüz motorları da çalıştırır/durdurur.
Şekil4.7 Sistemin fiziksel yapısı
4.3. Sistemin Çalışma Prensibi
Simülasyon sitemi bir potansiyometre yardımıyla aldığı hava ihtiyaç bilgisini
kullanarak dört adet motora kumanda eder. Bu motorlardan ikisi frekans konvertörü
olmaksızın çalıştırılıp durdurulurken, diğer ikisi frekans konvertörü yardımıyla
çalıştırılır. Dört motorun toplam devri 11040rpm yapmaktadır. Dolayısıyla 5V hava
ihtiyaç referansı geldiğinde dört motorda maksimum devirde çalışacaktır. Şekil 4.8’ de
simülasyon sisteminin çalışma kontrol diyagramı gösterilmiştir.
58
Şekil 4.8 Kontrol bloğu
Aşağıdaki tablo 4.1’ de sistem kontrolcüsünün hava ihtiyacına bağlı olarak ürettiği
bazı sonuçlar gözükmektedir. Sitem kontrolcüsü motor 1 ve 2’yi direk kontrol ederken,
motor 3 ve 4 için gereli hız kontrol değerlerini bulanık mantık kontrolcüsüne
aktarmaktadır.
Tablo 4.1 Sistem kontrolcüsünün hava ihtiyacına bağlı olarak ürettiği çıkışlar
Hava
İhtiyacı
İçin
Referans
Değer (mV)
İstenen
Toplam
Motor
Devri
(RPM)
Motor 1
Çalışma
Durumu
(On/Off)
Motor 2
Çalışma
Durumu
(On/Off)
Motor 3
Çalışma
Durumu
(Frekans)
Motor 4
Çalışma
Durumu
(Frekans)
5000 11040 Devrede Devrede Çok yüksek devir Çok yüksek devir
4500 9936 Devrede Devrede Yüksek devir Yüksek devir
4000 8832 Devrede Devrede Normal devir Normal devir
3500 7728 Devrede Devrede Düşük devir Düşük devir
3000 6624 Devrede Devrede değil Yüksek devir Yüksek devir
2500 5520 Devrede Devrede değil Normal devir Normal devir
2000 4416 Devrede Devrede değil Düşük devir Düşük devir
1500 3312 Devrede Devrede değil Çok düşük devir Çok düşük devir
1000 2208 Devrede değil Devrede değil Normal devir Normal devir
500 1104 Devrede değil Devrede değil Düşük devir Düşük devir
0 0 Devrede değil Devrede değil Devrede değil Devrede değil
59
Sistem kontrolcüsü, istenen toplam motor devir sayısı 3300rpm’ den az iken frekans
kontrollü 3 ve 4 numaralı motorları hava ihtiyacını karşılamada kullanır. Motor 1 ve
motor 2 devrede değildir. İstenen toplam motor devir sayısı 3312rpm’ e ulaşınca motor
1 devreye girer. İstenen toplam motor devir sayısı 2500rpm’ e inince tekrar devreden
çıkar. Dolayısıyla sistem kontrolcüsü içinde 3312rpm ile 2500rpm arasında bir histerisi
motor 1’ in devreye girip çıkması için tanımlanmıştır. Aynı histerisi motor 2 için istenen
toplam motor devri 7350rpm ile 6650rpm arasında iken geçerlidir. Dolayısıyla sitem
kontrolcüsü hem bu histerisi noktalarında motor 1 ve motor 2’ yi devreye alıp çıkarır,
hem de bu noktalarda bulanık mantık algoritmasının giriş değişkenini doğrudan
etkileyen frekans kontrollü motorların istenen hız değer bilgisini yeniden hesaplar.
Örneğin hava ihtiyacı için istenen toplam motor devri 3310rpm iken ve motor1 devrede
değilken frekans kontrollü 3 ve 4 nolu motorların 3310rpm motor devrini karşılamaları
gerekirken, motor 1 devreye girdiği zaman bu ihtiyaç 3310-2760=550rpm’ e inmektedir.
Bu değişim de direk olarak bulanık mantık algoritması giriş değişkenine yansımaktadır.
Sistem kontrolcüsü bulanık mantık algoritması için iki giriş değişkeni üretir. Bunlar
hata ve ivme giriş değişkenleridir. Aşağıdaki gibi tanımlanmıştır.
hata =Frekans kontrollü 3 ve 4 nolu motorlardan istenen toplam motor devri –
bu motorların gerçekleşen devirleri toplamı
ivme =3 ve 4 nolu motorların gerçekleşen devir toplamının zaman bağlı türevi
Simülasyon sitemine ait bulanık mantık algoritmasının giriş ve çıkış değişkenlerine
ait dilsel değişkenlerin tanım aralığı EK-1‘de verilmiştir. Ayrıca EK-2’de bulanık
mantık kural tablosu görülmektedir. Proje’ ye ait CCS C’ de hazırlanmış kodlar EK-
3’de verilmiştir. Ayrıca sistemin performansını gösteren Labview programının grafik
çıktısı da EK-4’de verilmiştir. Buradaki hata grafiğine bakılacak olursa hatanın hemen
hemen her zaman sıfıra yakın olduğunu görebiliriz. Buda sistemin istenilen hava
ihtiyacını her zaman karşıladığını göstermektedir.
60
5. SONUÇ
Bulanık mantık her türlü kontrol sisteminde rahatlıkla kullanılabilir. Uygulanacak
sistemin kolay ya da zor olmasına bakılmaksızın kullanılabilecek bir metottur. Özellikle
sistem modeli çıkarılamayan, kontrol açısından belirsizliklerin çok olduğu, giriş
değişkenlerinin fazla olduğu kontrol uygulamalarında klasik kontrol algoritmalarının
yerine tercih edilmesi gerekir. Bu tercih tasarımcının daha dengeli, kararlı bir kontrol
sistemini klasik metotlara kıyasla çok daha kısa zamanda gerçekleştirmesini
sağlayacaktır.
Çoklu kompresör sisteminin bulanık mantık kontrolcüsüne ait giriş değişkenlerinin
üyelik fonksiyonlarının tanım aralıkları daraldıkça sistemin cevap verme tepkimesi
hızlanmaktadır. Tasarımı yapılan sisteme göre üyelik fonksiyonları iyi tanımlanmalıdır.
Aksi takdirde verimsiz, düşük performanslı bir kontrol sistemi oluşabilir. Bu gibi ayar
zorlukları, klasik PID algoritması ayar zorluğuyla kıyaslanınca dikkate alınmayacak
kadar küçüktür.
Yukarıda anlatılan proje uygulaması CCS C versiyon 3.221’ de sorunsuz olarak
çalıştırılmıştır. Versiyon 3.245 ‘ de derlemesi yapılan aynı program küçük hatalar
vermiştir. Bu hatalar da klasik C programcılarının rahatlıkla üstesinden gelebileceği
düzeydedir.
Bu proje kapsamında bir adet bulanık mantık kontrolcüsü kullanılmıştır. Aynı proje
ve mikrokontroller içinde birden fazla bulanık kontrolcü oluşturmak mümkündür.
Örneğin bir mikrokontroller için üç adet bulanık mantık kontrolcüsü olsun istersek; üç
ayrı projeyi FuzzyTECH paket programında hazırlamamız gerekir. Bu hazırlanan
projelerin üretilen C kodları da CCS C paket programı altında yukarıda belirtilen esaslar
dikkate alınarak rahatlıkla birleştirilebilir.
61
KAYNAKLAR Atacak, İ. (1998) Genel amaçlı bir bulanık mantık kontrolcüsünün tasarımı, Yüksek
Lisans Tezi , Gazi Üniversitesi Fen Bilimleri Enstitüsü, Ankara, 58s. Baba, F. (1995) Triga-II reaktörü için fuzzy kontrol tasarımı ve simülasyonu, Doktora
Tezi, İTÜ Fen Bilimleri Enstitüsü, İstanbul, 125s. Doğueri, A. K. (1996) Bulanık Mantık ve Bulanık Denetleyiciler. Otomasyon Dergisi,
44: 106-108. Gerişkovan, A. (1996) PID, Fuzzy ve PID-Fuzzy Kontrol Algoritmalarına Genel Bir
Bakış. Otomasyon Dergisi, 48: 122-126. Günal, Ü. (1997a) Bulanık Mantık. Otomasyon Dergisi, 56: 170-173. Günal, Ü. (1997b) Bulanık Mantık. Otomasyon Dergisi, 55: 50-55. Kaynak, M. (1992) Süreç Denetimde Bulanık Mantık. Otomasyon Dergisi, 2: 78-82. Kıray, V. (1997) Oda içi sıcaklık ve hava kalitesinin mikrodenetleyici ve bulanık
mantıkla kontrolü, Yüksek Lisans Tezi, Gazi Üniversitesi Fen Bilimleri Enstitüsü, Ankara, 80s.
Klir. G.J. and Yuan, B. (1995) Fuzzy Sets and Fuzzy Logic Theory and Applications, Prentice Hall PTR, New York, 592s.
Lembesis, E. and Tanscheit, R. (1993) Rule-base size-reduction techniques in a learning fuzzy controller, Fift IFSA World Congress, Seoul, s. 761-764.
Takagi, T. And Sugeno, M.(1985) Fuzzy Identification of Systems and Its Applications to Modelling and Control, IEEE Transactions on Systems Man and Cybernetics, 15(1): 116-132
Turksen, I.B. and Jiang, S. (1993) Rule Base Reorganization and Search with a Fuzzy Cluster Analysis, International Journal of Approximate Reasoning, 9(3): 167-196.
Yager, R. R. and Zadeh L. A. (1992), Fuzzy Logic Controllers, An Introduction to Fuzzy Logic Applications In Intelligent Systems, Kluwer Academic Publisher, Boston, s69-89.
Yüksel, İ. (1997) Gelişkin Denetim Algoritmaları, Otomatik Kontrol Sistem Dinamiği ve Denetim Sistemleri, Uludağ Üniversitesi Matbaası, Bursa, s314-316.
WEB_1, FuzzyTECH, http://www.fuzzytech.com/ , 20.04.2006 WEB_2, PIC 8/16-bit Microcontrollers, http://www.microchip.com/stellent/idcplg?
IdcService=SS_ GET_PAGE&nodeId=1335&dDocName=en010241, 02.06.2006 WEB_3, http://ww1.microchip.com/downloads/en/DeviceDoc/30292c.pdf , 02.06.2006 WEB_4, CCS, Inc., http://www.ccsinfo.com/content.php?page=compilers, 25.03.2006
62
EKLER Ek-1 Hata giriş değişkeni dilsel tanım aralığı
İvme giriş değişkeni dilsel tanım aralığı
Power çıkış değişkeni dilsel tanım aralığı
63
Ek-2
Kural tablosu
IF THEN
hata ivme DoS power
negative negative 0.20 negative
negative zero 0.50 negative
negative positive 0.80 very_negative
zero negative 0.20 positive
zero zero 1.00 zero
zero positive 0.20 negative
positive negative 0.80 very_positive
positive zero 0.50 positive
positive positive 0.20 negative
64
Ek-3 /* proje.c */ /*-------------------------------------------------------------------------*/ /*---------------------- fuzzyTECH 5.54 MCU-MP Edition --------------------*/ /*-------------------- License Number: FT TR 00002 01 HS ------------------*/ /*-------------------------------------------------------------------------*/ /*---------------------- Code Generator: C Source Code --------------------*/ /*------------- Code Generation Date: Tue Jun 13 14:05:00 2006 ------------*/ /*------------------------ Fuzzy Logic System: PROJE ----------------------*/ /*-------------------------------------------------------------------------*/ /*-------- (c) 1991-2003 INFORM GmbH, Pascalstr. 23, D-52076 Aachen -------*/ /*------ Inform Software Corp., 2001 Midwest Rd., Oak Brook, IL 60523 -----*/ /*-------------------------------------------------------------------------*/ #define FTLIBC16 #include "ftlibc.h" #define FUZZYDEFINED #define FLAGSDEFINED #include "PROJE.h" static FUZZY crispio[2+1]; extern FUZZY * const pcvproje= crispio; static FUZZY fuzvals[6+5+0]; //FUZZY * const pcvproje = crispio; static FUZZY tpts[24] = { 0x0000, 0x0000, 0x000F, 0x008D, 0x000F, 0x0082, 0x03FF, 0x0082, 0x0464, 0x0091, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, 0x00A0, 0x0000, 0x0080, 0x03FF, 0x0080, 0x0486, 0x00A0, 0xFFFF, 0x0000}; static FUZZY xcom[5] = { 0x0000, 0x0055, 0x026A, 0x0390, 0x03FF}; static BYTE rt0[45] = { 0x01, 0x01, 0x03, 0x1A, 0x07, 0x01, 0x01, 0x04, 0x40, 0x07, 0x01, 0x01, 0x05, 0x66, 0x06, 0x01, 0x01, 0x03, 0x1A, 0x09, 0x01, 0x01, 0x04, 0x80, 0x08, 0x01, 0x01, 0x05, 0x1A, 0x07, 0x01, 0x01, 0x03, 0x66, 0x0A, 0x01, 0x01, 0x04, 0x40, 0x09, 0x01, 0x01, 0x05, 0x1A, 0x07}; static FRAT frat0[6] = {
65
0x000F, 0x0000, 0x000F, 0x0001, 0x000F, 0x0002}; FLAGS proje(void) { fuzptr = (PFUZZY) fuzvals; tpptr = (PFUZZY) tpts; crisp = crispio[0]; bTNum = 3; flmss(); crisp = crispio[1]; bTNum = 3; flmss(); fuzptr = (PFUZZY) fuzvals; bTNum = 3; fratptr = (PFRAT) frat0; rtptr = (PFTBYTE) rt0; iMFMin(); /* Max-Min + FAM */ invalidflags = 0; fuzptr = &fuzvals[6]; xcomptr = (PFUZZY) xcom; crispio[2] = 0x200; bTNum = 5; defuzz = &crispio[2]; com(); return invalidflags; } void initproje(void) { for (fuzptr = &fuzvals[6]; fuzptr <= &fuzvals[10]; *fuzptr++ = 0); } /* |----------------------------------------------------| | Memory | RAM | ROM | |----------------------------------------------------| | Fuzzy Logic System | 28 (001CH) | 117 (0075H) | |----------------------------------------------------| | Total | 28 (001CH) | 117 (0075H) | |----------------------------------------------------| */
66
/*---------------proje.h----------------------------------------------------------*/ /*-------------------------------------------------------------------------*/ /*-------------------------------- typedefs -------------------------------*/ /*-------------------------------------------------------------------------*/ #ifndef FUZZYDEFINED /*--------- datatype for all computations in the fuzzy logic system -------*/ typedef unsigned short FUZZY; #define FUZZYDEFINED #endif #ifndef FLAGSDEFINED /*------------- datatype of return value of fuzzy logic system ------------*/ typedef unsigned short FLAGS; #define FLAGSDEFINED #endif /*----------------------- data only used by fuzzyTECH ---------------------*/ extern FUZZY * pcvproje; /*-------------------------------------------------------------------------*/ /*---- use the following #defines to set the inputs of the fuzzy system ---*/ /*-------------------------------------------------------------------------*/ #define hata_proje (*(pcvproje+ 0)) /* 0000H .. 07FEH */ #define ivme_proje (*(pcvproje+ 1)) /* 0000H .. 07FEH */ /*-------------------------------------------------------------------------*/ /*---- use the following #defines to get the outputs of the fuzzy system --*/ /*-------------------------------------------------------------------------*/ #define power_proje (*(pcvproje+ 2)) /* 0000H .. 03FFH */ /*-------------------------------------------------------------------------*/ /*--------------------------- function prototypes -------------------------*/ /*-------------------------------------------------------------------------*/ /*------- for starting up the generated fuzzy logic system, call once -----*/ void initproje(void); /*-------------- for calling the generated fuzzy logic system -------------*/ FLAGS proje(void); /* ANA_Program.h */ #include <16F877.h> #device *=16
67
#device adc=10 #FUSES NOWDT, HS, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG #use delay(clock=20000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) /* ANA_Program.c */ #include "C:\X\proje_rapor\ANA_Program.h" #include "proje.c" #include "Hf2p.c" #include "Himfmin.c" #include "Hdcom.c" #include "Hdmom.c" #include <math.h> flags x; BYTE bTNum; FUZZY crisp; FLAGS invalidflags; PFRAT fratptr; PFUZZY tpptr; PFUZZY fuzptr; PFUZZY xcomptr; PFUZZY defuzz; PFTBYTE rtptr; long Hava_ihtiyaci, kompresor_3_rpm, kompresor_4_rpm,Motor3_4_istenen_RPM,error,acceleration, previ_value; short Motor_1_devrede, Motor_2_devrede; float kompresor_3_rpm_real,kompresor_4_rpm_real,toplam_devir,istenen_Toplam_Devir,FARK; void main() { setup_adc_ports(AN0_AN1_AN3); setup_adc(ADC_CLOCK_INTERNAL); setup_psp(PSP_DISABLED); setup_spi(FALSE); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DIV_BY_1,255,1); setup_ccp1(CCP_PWM); initproje(); Motor_1_devrede=Motor_1_devrede=0; ///// MAIN BLOK /////// while(true) { ///// SYSTEM CONTROLLER/////// set_adc_channel(0); delay_us(100);
68
Hava_ihtiyaci=read_adc(); set_adc_channel(1); delay_us(100); kompresor_3_rpm=read_adc(); set_adc_channel(3); delay_us(100); kompresor_4_rpm=read_adc(); kompresor_4_rpm_real=(float)kompresor_4_rpm*(float)2760.0/(float)1023.0; kompresor_3_rpm_real=(float)kompresor_3_rpm*(float)2760.0/(float)1023.0; istenen_Toplam_Devir=(float)Hava_ihtiyaci*(float)11040.0/(float)1023.0; toplam_devir= kompresor_3_rpm_real+kompresor_4_rpm_real; if ((istenen_Toplam_Devir>3312) && (Motor_1_devrede==0)) { Motor_1_devrede=1; } if ((istenen_Toplam_Devir<2500) && (Motor_1_devrede==1)) { Motor_1_devrede=0; } if ((istenen_Toplam_Devir>7350) && (Motor_2_devrede==0)) { Motor_2_devrede=1; } if ((istenen_Toplam_Devir<6650) && (Motor_2_devrede==1)) { Motor_2_devrede=0; } if ((Motor_1_devrede==1) && (Motor_2_devrede==1)) { FARK=istenen_Toplam_Devir -2760.0-2760.0; } if (((Motor_1_devrede==1) && (Motor_2_devrede==0)) || ((Motor_1_devrede==0) && (Motor_2_devrede==1))) { FARK=istenen_Toplam_Devir -2760.0; } if ((Motor_1_devrede==0) && (Motor_2_devrede==1)) { FARK=istenen_Toplam_Devir; } Motor3_4_istenen_RPM=(LONG)ceil(FARK); error= Motor3_4_istenen_RPM-(LONG)ceil(toplam_devir)+1023; acceleration=1023+(LONG)ceil(toplam_devir)-previ_value; previ_value=(LONG)ceil(toplam_devir); ///// END of System Block ///// /// Fuzzy Controller //// hata_proje =error; ivme_proje=acceleration; x=proje();
71
ÖZGEÇMİŞ
Serdar Karadeniz, 1975 yılında Denizli’ nin Tavas ilçesinde doğdu. İlk, orta ve lise eğitimini Tavas’ da tamamladı. 1992 yılında O.D.T.Ü. Elektrik-Elektronik Mühendisliği Bölümüne girdi. 1997 yılında bu bölümden mezun oldu. 1997 yılında Aselsan’ da AR-GE mühendisi olarak çalışmaya başladı. 1998 yılında O.D.T.Ü. Elektrik-Elektronik Mühendisliği Bölümünde yüksek lisans eğitimine başladı. 1999 yılında yüksek lisans eğitimini tamamlamadan askere gitti. 2000 yılında askerlik görevini bitirdi. Aynı yıl Erbakır A.Ş. ‘de çalışmaya başladı. 2003 yılında Pamukkale Üniversitesi Elektrik-Elektronik Mühendisliği Bölümünde yüksek lisans eğitimine başladı. Evli olan Serdar Karadeniz’ in, Şevval ve Şimal adında iki kızı vardır.