Język programowania agenta GOAL
GOAL to język programowania agentów do programowania agentów kognitywnych . Agenci GOAL dokonują wyboru działania na podstawie swoich przekonań i celów. Język zapewnia podstawowe elementy składowe do projektowania i wdrażania agentów kognitywnych poprzez programowanie konstrukcji, które umożliwiają i ułatwiają manipulowanie przekonaniami i celami agenta oraz strukturyzację jego procesu decyzyjnego . Język zapewnia intuicyjne ramy programistyczne oparte na zdrowym rozsądku lub praktycznym rozumowaniu .
Przegląd
Główne cechy GOAL to:
- Przekonania deklaratywne : Agenci używają symbolicznego, logicznego języka do przedstawienia posiadanych informacji oraz swoich przekonań lub wiedzy na temat środowiska, w którym działają, aby osiągnąć swoje cele. Ten język reprezentacji wiedzy nie jest ustalony przez GOAL, ale w zasadzie może być zmieniany w zależności od potrzeb programisty.
- Cele deklaratywne : agenci mogą mieć wiele celów, które określają, co agent chce osiągnąć w pewnym momencie w bliskiej lub odległej przyszłości. Cele deklaratywne określają stan środowiska, który agent chce ustanowić, nie określają działań ani procedur, jak takie stany osiągnąć.
- Strategia ślepego zaangażowania : Agenci zobowiązują się do swoich celów i rezygnują z nich tylko wtedy, gdy zostały osiągnięte. Ta strategia zaangażowania, nazywana w literaturze strategią ślepego zaangażowania, jest domyślną strategią stosowaną przez agentów GOAL. Zakłada się, że agenci kognitywni nie mają celów, które ich zdaniem zostały już osiągnięte, ograniczenie, które zostało wbudowane w agentów CELÓW poprzez porzucenie celu, gdy został on całkowicie osiągnięty.
- Wybór działań oparty na regułach : agenci używają tak zwanych reguł działania, aby wybrać działania, biorąc pod uwagę ich przekonania i cele. Takie reguły mogą niedookreślać wybór działania w tym sensie, że w dowolnym momencie można wykonać wiele działań, biorąc pod uwagę zasady działania agenta. W takim przypadku agent GOAL wybierze do wykonania dowolną włączoną akcję.
- Moduły intencji oparte na polityce : Agenci mogą skupić swoją uwagę i włożyć wszystkie wysiłki w osiągnięcie podzbioru swoich celów, wykorzystując podzbiór swoich działań, wykorzystując jedynie wiedzę odpowiednią do osiągnięcia tych celów. GOAL dostarcza moduły do ustrukturyzowania zasad działania i wiedzy dedykowanej osiąganiu określonych celów. Nieformalnie moduły można postrzegać jako intencje oparte na polityce w sensie Michaela Bratmana .
- Komunikacja na poziomie wiedzy : Agenci mogą komunikować się ze sobą w celu wymiany informacji i koordynowania swoich działań. Agenci GOAL komunikują się za pomocą języka reprezentacji wiedzy, który jest również używany do reprezentowania ich przekonań i celów.
- Testowanie : Możesz także pisać testy dla GOAL.
Program agenta GOAL
Przykład blokuje światowy problem
|
Inny przykład: wieloagentowy kontroler windy GOAL
|
Program agenta GOAL składa się z sześciu różnych sekcji, obejmujących odpowiednio wiedzę , przekonania , cele , reguły działania , specyfikacje działań i reguły postrzegania . Wiedza, przekonania i cele są reprezentowane w reprezentacji wiedzy , takim jak Prolog , programowanie zestawu odpowiedzi , SQL (lub Datalog ) lub język definicji domeny planowania , Na przykład. Poniżej ilustrujemy komponenty programu agenta GOAL przy użyciu Prologu.
Ogólna struktura programu agenta GOAL wygląda następująco:
główny: { }
Kod agenta GOAL użyty do zilustrowania struktury agenta GOAL to agent, który jest w stanie rozwiązać światowe problemy Blocks. Przekonania agenta reprezentują aktualny stan świata Bloków, podczas gdy cele agenta reprezentują stan docelowy. Sekcja wiedzy wymieniona obok zawiera dodatkową wiedzę koncepcyjną lub domenową związaną z domeną światową Blocks.
wiedza { blok ( za ), blok ( b ), blok ( do ), blok ( re ), blok ( mi ), blok ( fa ), blok ( g ). jasne ( tabela ). wyczyść ( X ) : - zablokuj ( X ), nie ( na ( Y
, X )). wieża ([ X ]) :- na ( X , tabela ). wieża ([ X , Y | T ]) :- na ( X , Y ), wieża ([ Y | T ]). }
Zauważ, że wszystkie bloki wymienione w sekcji wiedzy pojawiają się ponownie w sekcji przekonań , ponieważ pozycja każdego bloku musi być określona, aby scharakteryzować pełną konfigurację bloków.
przekonania { na (a, b), na (b, c), na (c, stół), na (d, e), na (e, stół), na (f, g), na (g, stół) . }
Wszystkie znane bloki są również obecne w sekcji celów , która określa konfigurację celu, która ponownie wykorzystuje wszystkie bloki.
cele { na(a,e), na(b,tabela), na(c,tabela), na(d,c), na(e,b), na(f,d), na(g,tabela) . }
Agent GOAL może mieć jednocześnie wiele celów. Cele te mogą być nawet sprzeczne, ponieważ każdy z celów może być realizowany w różnym czasie. Na przykład agent może mieć cel, aby obejrzeć film w kinie i być w domu (później).
W GOAL rozróżnia się różne pojęcia celu. Cel pierwotny to stwierdzenie, które wynika z podstawy celu w połączeniu z pojęciami zdefiniowanymi w bazie wiedzy. Na przykład wieża([a,e,b])
jest pierwotnym celem i piszemy cel(wieża([a,e,b]),
aby to zaznaczyć. Początkowo wieża([a,e,b])
jest również cel osiągnięcia, ponieważ agent nie wierzy, że a jest nad e, e jest nad b, a b jest na stole. Cele osiągnięć to prymitywne cele, co do których agent nie wierzy i są oznaczone przez a-goal(wieża([a,e,b])
. Przydatna jest również możliwość wyrażenia, że cel został osiągnięty . cel-a(wieża([e,b])
służy do wyrażenia, na przykład, że wieża [e,b]
została osiągnięta za pomocą bloku e na bloku b. Zarówno cele osiągnięcia, jak i pojęcie osiągnięty cel można określić:
a-cel(formuła) ::= cel(formuła), not(bel(formuła)) cel-a(formuła) ::= cel(formuła), bel(formuła)
Istnieje znacząca literatura na temat definiowania pojęcia celu osiągnięć w literaturze agenta (patrz bibliografia).
GOAL to język programowania oparty na regułach. Reguły są podzielone na moduły. Główny moduł agenta GOAL określa strategię wyboru akcji za pomocą reguł akcji. Pierwsza reguła poniżej mówi, że przesunięcie klocka X na klocek Y (lub ewentualnie stół) jest opcją, jeśli takie posunięcie jest konstruktywne, tj. przesuwa klocek na miejsce. Druga reguła mówi, że przeniesienie bloku X na stół jest opcją, jeśli blok X jest niewłaściwie umieszczony.
moduł główny {program{if a-goal(wieża([X,Y|T])), bel(wieża([Y|T])) następnie ruch(X,Y). jeśli a-goal(wieża([X|T])) to move(X,table). } }
Akcje, takie jak akcja przenoszenia użyta powyżej, są określane przy użyciu specyfikacji warunków wstępnych i końcowych w stylu STRIPS . Warunek wstępny określa, kiedy czynność może zostać wykonana (jest włączona). Warunek końcowy określa, jakie są skutki wykonania akcji.
specyfikacja akcji{ ruch(X,Y) { pre{ wyczyść(X), wyczyść(Y), wł.(X,Z), nie(X=Y) } post{ nie(w(X,Z)), wł.(X ,Y) } }
Wreszcie moduł zdarzeń składa się z reguł przetwarzania zdarzeń, takich jak percepty otrzymane z otoczenia. Poniższa reguła określa, że dla wszystkich otrzymanych perceptów, które wskazują, że blok X znajduje się na bloku Y, a X jest uważany za wierzchołek Z nierówny Y, nowy fakt dotyczący (X, Y) ma zostać dodany do bazy przekonań a atom na (X, Z) ma zostać usunięty.
moduł zdarzenia {program{ forall bel( percept(on(X,Y)), on(X,Z), not(Y=Z) ) do insert(on(X,Y), not(on(X,Z) )). } }
Powiązane języki programowania agentów
Język programowania agenta GOAL jest pokrewny, ale różni się od innych języków programowania agentów, takich jak AGENT0 , AgentSpeak , 2APL , Golog , JACK Intelligent Agents , Jadex i na przykład Jason . Cechą wyróżniającą GOAL jest koncepcja celu deklaratywnego . Cele agenta GOAL opisują co agent chce osiągnąć, a nie jak to osiągnąć. W odróżnieniu od innych języków, agenci GOAL są oddani swoim celom i usuwają cel dopiero wtedy, gdy został on całkowicie osiągnięty. GOAL zapewnia ramy programistyczne z silnym naciskiem na programowanie deklaratywne i możliwości rozumowania wymagane przez agentów kognitywnych.
Zobacz też
- Język komunikacji agenta
- Agent autonomiczny
- Architektura kognitywna
- Programowanie deklaratywne
- Praktyczne rozumowanie
- Racjonalny agent
- Notatki
Literatura dotycząca pojęcia celu:
- Lars Braubach, Alexander Pokahr, Daniel Moldt i Winfried Lamersdorf (2004). Reprezentacja celów dla systemów agentów BDI, w: Drugie międzynarodowe warsztaty na temat programowania systemów wieloagentowych.
- Philip R. Cohen i Hector J. Levesque (1990). Intencja to wybór z zaangażowaniem. Sztuczna inteligencja 42, 213–261.
- Andreas Herzig i D. Longin (2004). Ponowna analiza intencji C&l. W: Proc. z 9. Int. Konferencja Zasady reprezentacji i rozumowania wiedzy (KR'04), 527–535.
- Koen V. Hindriks, Frank S. de Boer, Wiebe van der Hoek, John-Jules Ch. Meyera (2000). Programowanie agentowe z celami deklaratywnymi. W: Proc. z 7. Int. Warsztaty dotyczące inteligentnych agentów VII (ATAL'00), s. 228–243.
- Anand S. Rao i Michael P. Georgeff (1993). Intencje i racjonalne zaangażowanie. Technika Przedstawiciel 8, Australijski Instytut Sztucznej Inteligencji .
- Birna van Riemsdijk, Mehdi Dastani, John-Jules Ch. Meyera (2009). Cele w konflikcie: semantyczne podstawy celów w programowaniu agentów . International Journal of Autonomous Agents and Multi-Agent Systems.