Agentově orientovaný přístup (dále AOP) k programování je druh programové reprezentace nebo programovacího paradigmatu, ve kterém jsou základními koncepty koncepty agenta a jeho mentálního chování v závislosti na prostředí , ve kterém se nachází. Koncept navrhl Shochem ( Eng. Yoav Shoham ) v roce 1990 [ 1] . Definice paradigmatu uvedená autorem: [2]
Toto nové programovací paradigma se celkem rozumně nazývá racionální programování. Stejně jako objektově orientované programování posunulo paradigma od psaní procedur k vytváření objektů, racionální programování posunulo paradigma od vytváření informačních objektů k vytváření motivovaných agentů.
Agent je vše, co lze považovat za vnímání svého okolí pomocí senzorů a působení na toto prostředí pomocí aktuátorů . [3]
Shochem, prezentující přístup orientovaný na agenty jako nové paradigma, dostatečně podrobně rozebírá, v jakém smyslu se v něm slovo agent používá . Faktem je, že toto slovo lze použít v různých příbuzných významech. A přestože Shochem chápe softwarového agenta jako agenta , vychází z teorie umělé inteligence a vychází z konceptu inteligentního agenta , který existoval již dříve. Ale když si všiml, že tento koncept je poněkud vágní, klade si za cíl jej transformovat pro formálnější použití v programování a navrhnout speciální rámec AOP . V důsledku toho je koncept agenta, na rozdíl od jednoduchého objektu , vybaven řadou mentálních konstruktů, jako je víra, povinnosti a schopnosti. V programovacím jazyce se proto objeví různé mentální kategorie a sémantika programování se propojí se sémantikou mentálních konstrukcí. [jeden]
V závislosti na stupni volnosti prostředí, který implikuje přítomnost vhodného typu agenta v něm, se prostředí dělí na [5] :
ZAVŘENO Konečný deterministický nebo pravděpodobnostní popis celého prostředí, který je agentovi znám a priori nebo prostřednictvím průzkumu . OTEVŘENO Konečný deterministický nebo pravděpodobnostní popis místní oblasti prostředí, ve kterém se agent nachází a který je mu znám a priori nebo prostřednictvím výzkumu. Transformovatelné Dynamicky se rozvíjející prostředí, jehož vývojovou strukturou je agent.Agentově orientovaný přístup je speciálním případem (specializací) objektově orientovaného programování (OOP). V OOP je výpočetní proces chápán poměrně široce jako systém sestavený z objektů , které na sebe vzájemně působí prostřednictvím zpráv . AOP specializuje tyto koncepty nastolením stavu (nazývaného mentální stav) objektů (tzv. agentů) složených ze složek, jako jsou přesvědčení (včetně přesvědčení o světě, o sobě a o sobě navzájem), schopnosti a rozhodnutí. , z nichž každý má specifickou syntaxi. Na psychický stav agenta jsou navíc kladena různá omezení. Výpočet spočívá v informování agentů, plnění jejich požadavků, plnění jejich návrhů, přijímání, odmítání, soutěžení a vzájemné pomoci. [jeden]
OOP | AOP | |
---|---|---|
Základní jednotka | objekt | činidlo |
Parametry, které určují stav hlavní jednotky | neomezený | přesvědčení, závazky, schopnosti, volby.... |
Proces výpočtu | metody přijímání zpráv a odpovědí | metody přijímání zpráv a odpovědí |
Typy zpráv | neomezený | informace, žádost, nabídka, slib, odmítnutí .... |
Omezení metody | Ne | poctivost, důslednost.... |
Přítomnost mechanismu stanovování cílů v agentovi poskytuje zásadně novou úroveň autonomie. Agent se nemusí nutně řídit příkazy jakéhokoli jiného agenta nebo uživatele, prostě závisí na podmínkách prostředí, včetně cílů a záměrů jiných agentů. Na rozdíl od objektu může agent převzít určité závazky nebo naopak odmítnout vykonávat nějakou práci, motivovat k tomu nedostatek kompetence, zaneprázdněnost jiným úkolem atd. Zároveň může agent provádět takové akce, jako je generování, potlačení a nahrazení jiných agentů, aktivace funkcí (vlastních i jiných agentů), aktivace scénáře aktivity, zapamatování aktuálního stavu jiných agentů atd. [6] .
Důvody pro vznik přístupu založeného na agentech:
Obecně by systém AOP měl obsahovat tyto základní komponenty: [7] [8]
Jsou považovány za hlavní vlastnosti, které by agenti měli mít :
Distribuované objektové architektury ( CORBA , DCOM , Java RMI , WEB-services ), které mají mnoho z uvedených vlastností, mají následující nevýhody:
Prostředí JADE Distributed Object Environment (založené na Java RMI, Java CORBA IDL, Java Serialization a Java Reflection API) poskytuje agentům Java následující vlastnosti:
Strukturálně může být agent reprezentován následovně :
Činidlo | |->Zdroje | |->Objekty | |->funkce | |->dataTypickým příkladem přístupu orientovaného na agenty jsou speciální programy, které napodobují jednání hráčů v počítačových hrách. Běžný název pro takové programy je boti . Použití robotů se však neomezuje pouze na počítačové hry . Lze je nalézt jako prvek programu v chatech a na fórech, které hrají roli „partnera“ a podporují „diskuze“. Někteří roboti však neplní pouze roli imitátorů v procesu komunikace nebo her, používají se k úpravě textových informací (včetně Wikipedie), k navazování síťových připojení, moderování zdrojů atd.
Podívejme se na oblast Booksellers, která bude ilustrovat kroky potřebné k vytváření aplikací založených na agentech.
Každý nákupní agent obdrží název knihy, kterou má koupit, jako argument příkazového řádku a pravidelně se dotazuje všech známých prodejců, aby požádali o nákup. Jakmile je nabídka přijata, agent kupujícího ji potvrdí a odešle objednávku. Pokud knihu poskytuje více než jeden prodejce, kupující vybere nejlepší nabídku (nejlepší cenu). Po zakoupení požadované knihy nákupní agent ukončí práci. Každý prodejce má minimální rozhraní, jehož prostřednictvím může uživatel přidávat nové tituly (a jejich ceny) do místního katalogu knih na prodej. Prodejci čekají na požadavky kupujících. Když dostanou žádost o knihu, zkontrolují, zda je kniha v jejich katalogu. Pokud ano, reagují nabídkou s cenou. Jinak odmítají. Když obdrží objednávku, zpracují ji a odstraní požadovanou knihu ze svého katalogu.
Pro vytvoření agenta v JADE stačí definovat jeho inicializační metodu:
import jade.core.Agent ; public class BookBuyerAgent extends Agent { protected void setup () { // Vytiskněte uvítací zprávu System . ven . println ( " Dobrý den ! Kupující - agent " + getAID (). getName () + " je připraveno . " ); } }Skutečná práce, kterou musí agent udělat, je obvykle vykonávána v rámci „chování agenta“. Chování je úkol, který může agent provádět.
Agent může provádět více chování současně. Je však důležité poznamenat, že plánování několika chování v agentovi není proaktivní, ale kooperativní. To znamená, že když je naplánováno spuštění chování, action()je volána jeho metoda a běží, dokud není dokončeno. Je to tedy programátor, kdo určuje, kdy agent přejde z provedení daného chování na provedení dalšího.
Vzhledem k popsanému mechanismu plánování je důležité zdůraznit, že chování, jako je to níže, brání provedení jakéhokoli jiného chování, protože jeho action()metoda se nikdy nedokončí.
public class OverbearingBehavior extends Behavior { public void action () { while ( true ) { // něco udělat } } public boolean done () { return true ; } }