定义1.2 设 {xn,n=1,2,...}是所有领域中一列独立同分布的Agent知识量,分布函数均为 F(t),假定F(0)<1 。记
这里,υ平均(期望)更新时间间隔,T
n 是第n次更新发生的时间, N(t)表示Agent在时间[0,t]中发生的知识更新次数。
其中,m(t)=E[N(t)] 称为Agent知识的更新函数,有 。
m(t)的导数 。 f
n(t)是F
n(t) 的知识更新强度。
2.4 Agent的通信模块
在多Agent排队系统中,每个Agent自主的运行,但是由于每个Agent仅拥有不完全的信息和问题求解能力,所以多个Agent必须相互通信、协同工作。通信是协作的基础。采用消息通信是实现灵活复杂的协调策略的基础。使用规定的协议、Agent彼此交换的信息可以用来建立通信和协作机制。
通信模块主要包含如下的部分
[1]:
(1)socket接口:它的功能是将直接与协议有关的通信部分组合在一起,并给通信模块的其它部分提高一种通信方式,使通信模块的其它部分不用再考虑与发送协议有关的部分。socket接口包含以下内容。
服务线程:socket接口中有一个服务线程,它使用一个ServerSocket不停地监听Agent的端口地址,一旦发现有消息到来,就启动一个消息线程处理这个消息,然后继续监听。
消息线程:由服务线程启动。它的任务是读入消息,并将消息送到接受缓冲区。
客户线程:由发送线程启动。它的任务是将消息通过socket发出。
(2)接受缓冲区:用来缓存从外界发来的消息。
(3)发送缓冲区:用来缓存向外界发送的消息。
(4)发送进程:是一个常驻线程。它的任务是不断监视发送缓冲区,一旦有消息进入发送缓冲区就启动socket接口中的方法来将消息发出。
(5)接受线程:它的任务是不断查看接受缓冲区,一旦有消息进入接受缓冲区就启动一个过滤线程来对消息进行解释和处理。
(6)过滤线程:由接受线程启动。它调用语法分析将接受到的字符流的消息转换成符合语法结构的原语,然后调用解释器来对原语解释。
(7)解释器:解释并处理一些简单的且仅与通信模块有关的一些通信原语。
(8)地址薄:通信模块保留Agent的地址薄信息。
(9)消息发送函数:调用转化函数将原语转化成字符流放入发送缓冲区。
下面介绍几种常用的消息:
bind(agenturl,sendername,receiverurl)
//发送注册消息给对方
shutdown(content,sendername,receiverurl);
//发送注销信息给对方
inquire(content,sendername,receiverurl,senderurl);
//询问接受Agent信息
request(content,sendername,receiverrurl,senderurl);
//向接受Agent发送请求信息
2.5 Agent的规划模块
在AI领域,规划是通过模拟人类求解复杂问题的过程而形成的一种方法。规划的问题求解方法分为两个过程:规划过程和执行过程。其中,规划过程是针对某一任务,求取完成该任务的动作序列,这一动作序列称为计划。计划是规划过程的输出结果。执行过程是指按照集合实现问题求解,并监控问题求解的进行,当出现意外情况计划无法执行时,调整行为集合或再次规划,直至任务完成。
Agent的规划模块负责建立中短期的行动计划。它是一个局部的规划。每个Agent根据目标集合、自身的状态、对环境和其它Agent的了解,以及以往的经验规划自身的行为。
Agent规划常用方法之一是将Agent的计划库定义为一个与或图结构,其中,每一条计划由4部分组成。
(1)计划目标表示该计划能达到的目标;
(2)计划的前提表示计划执行需要满足的条件;
(3)计划体表示计划内容,由计划序列和计划子目标组成;
(4)计划执行结果表示执行计划后外部世界的更新结果。
有了这些基本要素以后,我们可以根据需求构造基本的Agent了,下面给出Agent的工作流程及算法。