výuka

Petr Olmer, MFF UK

9.11.2005

3. přednáška (26. 10. 2005)

Prostředí úkolů, úspěch v něm. Syntéza agentů. Symbolická architektura agentů, agenti jako dokazovači vět. Agentově orientované programování. Agent0. Concurrent MetateM.

Speciální případ užitečnosti běhů: pouze false a true (0 a 1). Prostředí úkolů je pak uspořádaná dvojice prostředí a funkce ohodnocující běhy jako úspěšné a neúspěšné. Obsahuje ttedy nejen vlastnosti systému, ale i kritéria, podle kterých bude agent posuzován.

Úspěch agenta lze posuzovat negativně, pozitivně, či pravděpodobnostně. Negativita vyžaduje, aby všechny jeho běhy byly úspěšné, pozitivita vyžaduje, aby alespoň jeden jeho běh byl úspěšný, pravděpodobnost sčítá pravděpodobnosti úspěšných běhů.

Častými typy úkolů jsou úkoly dosažení a úkoly udržení. V úkolu dosažení je definována podmnožina G dobrých stavů, úkolem agenta je dosáhnout alespoň jednoho z nich. V úkolu udržení je definována podmnožina B špatných stavů, úkolem agenta je se jim (všem) vyhnout.

Syntéza agentů. Cílem je mít program, který dostane prostředí úkolů a automaticky vygeneruje agenta, který je v tomto prostředí úspěšný. Program také může vrátit false. Korektní algoritmus vrací agenta, který skutečně bude mít úspěch. Úplný algoritmus vrací false pouze v případě, že úspěšný agent neexistuje.

Symbolická architektura agentů. 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: Agent0 (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.

Čtení

Agent0

Yoav Shoham: Agent Oriented Programming

Petr Olmer, 9.11.2005, 15:08:00, trvalý odkaz

Komentáře

Přidání komentáře...

Vaše jméno:


Váš e-mail:


Text: