Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
729G11 – ARTIFICIELL INTELLIGENS 2, LINKÖPINGS UNIVERSITET
Fuzzy Logic
Caroline Allmér, caral281
2011-09-19
Innehåll
Innehåll ....................................................................................................................................... 2
1. Inledning ................................................................................................................................. 3
2. Hur det fungerar ..................................................................................................................... 4
2.1 Crisp-set och fuzzy set ..................................................................................................... 4
2.2 Lingvistiska variabler ....................................................................................................... 5
2.3 Medlemsfunktioner .......................................................................................................... 5
2.4 Operationer ....................................................................................................................... 7
2.5 Modifierare ....................................................................................................................... 7
3. Fuzzy Logic kontrollsystem ................................................................................................... 8
3.1 Preprocessing ................................................................................................................... 9
3.2 Fuzzification ..................................................................................................................... 9
3.3 Rule Base .......................................................................................................................... 9
3.4 Inference Engine .............................................................................................................. 9
3.5 Defuzzification ............................................................................................................... 10
3.5.1 Centre of gravity (COG) : ....................................................................................... 11
3.5.2 Mean of Maxima (MOM): ...................................................................................... 11
3.5.3 Leftmost Maxima (LM) och Rightmost Maxima (RM) .......................................... 11
3.6 Postprocessing ................................................................................................................ 12
4. Diskussion ............................................................................................................................ 12
5. Referenser ............................................................................................................................. 13
3
1. Inledning
Detta arbete handlar om Fuzzy Logic. Arbetet går igenom grunderna hur Fuzzy Logic
fungerar och även hur ett Fuzzy Logic kontrollsystem är uppbyggt. Arbetet bygger helt på
artiklar och böcker som är skrivna inom ämnet, inget nytt tillförs alltså i detta arbete. Främst
är det artiklarna skrivna av Jantzen (1998 och 2006) som används, men även andra artiklar har
nyttjats (se referenslistan).
4
2. Hur det fungerar
Fuzzy logic, på svenska kan man säga ”oskarp logik”, är en alternativ logik som påbörjades
under 1960-talet av L.A Zadeh. Anledningen till att fuzzy logic utvecklades var att första
ordningens predikatlogik (FOPL) bara kan hantera två värden, oftast sant (som brukar tilldelas
värdet 1) och falskt (som brukar tilldelas värdet 0). Denna metod har fungerat bra för de flesta
predikat, men när predikat behandlar saker som inte endast kan uttryckas genom sant eller
falskt, som tillexempel om man vill beskriva någons längd, så räcker FOPL inte riktigt till. Då
människor delar in längder i fler delar än lång och kort, kan det uppfattas som begränsande att
säga att människor är antingen korta eller långa, mellanvärden är därför nödvändiga för att
skapa nyanser. Detta är ett problem som fuzzy logic behandlar, det inför en grad av
medlemskap istället för endast sant eller falskt, så kallade fuzzy sets. Fuzzy logic är ett sätt att
dra slutsatser ur oprecis och vag information och det arbetar efter en regelbas istället för efter
matematiska formler.
2.1 Crisp-set och fuzzy set
I fuzzy logic skiljer man mellan så kallade crips-sets och fuzzy-sets. Ett crips-set är ett set som
endast kan vara sant eller falskt, ett statiskt predikat, som används inom till exempel FOPL.
Ett fuzzy set är däremot är inte fast, utan det får istället ett medlemskap i en kategori som
benämner hur mycket medlem objektet är i den kategorin. För att fortsätta med längd-
exemplet; säg att om en person är 180 centimeter så definieras den som lång. I ett crips-set
skulle det betyda att så fort någon var 180 centimeter så är personen lång, medan en person
som är 179,3 centimeter lång faller utanför kategorin och värdet blir falsk trots den marginella
skillnaden. Ett fuzzy set, däremot skulle ge dessa längder grader av medlemskap i
kategorierna ”lång” och, till exempel ”medellång”. En person som är 179,3 cm lång skulle då
få ett tämligen högt medlemskap i kategorin lång, och lågt medlemskap i kategorin medellång
vilket är en bättre beskrivning på hur människor tolkar längder än vad crisp-set:en är. Figur 1
illustrerar detta.
Figur 1. En illustration av set:en "lång", ett i crisp-format och ett i fuzzy-format. Källa: Jantzen, 2006
5
2.2 Lingvistiska variabler
Skillnaden mellan fuzzy logic och övriga logiker är det att fuzzy logic tar ord som värden, så
kallade lingvistiska variabler, och inte tal. De lingvistiska variablerna innehåller olika
lingvistiska värden, så kallade term sets, och dessa värden är ett fuzzy set. Som exempel kan
man ta en lingvistisk variabel l som heter längd. Den har ett term-set, M, som innehåller de
olika fuzzy seten kort, medellång, lång. De olika fuzzy seten är definierade i Universumet, till
exempel i intervallet 1- 220 centimeter. Man kan skriva detta som:
( ) * +
För att ett fuzzy logic system ska kunna fungera måste man först definiera det så kallade
Universumet. Universumet innehåller alla objekt som kan förekomma i olika fuzzy sets.
2.3 Medlemsfunktioner
För att kunna avgöra om ett objekt är medlem i ett set så måste objekt x vara medlem i setet
X. Att ett objekt x tillhör setet X skrivs såhär:
och det måste vara sant för att man ska kunna bestämma medlemskapen, vilket görs enligt
följande medlemskapsfunktion:
, -
U är universumet som x finns i och är graden av medlemskap som x får och det ligger
mellan värdena 0 och 1.
Ett fuzzy set kan alltså skrivas såhär:
*( )+
X är ett fuzzy set, x är ett objekt i setet och är graden av medlemskap som x har i setet. För
att tilldela objekt grader av medlemskap så måste det definieras mellan vilka värden graderna
av medlemskapet ligger, vanligtvis är detta mellan 0 och 1, där 0 betyder att objektet x inte
alls är medlem i setet och 1 betyder att det definitivt är det. Allt däremellan anger till vilken
grad x är medlem i setet.
Om ett fuzzy set endast innehåller ett värde kallas det för fuzzy singleton. Det har en
medlemsfunktion som endast är sant (medlemskapet = 1) vid ett specifikt värde och falskt för
alla andra värden.
6
Det finns flera olika medlemskapsfunktioner som man kan använda sig av inom fuzzy logic.
De vanligaste är trapezodial- och triangelfunktionerna samt Gaussianfunktionen. Dessa kan
man använda för att rita upp ett fuzzy set och räkna ut vilken medlemsgrad olika
medlemmarna i setet har. Medlemsfunktionerna utvecklas ofta av personer som har
expertkunskap inom det område som funktionen ska fungera, då värdena på seten måste
definieras, till exempel att kort är man om man är mellan 70 och 130 centimeter. En
trapezoidal funktion kan man rita upp genom att använda följande funktion:
( )
{
}
x i funktionen är värdet för ett objekt i det fuzzy set som används. är de fyra
hållpunkterna för funktionen, där a är den nedre gränsen för funktionen (det första objektet
som är medlem i set:et, om man till exempel har ett fuzzy set ”kort” som är definierat mellan
70-130 centimeter så är 70 den nedre gränsen), b är det första värde som har det högsta
medlemsvärdet, c är det värde som får den sista högsta medlemsfunktionen och d är den sista
medlemmen i set:et.
En vanlig medlemsfunktion är triangular, och den ekvationen ser
likadan ut som den för trapezoidal-funktionen förutom att b=c (det
finns bara en topp).
En annan medlemsfunktion som används frekvent inom Fuzzy
Logic är Gaussian-funktionen som genererar en jämn och slät kurva, där den högsta punkten
kan vara 1. Ekvationen för den är:
( ) [ .
/
]
7
Där x står för medlemsfunktionen, x0 står för funktionens topp relativt mot universumet, och
är standard deviationen.
Ett objekt kan vara medlem i flera set, vanligtvis eftersträvas att varje objekt ska vara med i
två set, att de ska överlappa varandra med undantag för ändarna. Detta för att luckor mellan
två sets ska undvikas. Skulle det bli en lucka mellan seten så ökar risken för att värdena inte
plockas upp av systemet och det skickar tillbaka inkorrekt och oprecis information som resten
av systemet jobbar vidare med. Genom att med säkerhet veta att alla värden är representerade
så har systemet de bästa förutsättningarna att utföra sitt arbete.
2.4 Operationer
Det finns flera olika operationer som kan användas på fuzzy sets och de vanligaste är union
och intersection. Om vi har två fuzzy sets, X och Y så skrivs dessa operationer som följer:
( )
( )
betyder att man unifierar alla medlemmar som finns i X och Y, om X till exempel
innehåller {a,b,c,d} och Y innehåller {c,d,e,f} så unifieras dessa och blir {a,b,c,d,e,f}. Sedan
går operationen igenom alla element i unifieringen och återger det element som har högst
medlemsvärde.
betyder att de enda elementen som är kvar är de element som finns i både set X och i
set Y, vilket om man utgår ifrån exemplet ovan blir {c,d}. När operatorn har tagit reda på
vilka objekt som är medlemmar i både set X och set Y så går den igenom dessa medlemmar
och återger det element som har det minsta medlemsvärdet.
2.5 Modifierare
I fuzzy logic kan man också använda sig av så kallade modifierare. Modifierare är ord som
ändrar innebörden av ett fuzzy set vilket gör att man kan använda sig av modifierare istället
för att lägga till ett helt nytt fuzzy set, vilket utan modifierare lätt kan bli väldigt många.
Exempel på olika modifierare som finns är extremt, väldigt, ganska och lite. Om man sätter
dessa modifierare framför ett fuzzy set, till exempel så kanske man skriver väldigt kort, och
då uppdateras medlemskapen i fuzzy setet kort och representerar istället den lingvistiska
termen väldigt kort.
8
Det finns fasta operatorer för att räkna om fuzzy sets när de blir modifierade. För
modifieraren extremt så blir medlemsvärdena i fuzzy setsen tre gånger så stora, det vill säga
om kort är ett fuzzy set med medlemsvärdena {1; 0,7;0,4;0,1} så blir medlemsvärdena för
extremt kort {1;0,343, 0,064, 0,001)}
* ( ) | ( ) ( ) +
På samma sätt fungerar de andra modifierarna. För modifierare som ökar medlemskapsvärdet
i ett fuzzy set så kvadreras medlemsvärdet med ett lämpligt tal och för att beskriva minskande
medlemskap så tas kvadratroten ur medlemskapsvärdet. I följande ekvationer står k för ett
heltal, x är ett objekt med medlemsvärdet ( ) och X är universumet.
* ( ) | ( ) ( ) +
{ ( ) | ( )
( ) }
3. Fuzzy Logic kontrollsystem
Figur 2 visar ett schema för ett fuzzy logic kontrollsystem. Ett Fuzzy kontrollsystem används
bland annat i tekniska apparater, som till exempel luftkonditionering, tåg operationssystem
och kärnkraftskontroller. Skillnaden mellan ett Fuzzy kontrollsystem och ett ”vanligt”
kontrollsystem är att ett Fuzzy kontrollsystem är mer lik männskligt tänkande och
resonerande än ett vanligt matematiskt system. Det kan fånga upp det ungefärliga, det
inexakta som ofta existerar i den riktiga världen, men som ett matematiskt kontrollsystem inte
tar hänsyn till.
Figur 2. Ett Fuzzy Logic kontrollsystems uppbyggnad. Bilden är från Jantzen (2006).
9
3.1 Preprocessing
Den information som skickas in till systemet är ofta ett crisp-värde som maskinen själv har
fått fram, genom att till exempel mäta en längd eller ta en temperatur. Detta värde är inte alltid
helt korrekt och vissa korrigeringar görs så att systemet kan hantera det så korrekt som
möjligt. Till exempel kan preprocessing stadiet runda av inputvärdet så att det passar in i
universumet. Om universumet är definierat som U = (1,2,3,4) och inputvärdet är 3,5 så
avrundas det till 4 för att passa in på den närmaste nivån. Preprocessingen kan även försöka
reducera bort olika störningar genom filtrering så att värdet blir så korrekt som möjligt.
Preprocessing handlar om att normalisera input-data så att den kan användas av systemet.
3.2 Fuzzification
Under det här stadiet så gör systemet om input-värdet, som ofta är ett crisp-värde till ett
fuzzy-värde genom att göra om inputvärdet till grader av medlemskap. Detta görs genom att
titta igenom den eller de olika medlemskapsfunktionerna som finns och matcha inputvärdet
gentemot dem. Det kan generellt skrivas såhär:
( )
( )
där ( ) = 1 är medlemsvärdet för objekt x’ i ett fuzzy set (M i det här fallet) och den nya
inputen, x:s medlemsvärde i detta setet minskar ju längre ifrån x’ det är. På detta sätt kan man
avgöra hur mycket medlem en ny input är i ett set. När detta är avgjort så skickas
informationen vidare till inference engine.
3.3 Rule Base
Regelbasen innehåller systemets alla regler, oftast skrivna enligt OM X SÅ Y, där X och Y är
fuzzy sets. Dessa regler sparas vanligtvis i matriser vilket är ett mer kompakt sätt att
representera reglerna, för en ovan användare kan det dock vara svårare att förstå jämfört med
om de är utskrivna. Alla regler i regelbasen använder samma konnektiv, ofta and eller or men
de blandar aldrig.
3.4 Inference Engine
Inferencen är en väldigt viktigt del i ett Fuzzy Logic system. Den är direkt kopplad till
regelbasen och matchar inputen som den har fått från fuzzification-steget med reglerna som
10
finns i regelbasen för att generera en output som representerar den ändring som ska ske. Man
kan säga att inference engine besår utav tre steg; aggregering (som kan översättas till
sammanklumpning), aktivering och ackumulering (ansamling).
Det första steget är aggregation som är en operator som räknar ut graden av uppfyllande eller
firing strength, , för villkoret för en regel, r. Regeln kommer att generera ett fuzzy
medlemsvärde för detta villkor och om en regel består av två villkor, till exempel ”om X och
Y så Q” så genereras medlemsvärdet för båda villkoren.
Aggregation-outputen går sedan vidare till steg två i inference engine, nämligen aktivering
Aktiveringen av en regel är slutledningen av regeln, konsekvensen, vilket blir reducerat av
firing strength, alltså värdena som kommer från aggregation. Som aktiverings operator
används oftast min eller max, beroende på reglernas utformning. Om reglerna består av flera
premisser, till exempel ”om A och om B så…” så används min operatorn, men om reglerna är
”om A eller om B så…” så används max operatorn. Min operatorn ”klipper av”
konsekvensens fuzzy set så att det representerar en output som gäller för det minsta
medlemsvärdet för försatsen. Detta för att det inte är troligare att konsekvensen gäller än vad
det är troligt att försatsen uppfylls. Max operatorn däremot ”klipper av” konsekvenssetet så att
det representerar en output som gäller för det högsta medlemsvärdet. Detta för att om en av
försatsen villkor uppfylls så gäller även konsekvensen. För exempelregeln som skrevs ovan i
aggregation stycket, så betyder detta att fuzzy setet ståtlig ”klipps av” så att det gäller för
dessa specifika inputs.
Det sista steget i inference engine är ackumelering som samlar ihop alla aktiverade slutsatser,
och detta görs genom max operatorn (unifiering). Det leder till en graf som består av alla
slutsatser från reglerna som aktiverats. Denna graf skickas sedan vidare till defuzzification-
processen.
3.5 Defuzzification
För att en ändring ska göras så måste outputen vara ett fixerat, bestämt värde. Till exempel
går det inte att beordra en maskin att öka trycket lite, det vill säga outputen från ett fuzzy-
system måste vara ett fixt värde. För att få ett fixt värde så måste man defuzzifisiera det värdet
som skickades från inference engine. Det finns flera olika metoder för att göra detta och några
av de vanligaste är:
11
3.5.1 Centre of gravity (COG) :
Denna metod är vanlig att använda för defuzzification, dock är uträkningskomplexiteten
ganska hög. Den räknar ut arean under grafen från det fuzzy set som inference engine
skickade vidare. Ekvationer ser ut såhär:
∑ ( )
∑ ( )
Där är en flytpunkt i ett diskret universum och ( ) är den punktens medlemskapsvärde i
medlemskapsfunktionen. Alltså tas summan av alla element multiplicerade med sina
medlemskapsfunktioner, ( ) och divideras med summan av alla medlemskapsfunktioner.
Då får man ut grafens mittpunktsvärde, vilket är outputen man skickar vidare till
postprocessingen.
3.5.2 Mean of Maxima (MOM):
Den här metoden tar de högsta värdena för det fuzzy set som är outputen och skickar tillbaka
det värdet som har högsta medlemskapen. Om det finns flera värden i setet som har väldigt
hög medlemskap så räknar den istället ut medelvärdet för dessa värden, därav namnet på
funktionen.
∑* | ( ) ( ( ))+
Täljaren är summan av alla de objekten som har högst värde och m står för det totala antalet
objekt som är med i ekvationen.
3.5.3 Leftmost Maxima (LM) och Rightmost Maxima (RM)
Ytterligare defuzzification metoder är Leftmost Maxima och Rightmost Maxima, vilka
innebär att det värde som är längst till vänster respektive åt höger som har högst
medlemsvärde väljs. Dessa är användbara i till exempel robot-system, där en robot måste
välja att gå antingen åt höger eller åt vänster för att inte undvika hinder, och då vill man inte
att den ska välja ett medelvärde (då kommer roboten förmodligen gå in i hindret i alla fall)
utan den ska svänga tydligt åt höger eller vänster. Nedan visas formlernas funktioner.
Leftmost Maxima: { | ( ) ( ( ))}
Rightmost Maxima: { | ( ) ( ( ))}
är medlemsfunktionen och x är en flytpunkt i universumet.
12
3.6 Postprocessing
Postprocessing är det sista steget i ett Fuzzy kontoll system. Trots att defuzzification-steget
har skickat ut ett crisp-värde så är det inte säkert att det går att använda direkt. Ofta kan
crispvärdet man behöva göras om då det utgår ifrån de mått som universumet är satt till (ofta
mellan 0 och 1) och det kan behövas göras om till SI-enheter så att systemet kan göra korrekta
ändringar.
4. Diskussion
Fuzzy Logic är ett bra sätt att uttrycka saker som inte enbart kan vara sant eller falskt. Det ger
även en möjlighet för systemet att reglera sig och göra ändringar innan problem blir allvarliga.
Säg att ett avkylningssystem i till exempel en kärnkraftsanläggning använder sig av fuzzy
logic. Om den då märker att vattnets temperatur har ett medlemsvärde som är närmare varmt
än kallt och det ska vara kallt så kan den åtgärda det. Ett vanligt sant/falskt system skulle inte
göra några ändringar förrän vattentemperaturen har gått över gränsen och verkligen är varmt.
System som använder Fuzzy Logic kan i och med att de använder lingvistiska variabler och
på så vis är mer lika det sätt som människor tänker vara mer användarvänliga för människor
som inte jobbar med eller håller på mycket med datorer. Till exempel kan Fuzzy Logic
användas i luftkonditionerare, då kan man ställa in att man vill ha det ”svalt” i sitt rum och
behöver inte fundera på vilken exakt temperatur det är utan systemet ser hela tiden till att det
är en behaglig temperatur i rummet.
Kritik mot fuzzy logic är bland annat att den är oprecis och att det inte behövs, att man kan
uttrycka samma saker med första ordningens perdikatlogik eller probabilistisk logik, vilket
gör fuzzy logic överflödigt.
Personligen tycker jag att fuzzy logic är en tänkvärd logik, att man kan uttrycka saker som är
mitt emellan sant och falsk är bra. Även om det kan vara sant att man kan göra program som
kan lösa samma sorts uppgifter som fuzzy logic system så kan fuzzy logic vara bra att
använda då det är enklare att implementera.
13
5. Referenser
Artiklar
Dote, Y. Introduction To Fuzzy Logic Besökt 5/9 kl 10.00
http://ieeexplore.ieee.org.lt.ltag.bibl.liu.se/stamp/stamp.jsp?tp=&arnumber=483332
Hellermann, M. Fuzzy Logic Introduction Besökt 5/9 kl 11.00
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.85.9757&rep=rep1&type=pdf
Jantzen, J. Tutorial on Fuzzy Logic. Besökt 5/9 kl 12.00
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.125.2096&rep=rep1&type=pdf
Jantzen, J. Design Of Fuzzy Controllers Besökt den 9/9 kl 10.00
http://site.iugaza.edu.ps/mahir/files/2010/02/design.pdf
Yong-Hua Song and Allan T. Johns: Applications of fuzzy logic in power systems Part 1
General introduction to fuzzy logic. Power Engineering Journal, 11 (5). Oct 1997 pp 219-222
6/9 http://ieeexplore.ieee.org.lt.ltag.bibl.liu.se/stamp/stamp.jsp?tp=&arnumber=636809
Yong-Hua Song and Allan T. Johns: Applications of fuzzy logic in power systems Part 3
Besökt 7/9 kl. 10.00
http://ieeexplore.ieee.org.lt.ltag.bibl.liu.se/stamp/stamp.jsp?tp=&arnumber=765695
Zadeh, LA. Fuzzy Logic Besökt 6/9 kl 10.00
http://www.geocities.ws/hhvillav/00000053.pdf
Böcker
Russell, S & Norvig, P. Artificial Intelligence, A Morden Approach, pp 550-551
Passino, K.M & Yurkovich, S. Fuzzy Control. 1998 Addison-Wesely Longman Inc .
http://www.google.se/url?sa=t&source=web&cd=6&ved=0CEwQFjAF&url=http%3A%2F%2Fciteseerx.ist.psu.
edu%2Fviewdoc%2Fdownload%3Fdoi%3D10.1.1.131.4494%26rep%3Drep1%26type%3Dpdf&rct=j&q=Leftm
ost%20maxima%20fuzzy%20logic%20example&ei=ActxTqDmAYvU4QT82MyrCQ&usg=AFQjCNGVCmgv
UcdUc8lG9HCRIDYBEM5f5w&sig2=geRWv2A57t9DQSGctTJ1Nw