Hledat:

Parfémy Krása Produkty pro zdraví Hodinky Elektro Šperky a klenoty Nábytek Nářadí a zahrada Outdoor Počítače a notebooky
 

3APL

Architektura agenta v 3APL
Architektura agenta v 3APL

3APL (An Abstract Agent Programming Language) je programovací jazyk (a platforma) pro tvorbu agentů a multi-agentních systémů.

Jazyk 3APL byl navržen na univerzitě v Utrechtu za účelem ověření konceptu programovacího jazyku, který by umožňoval rychle tvořit softwarové agenty založené na BDI (belief-desire-intention) architektuře. Vývoj v této oblasti v současnosti pokračuje jazykem 2APL (A Practical Agent Programming Language), cílem je dosáhnout jediného univerzálního jazyka pro tvorbu agentů - jazyka 1APL (Single Agent Programming Language).

Obsah

[editovat] Běh programu

Jazyk je vzhledem k tomu, o jaký typ jazyka se jedná, interpretovaný. V současné době exitují 3 oficiální možnosti jak spustit program v jazyce 3APL.

[editovat] Struktura programu v 3APL

[editovat] Základní struktura

Jazyk v některých principech vychází z Prologu, jeho vlastnosti se liší v závislosti na platformě. Jazyk není case-sensitive až na následující výjimky:

Program v jazyce 3APL se sestává z následujících částí (toto je struktura pro Java verzi, ostatní se mohou v detailech lišit).

Program by každopádně měl začínat určením názvu agenta:

PROGRAM "nazev_programu"

Pro zpřehlednění programu je možno načíst do BELIEFBASE (viz níže) externí soubor s Prolog predikáty:

LOAD "prolog_soubor.pl"

Dále lze v programu specifikovat počáteční belief-bázi, tedy to, co agent na začátku ví o prostředí, ve kterém bude operovat. Jednotlivé znalosti jsou přitom Prologovské predikáty. Obsah belief-báze se během činnosti agenta mění, protože agent prováděním akcí mění prostředí a je si toho vědom.

Následující příklad ukládá do belief-báze predikát, který říká, že agent je na začátku (před spuštěním programu) unavený.

BELIEFBASE {
  unaveny().
}

Další součástí programu je specifikace možných akcí a jejich důsledků na BELIEFBASE agenta. Jedná se pouze o vyčtení možných akcí, podmínek, které musí být splněny, aby se mohly provést a jejich efektů. Nedefinuje se zde žádné schéma uvažování.

Následující kód například popisuje co to znamená "jít spát": když je agent unavený, může jít spát a když se vyspí, tak už není unavený a cítí se dobře. Dále je v kódu uvedena druhá akce - akce "dát si pivo". Když si agent (kdykoli) dá pivo, cítí se dobře, ale na jeho únavu to (zde se jedná možná o příliš velké zjednodušení) nemá vliv.

CAPABILITIES {
  { unaveny() } VyspiSe() { NOT unaveny(), dobryPocit() }
  { true }      DejPivo() { dobryPocit() }
}

Každý agent je navržen za nějakým účelem - tento účel je shrnut do sekce GOALBASE. Jedná se opět o sekci tvořenou Prologovskými predikáty. Cíl je považován za splněný, pokud v něj agent věří (je uložen v BELIEFBASE), potom se cíl odstraní z GOALBASE. V příkladu se náš agent snaží cítit se dobře...

GOALBASE {
  dobryPocit().
}

Je možno také specifikovat počáteční plán agenta, to znamená akce, které má agent naplánovány pro provedení bezprostředně po spuštění programu.

PLANBASE {
}

Specifikace pravidel popisující způsob dosažení cíle (a pravidla revize plánů) je další důležitou části programu v jazyce 3APL. Má vždy následující syntax:

cíl <- strážná_podmínka | { akce }

Cíl může být navíc prázdný, podmínka může být true, akce může být složená/jednoduchá/vestavěná...

Příklad pravidel specifikující způsob dosažení cíle (pg-rules) - když se agent necítí dobře, měl by s tím něco dělat (aby se cítil dobře):

PG-RULES {
  dobryPocit() <- NOT dobryPocit() | { DelejSTimNeco(); }
}

Dále je možno určit pravidla pro revizi plánu (pr-rules). Ta umožňují definovat chování agenta v případě, že byla zneplatněna některá z podmínek, která vedla ke stanovení současného plánu, případně je zde možno definovat složené akce pomocí akcí elementárních (tj. těch definovaných v CAPABILITIES) a vestavěných (viz níže).

Příklad - když se agent necítí dobře, tak aby s tím něco dělal, musí se napřed rozhodnout, jaká je příčina a podle toho se buď vyspat, nebo si dát pivo:

PR-RULES {
  DelejSTimNeco() <- NOT dobryPocit() | {
    IF (NOT unaveny()) THEN {
      DejPivo();
    } ELSE {
      VyspiSe();
    }
  }
}

[editovat] Řízení běhu, podmínky, další syntax jazyka

Formální specifikaci jazyka 3APL lze nalézt na oficiálních stránkách. Pro základní použití jazyka pravděpodobně stačí následující seznam programátorských konstruktů, které lze v 3APL použít:

IF predikat_uspeje THEN { Akce1(); ...; AkceN(); } ELSE { ... }
WHILE predikat_plati DO { Akce1(); ...; AkceN(); }
predikat1() AND predikat2()
predikat1() OR predikat2()
NOT predikat()

[editovat] Vestavěné akce jazyka 3APL

[editovat] Komunikace agentů

Jazyk 3APL byl odzačátku vyvíjen jako jazyk, ve kterém je možno tvořit multi-agentí systémy. Proto jazyk nutně musí obsahovat prostředky pro komunikaci mezi agenty. Je tedy k dispozici funkce Send(agent, typ_zpravy, obsah_zpravy). Pakliže agent A pošle agentovi B zprávu voláním akce Send(B, X, Y), uloží se do BELIEFBASE agenta a predikát sent(B,X,Y) a do BELIEFBASE agenta B se uloží received(A,X,Y). Takto agenti mohou - samozřejmě mají-li definovaná příslušná pravidla v PG-RULES (nebo PR-RULES) - na zprávy (jak přijaté, tak odeslané) reagovat.

[editovat] Prostředí

Krom toho, co je "uvnitř" agenta je možno v 3APL pracovat s externím prostředím. To je možno vytvořit např. ve formě Java programu (požadovaný interface je definován v příručce k jazyku). Java Platforma jazyka 3APL obsahuje standardní prostředí vhodné například pro výuku - prostředí BlockWorld (svět ze čtverečků obsahující stěny, bomby a díru, kde se agent může pohybovat).

Java Platforma pro jazyk 3APL má za účelem komunikace s libovolným prosředím k dispozici příkaz Java(nazev_prostredi, akce, navrat) - například ve zmíněným prostředím BlockWorld je možno zjistit bomby v okolí agenta takto: Java("BlockWorld", senseBombs, BOMBS), kde BOMBS se po provedení akce naplní seznamem dvojic (se souřadnicemi bomb).

[editovat] Stáhněte si

[editovat] Literatura

[editovat] Externí odkazy

 
3APL v jiných jazycích: Deutsch, English
Tento článek je převzat z české wikipedie - otevřené encyklopedie, originální článek naleznete na adrese: „http://cs.wikipedia.org/wiki/3APL
Stránka byla naposledy upravena v Stránka byla naposledy editována 30. 1. 2008 v 02:40.
Veškerý text je dostupný za podmínek GNU Free Documentation License (Autorské právo pro podrobnosti).
Další služby: Portál | Katalog | Hledej | Zprávy | Počasí | Kurzy | Práce | Slovník | TV | Online hry | Java hry | SMS | Loga a melodie | Chat | Fórum | Kontakt