10 KiB
Pytanie 13: Systemy agentowe i aktorowe - teorie, standardy, narzędzia
Pytanie
"Omówić szczegółowo teorie, definicje, standardy i narzędzia wykorzystywane przy projektowaniu i implementacji systemów opartych na koncepcji agenta i aktora."
Przedmiot: AASD (Agentowe i Aktorowe Systemy Decyzyjne)
📚 Odpowiedź główna
1. Definicje fundamentalne
Agent (wg Wooldridge & Jennings)
Agent = system komputerowy umieszczony w środowisku, zdolny do autonomicznego działania w celu realizacji celów.
┌─────────────────────────────────────────────────────────────────┐
│ ŚRODOWISKO │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Percepcja ┌─────────┐ Akcja │ │
│ │ ─────────────────→ │ AGENT │ ─────────────────→ │ │
│ │ (sensory) │ │ (effectors) │ │
│ │ │ Cele │ │ │
│ │ │ Wiedza │ │ │
│ │ │ Plany │ │ │
│ │ └─────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
Właściwości agenta (AARC)
| Właściwość | Opis |
|---|---|
| Autonomiczność | Działa bez bezpośredniej interwencji |
| Reaktywność | Reaguje na zmiany środowiska |
| Proaktywność | Inicjuje działania do realizacji celów |
| Społeczność | Komunikuje się z innymi agentami |
Aktor (model Hewitta, 1973)
Aktor = fundamentalna jednostka obliczeń, która:
- Ma prywatny stan
- Komunikuje się wyłącznie przez wiadomości
- Może tworzyć nowych aktorów
- Przetwarza jedną wiadomość naraz
┌────────────────────────────────────────────────────────────────┐
│ AKTOR │
│ ┌──────────────────┐ │
│ │ Mailbox │ ← wiadomości (kolejka) │
│ │ ┌─┬─┬─┬─┐ │ │
│ │ │m│m│m│m│ │ │
│ │ └─┴─┴─┴─┘ │ │
│ │ ↓ │ │
│ │ Behavior │ → przetwarzanie sekwencyjne │
│ │ (zachowanie) │ │
│ │ ↓ │ │
│ │ Stan prywatny │ → izolowany, niemutowalny z zewnątrz │
│ └──────────────────┘ │
│ │
│ Reakcje na wiadomość: │
│ 1. Wyślij wiadomości do innych aktorów │
│ 2. Utwórz nowych aktorów │
│ 3. Zmień własne zachowanie (become) │
└────────────────────────────────────────────────────────────────┘
2. Agent vs Aktor
| Cecha | Agent | Aktor |
|---|---|---|
| Cel | Inteligentne zachowanie | Współbieżność |
| Stan | Beliefs, Goals, Intentions | Prywatny, izolowany |
| Komunikacja | ACL (semantyka) | Wiadomości (asynchroniczne) |
| Autonomia | Wysoka (decyzje) | Średnia (reaktywność) |
| Pochodzenie | AI, systemy rozproszone | Teoria obliczeń |
3. Architektury agentów
BDI (Belief-Desire-Intention)
┌─────────────────────────────────────────────────────────────────┐
│ ARCHITEKTURA BDI │
│ │
│ Percepcja → BELIEFS (przekonania o świecie) │
│ ↓ │
│ DESIRES (cele do osiągnięcia) │
│ ↓ │
│ INTENTIONS (wybrane plany) │
│ ↓ │
│ Akcja │
│ │
│ Przykład: │
│ B: "Jest czerwone światło" │
│ D: "Chcę dojechać do celu" │
│ I: "Zatrzymam się i poczekam" │
└─────────────────────────────────────────────────────────────────┘
Subsumption Architecture (Brooks)
Warstwa 3: [Eksploruj] → najwyższy priorytet
↓ suppress
Warstwa 2: [Unikaj przeszkód]
↓ suppress
Warstwa 1: [Idź przed siebie]
↓
Effektory
Zachowania niskopoziomowe mogą być "nadpisane" przez wyższe.
4. Standardy komunikacji agentów
FIPA (Foundation for Intelligent Physical Agents)
FIPA-ACL (Agent Communication Language):
(inform
:sender agent1
:receiver agent2
:content (price item1 100)
:language FIPA-SL
:ontology trading-ontology
)
Performatywy FIPA:
| Performatyw | Znaczenie |
|---|---|
inform |
Informuje o fakcie |
request |
Prosi o wykonanie akcji |
query-if |
Pyta czy coś jest prawdą |
propose |
Proponuje transakcję |
accept-proposal |
Akceptuje propozycję |
reject-proposal |
Odrzuca propozycję |
cfp |
Call for Proposals |
KQML (Knowledge Query and Manipulation Language)
Starszy standard, podobny do FIPA-ACL.
5. Narzędzia i frameworki
Systemy agentowe
| Narzędzie | Język | Opis |
|---|---|---|
| JADE | Java | FIPA-compliant, najpopularniejszy |
| Jason | AgentSpeak | BDI, deklaratywny |
| SPADE | Python | Asynchroniczny, XMPP |
| NetLogo | Logo | Symulacje, edukacja |
| MASON | Java | Symulacje wieloagentowe |
Systemy aktorowe
| Narzędzie | Język | Opis |
|---|---|---|
| Akka | Scala/Java | Produkcyjny, dojrzały |
| Erlang/OTP | Erlang | Telekomunikacja, fault-tolerant |
| Orleans | C# | Microsoft, Virtual Actors |
| Pony | Pony | Capabilities, bezpieczny |
| Ray | Python | ML, distributed computing |
6. Protokoły interakcji
Contract Net Protocol
┌─────────┐ cfp ┌─────────┐
│ Manager │───────────────────→│ Bidder1 │
│ │←──────propose──────│ │
│ │ cfp ├─────────┤
│ │───────────────────→│ Bidder2 │
│ │←──────propose──────│ │
│ │ ├─────────┤
│ │───accept-proposal─→│ Winner │
│ │←─────inform────────│ │
└─────────┘ └─────────┘
🧠 Mnemoniki
"BDI = Believe, Desire, Intend":
- Beliefs = co wiem o świecie
- Desires = czego chcę
- Intentions = co zamierzam zrobić
"ARPS" - właściwości agenta:
- Autonomiczność
- Reaktywność
- Proaktywność
- Społeczność
"Aktor = Mailbox + Behavior + State":
- Kolejka wiadomości
- Logika przetwarzania
- Izolowany stan
❓ Pytania dodatkowe
Q1: "Czym różni się JADE od Akka?"
Odpowiedź: JADE to framework agentowy (FIPA, ACL, inteligentne zachowania), Akka to framework aktorowy (współbieżność, fault-tolerance, reactive streams). JADE dla AI/MAS, Akka dla systemów rozproszonych.
Q2: "Co to jest Yellow Pages w systemach agentowych?"
Odpowiedź: Usługa katalogowa (Directory Facilitator w FIPA) gdzie agenty rejestrują swoje usługi. Inne agenty mogą wyszukiwać agenty oferujące konkretne usługi. Analogia do książki telefonicznej.
Q3: "Jak Akka zapewnia fault-tolerance?"
Odpowiedź: Supervision trees - każdy aktor ma supervisora, który decyduje o reakcji na błąd (restart, stop, eskaluj). "Let it crash" philosophy - izolacja błędów.
🎯 Kluczowe punkty
- Agent = autonomiczny, reaktywny, proaktywny, społeczny
- Aktor = mailbox + behavior + isolated state
- BDI = Beliefs-Desires-Intentions (architektura)
- FIPA-ACL = standard komunikacji agentów
- JADE = agenty (Java), Akka = aktorzy (Scala)
📖 Źródła
- Wooldridge - "An Introduction to MultiAgent Systems"
- Hewitt - "A Universal Modular Actor Formalism for AI"
- FIPA Specifications - fipa.org
- Akka Documentation - akka.io