面向目标导向型智能体的通信与协议等价性探讨
立即解锁
发布时间: 2025-08-20 02:02:00 阅读量: 1 订阅数: 3 


多智能体系统中的代理通信与对话策略
### 面向目标导向型智能体的通信与协议等价性探讨
在多智能体系统中,智能体之间的通信和交互协议是至关重要的。本文将探讨目标导向型智能体之间的通信过程,以及如何判断两个协议是否相同。
#### 目标导向型智能体的通信
在目标导向型智能体的通信中,当言语行为为请求时,其消息解释过程可通过实践推理规则来明确。根据 FIPA 请求言语行为的语义,发送智能体可请求接收智能体执行某一动作。接收智能体需对该请求进行审议,以决定是否批准。若批准,接收智能体需向发送智能体发送同意消息,执行请求的动作,并最终告知请求智能体该动作已完成。这一过程可通过以下规则实现:
```plaintext
handle request(f)
MB
←−
received(ι, α, β, request, Action) |
(¬f(Action)?;
Send(reply(ι), β, α, refuse, Action))
+
( f(Action)?;
Send(reply(ι), β, α, agree, Action);
Action;
Send(reply(ι), β, α, inform, done(Action)))
```
此规则实现了如图 1 所示的协议。规则的头部是一个成就目标,有一个参数 f。该函数 f : G → BF 将目标映射为一个公式,此公式被视为批准请求的约束条件。该函数用于测试目标,结合选择操作(+),可定义智能体不批准请求和批准请求时的不同情况。前者回复拒绝消息,后者先回复同意消息,执行动作,再告知请求者动作已完成。需注意,此处未定义“未理解”消息,因为它仅在消息解析失败时发送。
##### 示例
下面通过一个请求对话示例来说明上述语义。该示例并非已实现智能体的执行跟踪,而是手动构建以展示预期跟踪。其语义不仅遵循标准 FIPA 语义,还遵循图 1 所示的标准 FIPA 请求协议。
对话过程如表 1 所示,该表有四列,第一列表示步骤编号,第二列表示智能体的心理状态名称(GB:目标库,MB:消息库),第三列和第四列表示通信智能体的心理状态。为简化,假设每个智能体在每一步执行一个动作,此限制仅为便于表示,通信协议并不要求如此。
在对话过程中,除非另有说明,智能体具有以下信念库:
- 智能体 a 的信念库 BBa = {salesPerson(b), action(b, SellPC)},即智能体 a 认为智能体 b 是销售人员,且 b 能够销售计算机(‘SellPC’)。
- 智能体 b 的信念库 BBb = {customer(a), pc(c1), pc(c2), pc(c3), available(c1, 400), available(c2, 500), available(c3, 600)},即智能体 b 认为智能体 a 是客户,且自己有三台不同的计算机,分别售价 400、500 和 600。
智能体 b 有一个基本动作 SellPC,其前置条件和后置条件如下:
```plaintext
PreCondition : {customer(A), pc(C), available(C, P)}
SellPC(A, C, P)
PostCondition : {¬available(C, P), sold(A, C, P)}
```
对话步骤如下:
| 步骤 | 智能体 a 心理状态 | 智能体 b 心理状态 |
| ---- | ---- | ---- |
| 1 | GB: buyPC(500) | startSelling() |
| 2 | GB: Send(1,a,b,request,SellPC(a,C,500)) | handleRequest(f) |
| 3 | GB: <br>MB: sent(1,a,b,request,SellPC(a,C,500)) | handleRequest(f) <br>received(1,a,b,request,SellPC(a,C,500)) |
| 4 | GB: <br>MB: sent(1,a,b,request,SellPC(a,C,500)) <br>received(1,a,b,request,SellPC(a,C,500)) | (¬(f(SellPC(a,C,500)))?; <br>Send(2,b,a,refuse,SellPC(a,C,500))) <br>+ <br>(f(SellPC(a,C,500))?; <br>Send(2,b,a,agree,SellPC(a,C,500)); <br>SellPC(a,C,500); <br>Send(2,b,a,inform,done(SellPC(a,C,500)))) |
| 5 | GB: <br>MB: sent(1,a,b,request,SellPC(a,C,500)) | Send(2,b,a,agree,SellPC(a,c2,500)); <br>SellPC(a,c2,500); <br>Send(2,b,a,inform,done(SellPC(a,c2,500))) |
| 6 | GB: <br>MB: sent(1,a,b,request,SellPC(a,c2,500)), <br>received(1,a,b,request,SellPC(a,c2,500)), <br>received(2,b,a,agree,SellPC(a,c2,500)) <br>sent(2,b,a,agree
0
0
复制全文
相关推荐








