výuka

Petr Olmer, MFF UK

13.11.2006

4. přednáška (31. října)

Symbolická architektura agentů, agenti jako dokazovači vět. Agentově orientované programování. Agent0. Concurrent MetateM.
Agenti pracují s logickou (symbolickou) databází popisující současný stav světa, teorií (množinou pravidel) a množinou možných akcí. Zajímá nás, jestli je nějaká formule dokazatelná z databáze pomocí teorie.

 

Agent v odvozování (dokazování vět) používá dedukční a indukční krok. V dedukčním kroku se snaží dokázat platnost formule Proveď(a), pokud se mu to podaří, provede akci a. V indukčním kroku se snaží odvodit, že nelze dokázat platnost negace Proveď(a), pokud se mu to podaří, provede akci a. Indukční krok nemá smysl v úplných systémech, těmi ale agentové systémy typicky nejsou.

 

Symbolická reprezentace se potýká se dvěma zásadními problémy: Jak překládat svět do symbolického popisu a jak v rozumném čase manipulovat se symboly a odvozovat z nich.

 

Úlohy dokazování řešené v symbolická logice (a architektuře) bez omezení jsou typicky nerozhodnutelné, v lepším případě co-NP úplné. Proto se používá slabší logika (např. Hornovy klauzule — Prolog), jiné (nelogické) reprezentace apod.

 

Agentově orientované programování (Yoav Shoham). Logika pro specifikaci agentů a popis jejich mentálních stavů + interpretovatelný programovací jazyk pro programování agentů + proces agentifikace.

 

První AOP jazyk: Agent-0 (rozšíření Lispu).

 

Concurrent MetateM. Každý agent je programován tak, že se vytvoří specifikace jeho chování v časové logice (obsahuje odální operátory vyjadřující, jak se pravda mění v čase). Tyto specifikace jsou přímo spouštěny, aby vygenerovaly chování agenta.

 

Gabbayova věta: Každou formuli časové logiky lze přepsat do tvaru minulost -> budoucnost.

 

Takový tvar může být prováděcím pravidlem (lze testovat předpoklad). Program pro agenta je pak množinou takových pravidel.

 

Agent je definován svým jménem, interfacem a programem. Interface určuje, které zprávy agent přijímá (na které reaguje) a které vysílá.

 

Příklad: Chůva krmí dítě, pokud má hlad.

chůva (mám_hlad)[krmím]:

MINULE mám_hlad(a) -> NĚKDY_V_BUDOUCNOSTI krmím(a)

 

Typicky užíváme modálnost NĚKDY_V_BUDOUCNOSTI, přestože cílem je splnit implikaci co nejdříve. Nemusí to ale být hned v následujícím kroku, pokud by to kolidovalo s jiným cílem apod.

Petr Olmer, 13.11.2006, 9:11:00, trvalý odkaz,

Komentáře (0)

Přidání komentáře