çoklu kompresör sisteminin bulanık mantık ile kontrolü

83

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();

69

set_pwm1_duty(power_proje); set_pwm2_duty(power_proje); } }

70

Ek-4

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.