290 likes | 321 Views
Communication in Multi-Agent Systems. Procedural Reasoning System. rational reasoning autonomy , proactiveness , reactiveness , social ability communication based on human speech. Speech Act Theory. type performative verb / illucutionary force type of action
E N D
ProceduralReasoning System • rational reasoning • autonomy, proactiveness, reactiveness, socialability • communicationbased on human speech
Speech Act Theory • type • performative verb / illucutionaryforce • type ofaction • representatives, directives, commissives • content • propositional content / perlocutionary force
Communication Languages • Knowledge Query and Manipulation Language (KQML) • FIPA Agent Communication Language (ACL) • nocommunication in original AgentSpeak • .send and .broadcast
Annotations belief(arg)[source(percept)]
Annotations belief(arg)[source(percept)] +belief(arg);
Annotations belief(arg)[source(percept), source(self)]
Annotations belief(arg)[source(percept), source(self)] -belief(arg);
Annotations belief(arg)[source(percept)]
tell • inform about something • add expression to receiver’s belief base
tell • inform about something • add expression to receiver’s belief base … … open(door1)[source(percept)] +open(Door)[source(percept)] <- .send(red, tell, open(Door)).
tell • inform about something • add expression to receiver’s belief base … open(door2)[source(percept)] … open(door1)[source(percept)] +open(Door)[source(percept)] <- .send(red, tell, open(Door)).
tell • inform about something • add expression to receiver’s belief base … open(door2)[source(percept)] … open(door1)[source(percept)] open(door2)[source(silver)] +open(Door)[source(percept)] <- .send(red, tell, open(Door)).
untell • retract previous statement • remove expression from receiver’s belief base
untell • retract previous statement • remove expression from receiver’s belief base … open(door1)[source(percept)] open(door2)[source(silver)] … +open(Door)[source(percept)] <- .send(red, tell, open(Door)). -open(Door)[source(percept)] <- .send(red, untell, open(Door)).
untell • retract previous statement • remove expression from receiver’s belief base … open(door1)[source(percept)] … +open(Door)[source(percept)] <- .send(red, tell, open(Door)). -open(Door)[source(percept)] <- .send(red, untell, open(Door)).
achieve/unachieve • directive • tell other agent to do something • add intention • unachieve removes intention
achieve .send(red, achieve, open(door1));
socAcc • social acceptance function • agent • illocutionary force • propositional content • message is discarded if socAcc returns false
KQML Plans /* ---- achieve performatives ---- */ @kqmlReceivedAchieve +!kqml_received(KQML_Sender_Var, achieve, KQML_Content_Var, KQML_MsgId) <- .add_annot(KQML_Content_Var, source(KQML_Sender_Var), CA); !!CA. @kqmlReceivedUnAchieve[atomic] +!kqml_received(KQML_Sender_Var, unachieve, KQML_Content_Var, KQML_MsgId) <- .drop_desire(KQML_Content_Var).
askOne • retrieve one expression from the other agent’s belief base
askOne • retrieve one unifying expression from the other agent’s belief base (asynchronous) … open(door1)[source(percept)] open(door2)[source(percept)] … .send(red, askOne, open(Door));
askOne • retrieve one unifying expression from the other agent’s belief base (asynchronous) … open(door1)[source(percept)] open(door2)[source(percept)] … open(door1)[source(red)] .send(red, askOne, open(Door));
askOne /* ---- ask performatives ---- */ @kqmlReceivedAskOne1 +!kqml_received(KQML_Sender_Var, askOne, KQML_Content_Var, KQML_MsgId) <- ?KQML_Content_Var; .send(KQML_Sender_Var, tell, KQML_Content_Var, KQML_MsgId). […]
askOne • retrieve one unifying expression from the other agent’s belief base (synchronous) … open(door1)[source(percept)] open(door2)[source(percept)] … .send(red, askOne, open(Door), Reply); Reply = open(Door);
askAll • retrieve all unifying expressions from the other agent’s belief base … open(door1)[source(percept)] open(door2)[source(percept)] … .send(red, askAll, open(Door), Reply);
askAll • retrieve all unifying expressions from the other agent’s belief base … open(door1)[source(percept)] open(door2)[source(percept)] … .send(red, askAll, open(Door), Reply); [open(door1)[source(red)], open(door2)[source(red)]]
Sources • Rafael H. Bordini, Jomi Fred Hübner, Michael Wooldridge: programming multi-agent systems in AgentSpeak using Jason • Renata Vieira, Alvaro Moreira, Michael Wooldridge, Rafael H. Bordini: On the Formal Semantics of Speech-Act Based Communication in an Agent-Oriented Programming Language • Specification of the KQML Agent-Communication Language • FIPA 97 Specification Part 2 Agent Communication Language