Fuzzy Logic och dess implementering i ett företagsspel Phian632 Philip Anzén Linköpings Universitet Artificiell Intelligens II, 729g11 2012-09-16
Innehåll 1. Inledning...3 2. Översikt av Fuzzy Logic...4 3. Fuzzy sets Vs Crisp sets...5 4. Lingvistiska inverkan i Fuzzy Logic...5 5. Medlemskaps funktioner...7 6. Operationer...9 7. Modifierare...10 8. Fuzzy Logic implementering i ett företagsspel...12 8.1 Fuzzy decision making system...12 8.2 Spelets grunder och utförande av FDMS/FDMSB...16 9. Slutsats...18 10. Referenser...19 2
Inledning I den här uppsatsen kommer grunderna av Fuzzy Logic att tas upp samt hur detta kan användas för att skapa ett företagsspel. Detta företagsspel är uppbyggt med hjälp av Fuzzy Logic och hur detta är gjort kommer att introduceras. Uppsatsen bygger helt på tidigare skrivna artiklar och ingenting nytt kommer att läggas till. 3
Översikt av Fuzzy Logic Fuzzy Logic är ett användbart verktyg för att hantera oskarpa definitioner. Med detta menas att man kan hantera värden som inte bara är sanna eller falska. Detta är därmed ett alternativ till predikat logiken då den endast hanterar sanna eller falska värden. Fuzzy Logic togs fram av en man vid namn Zadeh under 1960 talet och detta gjordes just för att få fram ett sätt att hantera saker som inte är svart eller vitt. Varför detta behövs är för att vi i vårt naturliga språk använder många uttryck så som medellång eller ljummet osv och dessa grå zoner i språket kan med hjälp utav Fuzzy Logic hanteras maskinellt. Fuzzy Logic gör detta möjligt då det istället för att jobba med fasta värden för något som true=1 och false =0 så jobbar den med mängder och hur mycket något är med i ett set eller inte, en typ av medlemskaps grad. Dessa sets som kallas Fuzzy sets skapas genom att man definierar vad som är tex kallt, ljummet och varmt och sedan räknar man ut hur stor del av varje ett särskilt värde gäller för. Dessa värden måste alltid adderas till 1 då de ger en procent av hur mycket något tillhör ett visst set. Detta gör det sen möjligt för maskiner och annat att kunna fatta logiska beslut utefter en regelbas trots att värdena inte bara är sanna eller falska som i predikat logiken och därmed behöver den inte jobba efter matematiska formler då den har regelbasen att gå efter. 4
Fuzzy sets vs Crisp sets Det finns två olika typer av sets som måste förklaras inom Fuzzy Logic. Dessa är det sk Fuzzy sets som ger hur mycket något är en del av en definition och Crisp sets är de sets som innehåller statiska predikat som då alltså arbetar som i predikat logiken som antingen sanna eller falska. Till skillnad från Crisp sets så arbetar alltså Fuzzy sets med att skapa medlemskap i kategorier och utifrån det kan man beräkna hur mycket ett objekt är med i den luddiga kategorin. Ett exempel på detta är om en person är svag eller stark. Genom att definiera tex att om en person klarar 10 armhävningar så är den stark då skulle detta i ett crisp set betyda att någon som klarar 9 armhävningar skulle vara svag även fast skillnaden är så pass liten. Det är här Fuzzy sets kommer till användning då man istället kan visa att personen som klarat 9 armhävningar är 0.9 stark och 0.1 svag. På det här sättet kan man alltså bearbeta saker som lingvistiskt sätt är ganska luddiga och man får då ett bättre människolikt rationaliserande av luddiga lingvistiska variabler jämfört med det hårddragna crisp set där detta inte är möjligt. Figur 1. Illustrerar ett crisp set och ett fuzzy set av medelålder och gammal ålder. Taget från Yasuhiko Dote, Introduction to Fuzzy Logic (se referenslista). Lingvistiska inverkan i Fuzzy Logic Tidigare nämnt så används ord som värden inom Fuzzy Logic. Detta är en stor skillnad om man jämför med tidigare nämnda logiska beräkningsätt som tar tal som värden. Dessa ord kallas för lingvistiska variabler och är dem man kopplar till det olika lingvistiska värdena. Dessa värden är sen det som kallas för term sets och dessa är det Fuzzy sets som ovan förklarats. För att gå tillbaka till exemplet ovan så skulle då den lingvistiska variabeln kunna vara S som står för styrka. Den har sen i sin tur det så kallade term setet som vi kan döpa till A, detta A innehåller då det två Fuzzy seten i detta fall svag och stark. Dessa Fuzzy setsen 5
måste då finnas representerade i det Universum man använder som i det här fallet är antal armhävningar låt säga mellan 0-20. Allt detta blir då en formel som ser ut på detta sätt: A(styrka) = {svag, stark} Universumet är alltså något som man skapar själv för sitt specifika fall och i detta universum måste alla objekt som man kan tänka sig att ha med som Fuzzy sets finnas med. Detta krävs för att Fuzzy Logic ska kunna fungera och med det menas att om inte alla objekt finns med så kommer den inte heller att räkna ut en korrekt delmängd av hur mycket något tillhör en kategori. Dessa objekt måste även kunna avgöras om dom är med i ett set eller inte. Detta görs genom att se till så att objekt x är medlem i setet X. Detta skriver man ut på följande sätt: Detta måste sedan vara sant för att man skall kunna utgöra hur stort medlemskap något har. Detta görs med följande medlemskaps funktion: I den här medlemskaps funktionen så introduceras ytterligare tecken. Det stora U står för universumet och i universumet så existerar x och µ x står för den mängd av medlemskap som x får och det kommer alltid att vara mellan värdena 0-1 oavsett om flera objekt introduceras. Med dessa nu introducerade så kan man sedan skriva ut hela sitt Fuzzy set. Detta görs på följande sätt: X = {(x,µ x )} Det här visar alltså att X är ett Fuzzy set där x är ett objekt i setet och µ x är den mängd/grad som x är medlem i setet. För att kunna utgöra denna grad av hur mycket ett objekt är en mängd av ett set så måste det här introduceras värden. Dessa värden är oftast en intervall mellan 0-1 som visats ovan, desto närmare 0 ett objekt hamnar i medlemsgraden desto mindre medlem i setet är det och ju närmare 1 desto högre medlems grad har det. Detta fungerar bra om man har två olika värden så som tex stark och svag för då kan man få en medlemskaps grad för objektet i dessa två olika variabler. Men då är frågan hur detta kan 6
hanteras när det bara finns ett värde, detta kallar man för Fuzzy singelton. Detta hanteras med en medlemsfunktion som endast kan vara sann eller falsk. Det man gör här är att man bestämmer för vilket värde som medlemsfunktionen är sann (tex medlemsgrad = 1) och då är resterande värden falskt. Medlemskaps funktioner Dessa medlemskapfunktioner är en essentiell del för att systemet skall fungera korrekt och det finns många olika varianter av dem. Det funktioner som oftast dyker upp är trapezodialfunktioner, triangelfunktioner och Gaussianfunktionen. Dessa görs oftast med hjälp av experter inom det område som funktionen skall användas i. Så om det skall användas i det tidigare exemplet med stark och svag så görs det av en expert inom området styrka. Detta krävs då värdena måste definieras för vad som i det här fallet faktiskt är stark och svag för att systemet skall kunna rationalisera så bra som möjligt. En trapezodial funktion ser ut på följande vis: Figur 2. Taget ur Jantzen samt wiki sida (Se referenslista). I grafen som visar en trapezodial funktion så kan vi säga att ix1= a, ix2=b, ix3=c och ix4=d. Därmed står alltså x i funktionen för objektets värde i Fuzzy setet. Det andra a, b, c, och d är dem fyra brytpunkterna i funktionen, där a står för den lägsta punkten i funktionen, b den första högsta punkten, c det sista högsta samt d den sista punkten i setet. Sen har vi den vanliga triangulära medlemskaps funktionen. Denna funktion är exakt samma som den för trapezodial förutom att istället för att ha två högsta brytpunkter så är det bara en, dvs b=c. 7
Detta eftersom det bara finns en topp i en triangulär form: Figur 3. Taget ur Jantzen, Tutorial on Fuzzy Logic (se referenslista). Denna trapezodial funktion är en så kallad "continous function" alltså en pågående funktion. Men en annan typ av funktion är den tidigare nämnda Gaussian funktionen. Denna är till skillnad från den trapezodiala funktionen diskret och inte pågående. Skillnaden på att använda den klassiska trapezodial funktionen och den Gaussianska funktionen är att med den trapezodiala så får man en skarp graf medans med den Gaussianska så får man en slät graf. Denna funktion ser ut på följande vis: Figur 4. Taget ur mathworks, (se referenslista). I den här ekvationen så står x för medlemsfunktionen, medan x 0 står för funktionens topp i relation till universumet samt att σ står för standard deviationen. Lägger man då in dessa värden så får man alltså ut en slät kurva istället för en skarp som i trapezodial funktionen. Det finns även praktiska skillnader mellan dessa funktioner då den pågående funktionen ("continous function") är mer krävande än den diskreta men dock mindre minnes krävande. Detta eftersom den pågående funktionen kan kräva längre tid för uträkningen medans för den diskreta så måste den veta alla värden som är med och om det är många värden så krävs alltså mera minne än i den pågående. 8
Något som även är viktigt att påpeka när det gäller medlemsfunktioner är reglerna som finns när det existerar ett objekt som är medlem i flera set. Det viktiga med det här är att oftast så vill man att ett objekt ska vara medlem i flera set av den anledningen att man vill undvika luckor mellan två set. För om man har objekt som är medlem i flera set så integreras linjerna bättre och man slipper oftast dessa luckor. Dessa luckor vill man alltså undvika för att risken att information missas och blir inkorrekt ökar. Det här kan i sin tur leda till att det system som använder detta jobbar vidare med felaktig information vilket leder till att systemet blir mindre användbart och korrekt. Därmed vill man försöka undvika luckor mellan seten så att man med säkerhet vet att systemet har alla värden representerad så att det blir så användbart och precist som möjligt. Operationer I vanlig set teori så finns det olika uttryck så som, "union", "intersect" och "complement". Dessa uttryck används för att jämföra olika set och vad dem innehåller. Union används för att förklara vilka objekt som finns i antingen setet X eller Y eller i båda. Detta betyder att om vi har ett två set som ser ut på följande sätt: X(1, 2, 3), Y(1, 3, 4) Då skulle unionen av dessa vara (1, 2, 3, 4). Nästa uttryck "intersect" innefattar det objekt som finns i både X och Y. Vilket i det här fallet skulle bli (1, 3). Till sist har vi "complement" och det innefattar ett set som innehåller det objekt som finns i universum men inte i set X tex. Så om vi har U(1, 2, 3, 4, 5) så skulle komplementet för set X vara (4, 5). Dessa regler skapar vissa problem inom Fuzzy Logic, detta pga det gradvisa medlemskapet av ett set. Detta blir ett problem eftersom att objektet 1 kan vara med i både set X och set Y men i Fuzzy Logic så kan det vara 0.3 medlem i X och 0.7 medlem i Y och detta gör att det blir svårt att göra detta med det vanliga unionsreglerna. Det man gör i detta fallet är att man använder sig utav operationer som ser ut på följande vis för union och intersect: Union: X U Y = max(x, Y) Intersect: X Y = min(x, Y) 9
Det dessa operationer gör är att för unionen av två set så unifierar den först alla objekten i X och Y som visats som tidigare exempel (1, 2, 3, 4). Det den sen gör är att gå igenom alla objekten och se vilket som har högst medlemsvärde och det objekt väljs då. För intersect operationen så gör den då först intersectionen av X och Y vilket i det tidigare exemplet blev (1, 3). Dessa ses sen över av operationen och det objekt med minst medlemsvärde väljs. På detta sätt kringgår man alltså problemet med det olika medlemsvärdena genom att för dem olika fallen välja det som antingen har störst eller minst medlemsvärde. Modifierare Nästa viktiga instans i Fuzzy Logic världen är modifierare. Modifierare behövs för att slippa skapa nya Fuzzy sets varje gång man önskar att ändra innebörden av ett set. Så om man har tex stark och svag så kanske man vill ändra till ganska stark eller extremt stark etc. Istället för att då skapa nya sets varje gång så använder man sig av modifierare framför setet. Dessa modifierar är just det ord man vill använda så som ganska, hyfsat, väldigt, extremt etc. Det som då händer med modifierare är att det uppdaterar medlemskapet i setet. Så om vi har ett Fuzzy set som är Stark, då kan man sätta modifieraren extremt framför detta så att det blir Extremt Stark. Detta gör då att setet uppdateras och representerar nu istället för stark den lingvistiska variabeln Extremt Stark. Detta är något som görs som tur är av operatorer som man redan skapat. Dessa operatorer gör om medlemsvärdena i setet automatiskt med hjälp av fasta uträkningsmetoder. Så om man då tex lägger till Väldigt till Stark så gör man upphöjt till 2 på medlemsvärdena. Så om du har ett set där universumet består av olika grader av stark U(3, 5, 8, 10) och medlemsvärdena av dessa är {0,3, 0,5, 0,8, 1} så blir dessa medlemsvärden efter modifieraren Väldigt lagts till {0,09, 0,25, 0,64, 1}. Denna ekvation ser ut på följande vis: Det man då gör här är som sagt att för ett exempel som skall bli större så som Väldigt så gör man alltså upphöjt till en lämplig siffra beroende på hur mycket större den lingvistiska modifieraren betyder. Men om man skall göra något mindre som tex ganska stark så kör man istället roten ur på värdet. detta ser ut på följande sätt: 10
"morl" står i det här fallet för "more or less", alltså mer eller mindre. Dessa ekvationer kan alltså generaliseras och användas på olika typer av modifierar och det enda som krävs är att man har en tydlig grad på hur stor skillnaden skall vara mellan de olika modifierarna som tex att väldigt skalla vara upphöjt till 2 i exemplet ovan. Det generella ekvationerna ser ut på följande sätt: Förstora A = {<x, µa(x)> µa(x) = µ k A(x), x X} Förminska A = {<x, µa(x)> µa(x) = µ 1/k A(x), x X} I ekvationerna står k för ett heltal, x är objektet med medlemsvärdet µ A (x) och X är universumet. 11
Fuzzy Logic implementering i ett företagsspel Efter att ha beskrivigt stora delar av hur Fuzzy Logic fungerar så är då nästa steg hur man kan använda detta som ett verktyg inom olika områden. Fuzzy Logic har ett relativt stort användningsområde i olika kontrollsystem så som värmesystem etc. Men det kan även användas till att hjälpa en agent att ta olika beslut inom spelande. Två personer vid namn Festus Oluseyi Oderanti och Philippe De Wilde (2010) har skapat ett datasimulerat företagsspel med hjälp av Fuzzy Logic och sedan skrivigt en artikel om detta. Artikelns rubrik lyder "Dynamics of business games with management of fuzzy rules for decision making". Det dem har byggt spelet på är grunderna av spel teori samt Fuzzy Logic. I den här delen av uppsatsen kommer inte grunderna av spel teori att tas upp utan fokus kommer att ligga på att förklara hur dem använt Fuzzy Logic i det hela. Men för att kunna göra det så krävs dock en förklaring om vad spelet går ut på i grund och botten. Spelet går ut på att två företag som inriktar sig på samma marknad skall kunna mötas i detta spel för att slåss mot varandra om marknadsandel samt vinster. Detta görs genom att företagen agerar som spelare i spelet sedan har man ett begränsat antal handlingar man kan göra varje runda. Dessa handlingar i det här fallet är beslut som företaget skall ta baserat på osäker information. Den här osäkra informationen är den information som spelaren har om motståndaren nuvarande eller förutsatta efterfrågan, kostnad av produktion, marknadsföring, konsolideringsansträngning samt några andra företags variabler. Det är den här osäkra informationen som modelleras med hjälp av Fuzzy Logic. Det som sedan är tanken är att ena företaget spelas av den så kallade "Fuzzy agenten" medans den andra spelas av "människa agenten" för att slåss om vilka resurser som skall användas och när baserat på den osäkra informationen man har, för att ta över så stor marknadsandel samt vinst som möjligt. Grunden byggs upp med hjälp av Fuzzy rules som skall symbolisera olika regler och srategier som en firma tar med i beräkningarna när dem fattar beslut angående användning av olika resurser. Modellen som dessa herrar har skapat innefattar även en inlärningsprocedur som gör att agenten kan optimera dem Fuzzy rules som ges samt sina beslut, mycket av beräkningarna görs i Matlab. Denna inlärningsprocedur samt beräkningarna inom Matlab kommer inte att täckas grundligt i denna uppsats utan som nämnt tidigare så kommer fokusen att vara på Fuzzy Logic användandet men för att kunna göra detta så kommer vissa saker att tas upp och förklaras. Grunderna för agenten blir alltså att med osäker information kunna ta beslut för att göra det svårt för sin motståndare men samtidigt ta beslut med så stor vinst möjlighet för den själv. Fuzzy decision making system (FDMS) Det spelet har som grund är ett så kallat "Fuzzy decision making system" detta förkortas FDMS men det har sedan utvecklats till något som dem kallar för "Fuzzy decision making system for business games" FDMBS. Ett FDMS system bygger på några av grund stenarna 12
inom Fuzzy Logic dvs, fuzzification steget, Fuzzy regel bas, Fuzzy decision logic och defuzzyfication steget. Fuzzification steget: Det här är det första steget i spelprocessen där det värden som skall användas görs om från crisp värden till Fuzzy värden. Detta görs genom att inse att det värden som man till vardags antar är crisp i själva verket är Fuzzy. Detta gör att värden nu kan presenteras med hjälp av medlemsfunktioner som förklarats ovan. Hur detta går till generellt är att systemet tar ett crisp värde och gör om det till ett Fuzzy värde. Detta görs genom att göra om inputvärdet till en medlemsgrad. Det här gör den genom att matcha inputvärdet mot det medlemskaps funktioner som finns. Så om man tex har ett värde på hur många armhävningar någon kan göra låt oss säga x = 10 armhävningar. Då matchas detta mot medlemsfunktionerna µa = svag och µb = stark. Om vi då har en range på mellan 0-20 armhävningar där svag har ett högsta medlemsgradvärde på 5 armhävningar och stark har ett högsta på 15 armhävningar så skulle x teoretiskt sätt kunna ha ett medlemsvärde på µa(x) = 0.5 och ett µb(x)=0.5 eftersom det är i mitten mellan svag och stark. Fuzzy regel bas: Denna regel bas är uppbyggd på ett sk "conventional antecedent-consequent form" vilket i det svenska språket kan översättas till den konventionella föregångaren-därav formen. Med detta så menas att basen för reglerna är att "detta skedde därav skall du göra detta". Detta är alltså baserat på den vanliga logikens om x så y, där x och y är Fuzzy setsen. Genom att sätta upp alla dessa om detta-gör detta regler så skapas här kunskaps basen för sin Fuzzy agent och det är utifrån dessa som den skall fatta sina beslut. Men eftersom detta är ett Fuzzy system så är som tidigare känt inte allt bara sant eller falskt och därav tillkommer vissa delar. I ett Fuzzy system som detta så är regeln att om en "föregångare" är sant till en viss grad så betyder det även att "därav" är sant till samma grad. Så om det tex är sant till 0.8 att motståndaren lagt hälften av sina pengar på marknadsföring så är det också sant till 0.8 att man ska möta detta med att spendera 3/4 delar av sin budget på marknadsföring till exempel. Sedan används för små nummer av inputs en kompakt form av representering av det Fuzzy rule baserade systemet i en tabell där olika delar representerar olika inputs, detta har namnet "Fuzzy associative memory tabel" FAM. Dessa tabeller ser ut på följande sätt: Figur 5. Taget ur Spelartikeln, (se referenslista). 13
Utifrån dessa tabeller kan man alltså utläsa den outputen som skall ges givet två variabler, tex som i detta fallet där D står för efterfrågan (demand) och C p är kostnad för produktion (cost of production) där D är raden och C p är kolumnerna hur mycket den förväntade konsoliderings ansträngningen skall vara (till hur stor sträckning man skall slå ihop de mindre företagen i sin koncern). Så om man har hög efterfrågan och hög kostnad för produktion så skall man alltså sätta ihop sina små företag till en medium nivå och det är i dessa very low, low, medium och high som Fuzzy logic krävs för att systemet skall förstå vad som menas. Detta görs som bekant på det viset som förklarats i den tidigare sektionen vid namn lingvistiska inverkan i Fuzzy logic. Det man har gjort här är att om en regel inte har ett värde vid 0 så ska den "fire", alltså användas. Detta beslut samt värde kommer ifrån inference motorn som tas upp nedan. Matematiken bakom det hela utgörs i Matlab och går att läsa mera om i original artikeln men som sagt tidigare så kommer detta inte att tas upp här. Beslutsfattnings logiken: Beslutsfattnings logiken utgörs av den som påminner om den klassiska logiken samt att den påminner om simulerat mänskligt beslutsfattande i slutna fuzzy kontroll baserade handlingar på reglerna av inference i fuzzy logic. Detta betyder alltså att den liknar den klassiska "om p så q" regeln vilket gör att beslutet fattas med hjälp av denna typen av härledningar. Den specifika inference teknik som använts i spelet är Mamdani system. Detta förklaras inte i artikeln då allt detta är implementerat i Matlab som utför detta automatiskt genom det val man väljer i programmet. Inference motorn: Inference motorn är direkt länkad till regel basen för att med hjälp av reglerna kunna matcha inputen som den får ifrån fuzzifikations steget med det regler som finns i basen för att sedan kunna ge den handling som skall utföras. Detta görs genom "aggregation", "activation" och "accumulation". Aggregation operationen används för att räkna ut graden av lycka eller som Oderanti och De Wilde uttrycker det som "fire". Med detta menas alltså att här räknar man på om något skall göras eller inte. Denna operator räknar alltså denna grad, α k, för villkoret av regeln k, så om regeln är att öka produktion vid hög efterfrågan och dessa har en lycka grad på över 0 så skall ökad produktion göras. Det denna operation gör är att generera ett fuzzy medlemskaps värde för detta villkor. Sen om regeln k innehåller två villkor så sätts dessa ihop och genereras ett värde för båda villkoren. Det värde som kommer ut ur aggregation operationen går sedan vidare till activation operationen. Aktiveringen kan ses som konsekvensen av regeln. Denna konsekvens blir reducerat av detta grad av lycka värde/fire värde. I denna operation så används oftast min max beroende på hur man utformat reglerna. Vid dem tillfällen som reglerna innehåller flera villkor så använder man sig av min operatorn medan om det är antingen den ena eller andra villkoret så använder man max operatorn (om x eller om y så...). Det min operatorn i praktiken gör är att kapa av konsekvensens fuzzy set så att det endast representerar en output. Den här outputen gäller för det minsta medlemskapsvärdet för försatsen. Detta gör man eftersom att det inte är troligare att konsekvensen gäller än att förutsättningarna gäller. Om man använder max operatorn så görs inte samma sak utan då kapas konsekvenssetet så att det har en output som gäller för det 14
högsta medlemskapsvärdet. Det här görs eftersom att om en förutsättning gäller så måste ju även konsekvensen gälla. Det sista steget är sedan accumulation som innebär att den sluter samman alla aktiva slutsatser och det görs genom unifiering. När detta är gjort så skapas en graf som innehåller alla slutsatser utifrån det regler som använts. Denna graf kommer sedan till användning i defuzzifikation processen för uträkningen av det slutgiltiga crisp värdet. Defuzzifikations processen: För att systemet skall fungera så går det inte att ha olika vaga värden som slutvärden utan man behöver få ett tydligt värde för att det skall fungera. Därav krävs det ett slutsteg som kallas för defuzzifikations processen. Här finns det olika typer inom fuzzy logic som används, några utav dom är, center of gravity (COG), mean of maxima (MOM), leftmost maxima (LOM). Den vanligaste av dessa är COG och det är även den man har använt sig av i detta spel. Det detta i grund och botten gör är att det konverterar fuzzy kontroll handlingarna (fuzzy outputen) till en crisp handling/output. Resultatet kan alltså bli att man reducerar fuzzy setet till ett crisp "en värdigt" output eller ett crisp set; tar ett fuzzy matrix gör det till ett crisp matrix; tar ett fuzzy tal till ett crisp tal. Det gör helt enkelt allt som är fuzzy till crisp. Man kan undra varför man då över huvud taget använder fuzzy värden från början men det är oundvikligt behövande då det hjälper till att utvärdera reglerna medan den slutliga outputen av ett fuzzy system måste vara ett crisp värde och inputen för defuzzifikations processen är den sammansatta outputen fuzzy sets samt att outputen är ett nummer och inte flera. Detta är oundvikligt för att systemet skall kunna fatta beslut och för att det överhuvudtaget skall fungera. Det COG rent teoretiskt gör är att den hittar punkten där en vertikal linje skulle skära ett sammansatt set i två lika stora delar. Rent teoretiskt så räknas detta ut över en rad kontinuerliga punkter i den sammansatta outputen medlemskaps funktioner men i praktiken så kan en hygglig estimering göras med prövnings punkter. Det COG rent matematiskt gör är en ganska komplex uträkning. Grunderna till detta är dock att den räknar ut arean under grafen från det fuzzy set som skickats vidare från inference motorn. Ekvationen för detta ser ut på följande vis: X i här är en flytpunkt i det diskreta universum och µ(x i ) är punktens medlemskaps värde i medlemskaps funktionen. Det innebär att summan av alla objekt X i multiplicerade med sina medlemskaps funktioner µ(x i ) och delas sen med summan av alla existerande medlemskaps funktioner. Detta värde är då det värde som kan användas för att ta beslut om handlingen men ibland kan det även krävas att detta värde processas och görs om till ett "engeneering" värde för att kunna användas som tex volt, meter, eller pengar. Detta borde användas i spelet då man använder valuta som det agenten skall handla med, men detta är inte skrivet i artikeln och är därmed endast en spekulation ifrån min sida. 15
Spelets grunder och utförande av FDMS/FDMSB I spelet så används alltså allt detta för att agenten skall kunna göra följande. Båda spelarna börjar med en viss summa pengar i deras exempel används 5 millioner. Dem är sedan givna initiala resurser som dem kan använda, tex, "consolidation efforts" (C), "reserved or generated wealth" (W) och "aggressiv marketing efforts" (M). Med dessa kan då alltså agenten för varje runda som går använda den summan pengar dem har på dessa olika resurser. Det är här reglerna som skapats används för att se hur pengarna skall spenderas för att ha så stor chans som möjligt att öka sin vinst samtidigt som man dödar det andra företaget/agentens marknadsandel och vinster. Valen av hur pengarna spenderas görs samtidigt vilket innebär att man inte vet hur den andra spelaren kommer att spela vid första rundan. Men vid andra rundan så får man information om hur den andra spelaren valde att dela ut sina resurser vid den tidigare rundan. Därav kan man med inlärningsmetoden lära sig vad som funkar när den andra spelaren har gjort ett specifikt val. Dessa strategier är uppbyggda i spelet enligt vectorer så i det här fallet alltså [C, W, M]. I detta fall så används "consilidation efforts" (C) inte som sammanslagning av mindre företag utan istället som en variabel för hur mycket man skall lägga ner på att behålla kunder (kundservice). Denna vector är alltså den samma för båda lagen och sedan när dem väljer hur mycket dem skall lägga och var så kommer denna historik sen att se ut på följande sätt om låt säga man väljer att spendera allt på marknadsföring i första rundan, [0, 0, 5]. Det första valet fuzzy agenten görs bygger på färdiga strategier utifrån hur man skall börja på en ny marknad. Hela denna process ser ut på följande sätt: 16
Figur 6, taget ur Spelartikeln (se referenslista), Figur a, en bild på hur FDSM fungerar, Figur b, en bild på hur deras spel är uppbyggt med det dem kallar för FDSMB. Här kan vi alltså se hur dem börjar med tomma vectorer och sedan gör sina val. När valen sen är gjorda så går det igenom och räknas ut hur mycket man vann eller förlorade på det och vad som sen blir inlagt i inlärningen. Det r visar är hur många runder som har gått. I deras exempel så använder dem 5 rundor, så länge det finns en runda kvar att spela så skall alltså spelet fortsätta. Den biten som är intressant här är dock FDMS biten. Det är där i mitten allt som har förklarats ovan används för att från fuzzification steget ända till defuzzifcation steget räkna ut med hjälp av regel basen vad nästa drag i spelet skall vara. Så med hjälp utav Fuzzy Logic så kan alltså denna agent slå ut en annan spelare ifrån marknaden och vinna detta företagsspel. 17
Slutsats Fuzzy logic är något som jag anser är ett bra verktyg för att göra användarvänliga modelleringar både i spel men kanske framförallt inom regleringssystem. Genom att kunna använda vaga lingvistiska variabler och implementera dessa så att en maskin kan förstå gör att maskinens bearbetning utav handlingar och utförningen utav dessa handlingar blir mera människoliknande. Det är detta som gör att Fuzzy Logic enligt mig har en viktig del inom AI och dess framtida forskning och utvecklings framsteg. 18
Referenser Jantzen, J. Tutorial on Fuzzy Logic. Besökt 2012-09-15 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 2012-09-15 http://site.iugaza.edu.ps/mahir/files/2010/02/design.pdf Spel artikeln. Besökt 2012-09-15 "Dynamics of business games with management of fuzzy rules for decision making", Festus Oluseyi Oderanti, Philippe De Wilde, 2010, Int. J. Production Economics. Dote, Y. Introduction To Fuzzy Logic. Besökt 2012-09-15 http://ieeexplore.ieee.org.lt.ltag.bibl.liu.se/stamp/stamp.jsp?tp=&arnumber=483332 Fuzzification förklaring. Besökt 2012-09-15 http://www.atp.ruhr-uni-bochum.de/rt1/syscontrol/node122.html Wikipedia övergripande info om Fuzzy Logic. Besökt 2012-09-15 http://en.wikipedia.org/wiki/fuzzy_logic Bild på trapezoid. Besökt 2012-09-15 http://wiki.logic-worx.com/doku.php?id=dot_net:fuzzylogic:fuzzylogic:createtrapezoid Bild på Gaussian. Besökt 2012-09-15 http://www.mathworks.se/help/fuzzy/gaussmf.html 19
20