Difference between revisions of "Fuzzy logic/cs"

From Simulace.info
Jump to: navigation, search
m
m (Úlohy na precvičenie Fuzzy logiky)
 
(One intermediate revision by the same user not shown)
Line 48: Line 48:
 
* 2 kategórie: '''Starí''' a '''Mladí''' s hraničným bodom delenia 50 (limit)
 
* 2 kategórie: '''Starí''' a '''Mladí''' s hraničným bodom delenia 50 (limit)
 
* prirodzená úcta k starším (mladší ľudia starším ľuďom vykajú)
 
* prirodzená úcta k starším (mladší ľudia starším ľuďom vykajú)
* množinu vstupov ľudí '''{10,40,50}''' obsahujúcich vlastnosť veku
+
* množinu vstupov ľudí '''{10,40,60}''' obsahujúcich vlastnosť veku
 
* množinou pozdravov '''{"Dobrý deň", "Ahoj"}'''
 
* množinou pozdravov '''{"Dobrý deň", "Ahoj"}'''
  
Line 61: Line 61:
 
=== Úlohy na precvičenie Fuzzy logiky ===
 
=== Úlohy na precvičenie Fuzzy logiky ===
  
3 úlohy na záver (odpovede sa nachádzajú úplne dole ako posledná kapitola):
+
3 úlohy na záver (odpovede sa nachádzajú ako posledná kapitola):
 
  '''1.''' Ako by vyzeral výsledný počet možných výstupov, ak by sme do množiny pozdravov v príklade vyššie pridali pozdrav "Nazdar"?
 
  '''1.''' Ako by vyzeral výsledný počet možných výstupov, ak by sme do množiny pozdravov v príklade vyššie pridali pozdrav "Nazdar"?
 
  '''2.''' Aké by mohli byť ďalšie vlasnosti, ktoré by menili faktor veku?
 
  '''2.''' Aké by mohli byť ďalšie vlasnosti, ktoré by menili faktor veku?

Latest revision as of 22:44, 12 June 2019


Úvod

L.A. Zadeh

Fuzzy Logika vznikla v kontexte teórie Fuzzy množín, ktorú prvý krát predstavil L. A. Zadeh v roku 1965. Fuzzy množina priradí stupeň členstva (reálne číslo z intervalu [0,1]) elementom vesmíru, pričom fuzzy logika vzniká až priradením stupňov pravdy k týmto vzniknutým elementom. Vzťahuje sa na rodinu viachodnotových logík, takže je určená na modelovanie logických úvah s neurčitými alebo nepresnými údajmi. Stanovuje, že hodnota pravdy (v tomto prípade pravdivostný stupeň) logicky zloženého návrhu (napr. "Peter je bohatý a Ivan je vysoký.") je určená pravdivosťou jeho komponentov, inak povedané, nepočíta iba s 2 možnými hodnotami pravdy. [1].

Pri použití Fuzzy logiky na štandardnej škále oboru hodnôt [0,1] potom :

  • "úplná nepravda" je reprezentovaná hraničnou hodnotou 0
  • "úplná pravda" je reprezentovaná hraničnou hodnotou 1
  • "čiastočná pravda" je reprezentovaná všetkými ostatnými hodnotami (nazývané aj stredné stupne pravdy)

Viac o agentoch sa môžete dočítať v kapitole na to určenej. Pre nás bude užitočná najmä podkapitola o Deliberatívnych agentoch, v ktorej sa píše aj o teórií BDI, ktorá tvorí sofistikovaný prístup k architektúre agenta a skladá sa z troch základných pojmov :

  • Beliefs(domnienky)
  • Desires(túžby)
  • Intentions(zámery)

Na základe týchto 3 faktorov, a teda domnienok, túžob a prianí agent uvažuje o svete a teda o svojom rozhodovaní, ktorému je tento učební text venovaný.


Fuzzy logika z každodenného života

Pre lepšie pochopenie fuzzy logiky si uvedieme 2 príklady z bežného života:

  • spotrebič, ktorý fuzzy logiku využíva
  • činnosť, pri ktorom fuzzy logiku využívame automaticky bez toho, aby sme si vôbec uvedomovali, že sa nejaké rozhodovanie v mozgu uskutočňuje.

Fuzzy logika v práčkach Samsung

Slovo FUZZY použité ako značka práčky Samsung a graf znázorňujúci procesy a ich následnosť

Trend integrovania Fuzzy logiky do práčiek Sasmung sa v posledných rokoch teší väčšej popularite. Senzory kontinuálne monitorujú premenlivé podmienky vo vnútri práčky a starostlivo vyberajú a nastavujú operácie pre dosiahnutie najlepších čiastiacich výsledkov.

Fuzzy logika má na starosti okrem iného kontrolu prívodu vody, teploty vody, času prania,kvality žmýkania alebo rýchlosť bubna. Viac sofistikované práčky vedia zvážiť hmotnosť oblečenia( takže zabraňujú preťaženiu práčky), poradia odporúčané množstvo čistiaceho prostriedku alebo vedia skontrolovať, či je čistiaci prostriedok v práškovom alebo tekutom stave. Niektoré sa dokonca vedia učiť z predošlých skúseností, zapamätávať si programy a regulovať činnosť práčky pre minimalizovanie nákladov na jej fungovanie.

Ahoj vs. Dobrý deň

Ľudia by sa podľa veku mohli deliť na viacero kategórií. Pre jednoduchosť si ich rozdelíme iba do dvoch kategórií - starí a mladí. Podľa etikety slušného správania starí ľudia mladím zväčša tikajú a mladí naopak starím vykajú. Existujú samozrejme aj výnimky, napríklad vnúčata dnes bežne svojím starím rodičom tikajú. Alebo si niekedy medzi sebou vykajú aj dvaja mladí ľudia, keď napríklad vybavujú nejakú formálnu záležitosť. Ľudia dodržujúci zásady slušného správania by sa teda mali správať podľa nejakého vzoru etického správania, čo je príkladom fuzzy rozhodovania a priradenia (prekonvertovania) množín možných vstupov (stretnutí) s rozličnými vlastnosťtami (starý vs. mladý, stretnutie v krčme vs. stretnutie v banke, blízka vs. cudzia osoba, ...) na množinu možných výstupov (dobrý deň, ahoj, nazdar, ...).

Návrh modelu

Pre jednoduchosť si fuzzy logiku vysvetlíme iba na základe jednej vlastnosti - veku (tá sa samozrejme môže meniť na základe určenia priorít, to ale komplikuje vysvetlovanie a táto komplikácia je vysvetlená v kapitole nižšie). Neberieme teda do úvahy žiadne iné vlastnosti agentov, ktoré by mohli zmeniť ich správanie.

FuzzyAgesAndGreetings.png

Samozrejme, výsledná matica pozdravov nie je finálna, no ak by fuzzy logika obsahovala iba jedinnú premennú vek a 3 ľudí vo veku 10, 40 a 60 rokov, mohla by vyzerať nejak podobne. Dôležitý je predovšetkým výpočet faktoru veku, ktorý je v tomto prípade počítaný ako podiel vek/X, kde X = 100 (tieto hodnoty môžeme vidieť na obrázku vyššie a je iba na nás, čo dosadíme za X).

Čo teda vieme z modelu vyčítať:

  • 2 kategórie: Starí a Mladí s hraničným bodom delenia 50 (limit)
  • prirodzená úcta k starším (mladší ľudia starším ľuďom vykajú)
  • množinu vstupov ľudí {10,40,60} obsahujúcich vlastnosť veku
  • množinou pozdravov {"Dobrý deň", "Ahoj"}

Výsledná fuzzy množina a možné rozšírenie úlohy

Ak by sme teda zaradzovali daných ľudí len do 2 kategórií na základe jedného pravidla, ktoré by spočívalo v porovnávaní faktoru veku s konštantou limit, dostali by sme maticu 3x2 možných pozdravov. Nie je teda vôbec doležité, ako nastavíme konštantu limit, pri jej zmene sa iba zmenia určené pozdravy, nie však počet prvkov matice a teda všetky možné kombinácie stretnutí majú vždy jasne danú reakciu z oboch strán.

Pri stretnutí dvoch rovesníkov som trochu načŕtol možné rozšírenie úlohy, keď som neurčil, či bude pozdrav "Ahoj" alebo "Dobrý deň". Samozrejme, ak platia pravidlá vyššie (pri dvoch malých chlapcoch som si ale dovolil spraviť výnimku, málokedy vidíme zdraviť sa ich pozdravom "Dobrý deň"), pri stretuntí dvoch 40 by mal byť pozdrav "Ahoj" (keďže obaja spĺňajú podmienku "mladosti") a dvoch 60 ročných pánov v klobúku "Dobrý deň".

Výnimka však potvrdzuje pravidlo a v prípade 10 ročného kráľa by sme aj 60 ročného starca videli pozdraviť ho pozdravom "Dobrý deň"(ak tam samozrejme nie sú ďalšie pravidlá, ktorú môžu túto logiku upravovať, ako napríklad príbuzenský vzťah a podobne). Možnosť voľby z dvoch pozdravov pri 40 a 60 ročných mužoch teda malo načŕtnuť pointu fuzzy logiky a možnosti jej rozšírenia, aj keď táto možnosť výberu sa vyskytne až po zaradení ďalších pravidiel.

Úlohy na precvičenie Fuzzy logiky

3 úlohy na záver (odpovede sa nachádzajú ako posledná kapitola):

1. Ako by vyzeral výsledný počet možných výstupov, ak by sme do množiny pozdravov v príklade vyššie pridali pozdrav "Nazdar"?
2. Aké by mohli byť ďalšie vlasnosti, ktoré by menili faktor veku?
3. Ako by vyzeral pozdrav pri stretnutí 60 ročného starca (zmena faktoru veku z príkladu vyššie), ak do modelu pridáme nasledujúce vlasnosti :
3.a) Hodnosť kráľa znásobuje súčasný váhu 100 krát?
3.b) Hodnosť kňaza znásobuje súčasný váhu 20 krát?
3.c) O koľko rokov kňaz začne oslovovať kráľa "Dobrý deň"?

Fuzzy logika v agentovo-orientovaných počítačových hrách [2]

Prevedenie možného použitia fuzyy logiky v známej arkádovej hre BattleCity. Kružnice znázorňujú rôzne vstupy, na základe ktorých sa agenti rozhodujú o svojej ďalšej akcii

Umelá inteligencia v počítačových hrách sa vďaka rastúcim požiadavkám hráčov musí neustále zlepšovať. Inteligentní agenti môžu spolu s fuzzy logikou vylepšiť najdôležitejší prvok hier - interakciu. Agenti ponúkajú lepšie možnosti flexibilnej interakcie v rámci architektúry herného dizajnu, pričom fuzzy logika umožňuje lepšie kontrolovať správanie pre vytvorenie najrôznejších foriem umelých inteligencií.

Porovnanie s inými technikami

Vo svete hier neznamená fuzzy kontrola iba ďalšiu metódu pre správanie agentov. Kontrolovanie agentov pomocou fuzzy logiky je zárukou generovania "správneho" správania. Toto prirodzené správanie agentov potom pomáha zvyšovať vnímanú zložitosť a dôveryhodnosť virtuálneho prostredia. V porovnaní s niektorými inými technikami návrhu inteligentných systémov sú systémy založené na fuzzy pravidlách jednoduché na návrh aj implementáciu. Klasické rule-based systémy pritom často nedokážu dosiahnuť prirodzenosť, akú ponúkajú fuzzy systémy, pričom tie spotrebujú omnoho nižšie výpočtové náklady.

Fuzzy rule-based systémy

Systémy založené na fuzzy pravidlách sa vo všeobecnosti skladajú z 4 komponentov:

  • fuzzifier konvertuje sparsované vstupy z klienta do fuzzy množín
  • základňa pravidiel (rule-base) uchováva všetky vzťahy medzi vstupmi a očakávanými výstupmi v kolekcií IF-THEN pravidiel
  • uvažujúca jednotka použije vstupy a aplikuje na nich konkrétne pravidlá
  • defuzzifier prekonvertuje výsledok rozhodovania a sparsované výstupy pošle späť na klienta

V prípade viacerých vstupov sú fuzzy pravidlá väčšinou prepojené logickým spojením (konektorom) AND, pričom rule-base musí pokrývať každú možnú kombináciu všetkých výrazov z definičného oboru vstupnej premennej. Táto požiadavka úplnosti ale vedie k tzv. rule explosion problém-u, kde pre systém s n vstupmi, ktorý má každý m možných stavov potrebujeme celkovo m^n pravidiel! Toto pravidlo výbuchu predstavuje vážny problém a komplikuje implementovanie fuzzy kontrolovania vďaka vysokým nárokom na CPU zdroje. Combs navrhol URC (Union Rule Configuration) na zmiernenie tohto problému, kedy sa zložitosť výpočtu zníži na m*n pravidiel.

Zhrnutie

Agentovo-orientovaný prístup pri vývoji hier ponúka mnoho výhod počas celého vývojového cyklu. Poskytuje prirodzený spôsob modelovania herných postáv a veľmi felxibilnú softwérovú architektúru umožňujúcu rozkvet správania agentov za použitia minimálneho počtu spojení. Navyše, pomocou nového prístupu k dizajnu ich môžu programátori ľahko integrovať do starších herných vývojových prostredí.

Fuzzy logika je ďalšou inteligentnou technikou, ktorá by mohla byť použitá na zlepšenie výkonu počítačových hier. Zvláda totiž komplexné problémy ovládania správania za použitia minimálnych nárokov na výpočetnú techniku. Kontrolovanie správania pomocou fuzzy logiky sa dá určite použiť na hry akejkoľvek architektúry.

Odpovede na otázky

1. Nezmenil by sa. Pri 1 pravidle sú odpovede jednoznačné, takže matica bude mať rovnaký počet výstupov aj v prípade, ak by množina s pozdravmi obsahovala iba 1 prvok.
2. Príbuzenský vzťah, hierarchické postavenie (môže sa týkať napríklad štátnej moci alebo aj postavenia vo firme), miesto stretnutia atď.
3.a) Starec by pozdravil chlapca kráľa "Dobrý deň". [(hodnosť kráľa)100 * 0.1 = 10 > 0.6]
3.b) Starec kňaz by pozdravil chlapca kráľa "Ahoj". [ (hodnosť kráľa)100 * 0.1 = 10 < 12 = 0.6 * 20 (hodnosť kňaza)]
3.c) Starec kňaz pozdraví chlapca kráľa pozdravom "Dobrý deň" o 3 roky [100 * 0.13 = 13 > 12.6 = 0.63 * 20]

Zdroje

  1. Cintula, Petr, Fermüller, Christian G. and Noguera, Carles, "Fuzzy Logic", The Stanford Encyclopedia of Philosophy (Fall 2017 Edition), Edward N. Zalta (ed.), Dostupné z : https://plato.stanford.edu/archives/fall2017/entries/logic-fuzzy/
  2. Li, Yifan & Musilek, Petr & Wyard-Scott, L. (2004).Fuzzy logic in agent-based game design. 734 - 739 Vol.2. 10.1109/NAFIPS.2004.1337393. Dostupné z : https://www.researchgate.net/publication/4092875_Fuzzy_logic_in_agent-based_game_design