Prírodou inšpirované algoritmy

študijné materiály pre projekt mobilnej triedy umelej inteligencie

Späť ku kurzom triedy
Obsah
Úvod
Dátové typy a klauzuly
Pravidlá, databázy a bázy pravidiel
Agenti a štruktúry
Modelovanie času, odpaľovanie pravidiel
Obrázky prostredia
Linky
O tejto kapitole



Ostatné kapitoly
Swarm
RePast
LEM
SDML
Eos
DDLab


Tutoriály
 Celulárne automaty
 Morfogenéza
 Simulátory
 Evolučné algoritmy
 Chaos
 Roboty
 Rôzne


Pravidlá, databázy a bázy pravidiel

Rules - pravidlá

Pravidlo v SDML sa skladá z dvoch častí. Príčinnej časti (antecedent) a dôsledkovej časti (consequent). Ak je pravdivá príčinná časť, potom je pravdivá aj dôsledková časť. Obidve časti pravidla sa skladajú z klauzúl. Klauzuly v príčinnej časti môžu byť spájané konjunkciou, disjunkciou, alebo môžu byť negované. V dôsledkovej časti môže byť použitá len konjunkcia. Argumentami pravidiel sú väčšinou premenné, ktoré sú pri vykonávaní pravidiel unifikované s faktami. Ak príčinná časť obsahuje premené, potom dôsledok je pravdivý pre tie väzby, pre ktoré je príčinná časť pravdivá.

Databázy

Databáza je súbor klauzúl. Každá klauzula v databáze reprezentuje niečo, o čom vieme že je pravdivé. Klauzuly môžu byť do databázy umiestnené manuálne, alebo môžu byť dedukované počas simulácie. Teda klauzuly môžu byť použité na reprezentáciu logických predikátov a každá klauzula v databáze reprezentuje predikát, ktorý je pravdivý. Avšak chýbajúca klauzula v databáze neznamená, že je nepravdivá, znamená len, že sa nepodarilo potvrdiť jej pravdivosť. Keďže všetky klauzuly môžu obsahovať podklauzuly, jedna klauzula v databáze môže obsahovať veľa informácií. V praxi väčšina klauzúl obsahuje ako svoje argumenty čísla a symboly. Z klauzulami v databáze sa dajú robiť tri základné operácie:

  • RETRIEVE (vyber)

    Táto operácia nájde v databáze všetky klauzuly, ktoré sa po unifikácii zhodujú zo zadanou klauzulou. Výber môže vrátiť jedn, viac, alebo žiaden výsledok s rôznymi väzbami premenných. Výber zisťuje, či je daná klauzula pravdivá a pre aké hodnoty premenných, ak nejaké obsahuje

  • ASSERT (zapíš)

    Operácia pridá klauzulu do databázy, keď v nej ešte nieje. Pridaním klauzuly o nej vyhlasujeme, že je pravdivá.

  • RETRACT (odstráň)

    Odstráni klauzulu z databázy. Klauzuly nemôžu byť odobraté počas simulácie.

V reálnom svete, veci sú pravdivé v určitom čase, alebo po určitom čase stratia platnosť. Aby sa kvôli tomu nemuseli z databázy odstraňovať klauzuly, ktoré stratili platnosť, doba ich platnosti sa zaznamenáva. Takto sú vytvárané čiastkové databázy ktoré obsahujú klauzuly platné v rovnakom čase. Vedomosti, ktoré svoju platnosť nemenia sú uložené v permanentnej databáze. Klauzuly v permanentnej databáze sú dedené do jej čiastkových databáz

Bázy pravidiel

Báza pravidiel, v SDML je súbor pravidiel, z ktorých každé má svoje meno. Každé pravidlo určuje, že keď sú jeho príčiny pravdivé pre nejaké väzby jeho premenných, potom aj dôsledky sú pravdivé pre tie isté väzby premenných. Pravidlá sú čisto deklaratívne. Deklarujú vzťahy medzi klauzulami, ktoré reprezentujú logické predikáty o svete. Klauzuly v pravidlách sú často aj klauzulami v databázach. Existujú však určité primitíva na konštrukciu pravidiel a klauzúl. Napríklad primitívum SUM. SUM je pravdivý, ak jeho prvý argument je súčtom ostatných argumentov. Toto primitívum sa správa tak, akoby existovala nekonečná databáza obsahujúca všetky možné súčty, napríklad SUM 4 2 2. Takéto primitíva môžu byť použité z premennými na modelovanie matematických vzťahov. Niesú však povolené ako dôsledky pravidiel. Predstavte si pravidlo, ktoré potvrdzuje, že SUM 5 2 2 je pravdivý výrok. Primitívum LAST odkazuje na databázu, ktorá bola pravdivá v predchádzajúcom časovom kroku. Takéto primitíva takisto niesú povolené ako dôsledkové časti pravidiel. Môžu spôsobiť "zmenu minulosti". Keďže SDML slúži na simuláciu, minulosť by nemala byť ovplyvnená budúcimi udalosťami.

Logické primitíva:

  • and

    Klauzula s týmto kľúčovým slovom a s niekoľkými čiastkovými klauzulami pravdivá, ak všetky jej čiastkové klauzuly sú pravdivé.

  • or

    Klauzula s týmto kľúčovým slovom a niekľkými čiastkovými klauzulami je pravdivá, ak hociktorá z čiastkových klauzúl je pravdivá.

  • not

    Klauzula s týmto kľúčovým slovom a jedinou podklauzulou je pravdivá, ak táto podklauzula je nepravdivá.

  • notKnown

    Klauzula s týmto kľúčovým slovom a jedinou podklauzulou je pravdivá vtedy, ak o jej podklauzule nevieme povedať, či je pravdivá

Dve negačné primitíva existujú preto, aby sme sa vyhli chybe uvažovať o uzavretom svete (čiže považovať všetko, čo nevieme určiť ako pravdivé, za nepravdivé).

Hore
Kontakt: Marek Bundzel