四、案例研究
以下介绍几个主体的例子,以及如何在eXAT中实现。
(1)消息模式匹配
这是第一个例子,主体等待特定消息的到来,然后做些事情。具体地,从主体“Alice”发来LISP写的“inform”消息,我们就令主体“Bob”开始action行动。
-module (agent_bob).
-export ([action/3, start/0]).
action ([inform, alice, Receiver, Ontology, lisp, Content, Slots], State, Agent) ->
% ’inform’ from Alice ... do the action
start () ->
agent:new (bob, receiver, {agent_bob, action}).
这段代码展示了主体Bob的eXAT实现:
函数start/0调用agent:new/4启动主体Bob。参数意思是:bob:主体名字,receiver:作为行为骨架的FSM模板的名字,agent_bob:实现FSM模板规定行为的函数名字。这里的receiver是eXAT内建的,它只有一个状态,收到消息后它引发行动并返回状态。
消息的模式匹配,通过Erlang的匹配机制实现。消息采用ACL格式:
[ Performative-name, Sender, Receiver,Ontology, Language, Content, Slots ]
上面的那段代码中,函数action的第一个参数,就是以列表表示的消息模式。
再来看
Erlang面向Agent编程的利器:eXAT(4)
最新推荐文章于 2024-07-12 23:29:12 发布