《1 引言》

1 引言

目前对Agent 理论模型的研究主要基于Bratman提出的理性主体理论[1]。其研究核心是对Agent 心智状态的描述,人们侧重研究Agent的信念(belief)、愿望(desire)、意图(intention)的关系和形式化描述,建立Agent的BDI模型。主要工作包括Moore的形式逻辑建模[2],Cohen和Levesque使用正规模态逻辑的可能世界模型对Agent的BDI特性进行描述[3],Rao和Georgeff 提出了理性 Agent的BDI模型,并用非线性的分支时态逻辑建模[4],以及最近刘贵全等人基于情景演算和三值逻辑对多Agent进行建模[5]等。但基于BDI对Agent的建模主要存在以下几个方面的问题:a.所建立的Agent模型和具体的Agent结构之间缺乏明确的映射关系,难于编程实现Agent的抽象模型;b.BDI模型对Agent认知过程的描述未能充分体现其主动性;c.由于标准的可能世界语义的不足,即逻辑全知问题,使得基于上述理论建立的Agent模型在逻辑上不承认无知[6]

J.P.Das等人提出的 PASS(planning,attention, simultaneous processing and successive processig)认知模型[7],即计划一注意一同时性加工一继时性加工模型,是认知心理学的代表。PASS模型把智力研究的焦点从特质分析转移到内部过程的探索上,致力于从信息加工的角度刻画智力操作的心理机制。PASS模型基于Luria 提出的认知加工的三层机能单元模型[8],便于对认知过程的分析与评估,由于其结构清晰的神经生理学理论基础,可以弥补BDI模型的不足,特别是能够加强对Agent认知过程的描述,因此,结合PASS模型,笔者研究了Agent的认知过程,提出了一种新的Agent理论模型PASS-BDI。

《2 PASS模型的理论框架》

2 PASS模型的理论框架

PASS模型认为人类的认知加工包括3个相互协调的机能单元,每个机能单元都有对应于人脑的特定功能区[7]。第一机能单元是人类心理过程的基础,它维持了一种合适的唤醒状态。只有达到合适的唤醒状态,个体才能接受和加工信息。唤醒状态为有意的注意行为提供了可能。唤醒是一种皮层警觉状态,而注意则是一种更为复杂的认知活动。

若皮层唤醒状态适宜,就可能产生2种常见类型的注意-选择性注意和分配性注意。选择性注意的任务要求主体关注有关的刺激或对有关的刺激做出反应,而忽视无关刺激;分配性注意的任务是测量在不降低效率的情况下同时对不同活动进行操作的程度。

第二机能单元与个体接受、加工、维持来自外部世界的信息有关。可以将其功能划分为同时性加工和继时性加工过程2种类性。同时性加工包括将刺激整合成集合,或是对有共同特性的许多刺激进行再认。继时性加工往往涉及将刺激整合成特定的系列,使各成分形成一种链状结构。

第三个机能单元要求个体形成行动的计划,执行并证明计划的有效性。计划的产生、选择和执行是计划过程的3个主要方面。个体在设想出一个方法之前必须认识到寻找计划的必要性。如果个体的知识基础范围内没有合适的计划,那么就可能不会使用计划,或者有可能通过指导或通过发明去寻找或获得一个计划。如果产生的计划不止一个,则关键是选择一个最好的计划,并对这些方案的有效性加以监控。

所有的认知过程都是在知识基础这一背景中运行,知识基础包括通过正式和非正式的方式积累起来的信息。正式的知识是指通过教学和阅读获得的信息,非正式的知识是通过个人的经验获得的。3个机能单元彼此之间有一种动态联系,在这种动态联系中,它们对个体的经验做出反应,服从于发展的变化,并形成相互联系的系统。

《3 Agent的PASS-BDI模型》

3 Agent的PASS-BDI模型

参照PASS认知模型构造了Agent的PASS-BDI模型。该模型可以表示为一个10元组。

定义1 Agent=(ID,S,K,I,Input,Output,Communicator,Attention,Coder,Planner) 元组中各元素的含义如下:

ID:确认Agent身份的唯一标识号;

S:Agent的内部状态,包括其心智状态及对其他Agent的信任态度等;

K:Agent 所拥有的知识,包括事实、信念、模型和规则等,知识包括知识基础中的知识和Agent在交互过程中获得的临时性知识;

I:Agent的意图,指的是Agent的行为目的和所需完成的任务等;

Input:Agent用于监听外部世界的感知器;

Output:Agent用于产生事件,影响外部环境的效应器;

Communicator:Agent之间交换信息的通信器,是一个虚拟组件,由Input和Output的部分功能交织组合;

Attention:Agent的第一功能区,是Agent核心对外的直接感官器官。对应于PASS模型第一功能区,将其命名为警觉器;

Coder:Agent的编码器,对应于PASS模型第二功能区,完成对信息的同时性和继时性加工;

Planner:Agent的规划器,对应于PASS模型第三功能区。相当于Agent的中央处理器。

上述定义基于这样一个基本思想,即软件Agent是一个具有特定能力的计算主体,它的主要功能通过规划器中定义的操作方法体现,但为了更好地完成任务,它需要进行信息的搜集、处理和再生,因此,软件Agent与外界的交互主要是信息的交流。所定义的Agent以2种方式与外界进行信息交流:一方面,通过感知器与效应器及其虚拟组成的通信器对与自身意图相关的信息进行搜集和传播,为实现自己的意图由编码器结合Agent自身的基础知识对所获取的信息进行加工和处理:另一方面,通过虚拟通信器与其他Agent互通有无,了解环境状况,搜集有关的更广泛的信息,从而调整内部状态、知识结构和意图等。

基于上述对软件Agent的定义可以确定软件Agent的内部体系结构,常见的结构分为慎思结构、反应结构和混合结构,笔者给出的结构属于混合结构。公共基础数据库构建于多Agent环境的公共平台上,为所有的Agent提供数据和知识支持,各Agent也可对公共基础数据库中的数据提出修改意见或者直接修改之。公共基础数据库由面向OLAP和OLTP的基础数据、模型库、规则库等组成。如图1所示,软件Agent的结构中除了具有自己独立的知识库、规则库、意图等基本属性外,还由以下7个分工不同的对象聚合而成:

1)感知器(Input)负责事件的监测,将外界环境中的刺激转交警觉器Attention。

2)效应器(Output)    负责在Agent操作完成后,将操作结果以事件的形式发布给系统中的相关部分,并期望影响外部环境。

3)虚拟通信器(Communicator)    是感知器

《图1》

图1 PASS-BDI Agent内部结构图

Fig.1 The kernel structure of PASS-BDI Agent

和效应器的交叉组合,仅负责Agent之间以消息协议的方式进行通信,并将通信结果提交警觉器。

4)警觉器(Attention)    负责Agent对外界刺激的反应,负责感知器、效应器和虚拟通信器的管理,并完成对感知器提交信息的过滤和效应器反应形式的组织。警觉器同时提醒编码器对信息的进一步处理,提醒规划器对 Agent 意图和目标的调整。

5)编码器(Coder) 完成Agent感知到的事件的处理,按照意图和规划目标的要求进行同时性加工和继时性加工,以辅助规划器调节 Agent的目标和意图,并完成规划器提交的数据和知识查询及计算任务。

6)规划器(Planner)    根据Agent的当前状态,通过完成一定的操作来调整 Agent的知识结构、意图和状态等,完成Agent规划并指导警觉器和编码器完成相关任务的执行。

7)意图管理器(Intention)    负责管理和调整Agent的意图。

《4 PASS-BDI模型的形式化描述》

4 PASS-BDI模型的形式化描述

《4.1 PASS-BDI模型心智状态》

4.1 PASS-BDI模型心智状态

焦文品和史忠植等[9,10]将多价π-演算[11]引入到Agent心智状态与行为特征的描述中,并给出了Agent的信念、目标和意图等的形式化描述,可
以从静态特性和动态特性2个方面很好地刻画Agent的行为。采用π-演算将PASS-BDI Agent的心智状态描述如下:

\(AgentIntelligence def Belief  \mid  Goal  \mid  Intention  =  (FactBaseBelief  (x) \mid  AttitudeBaseBelief(ID,  \tau, s)  )  \\ \left|\operatorname{goal}_{\mathrm{ID}}(x) \cdot \operatorname{fact}_{\mathrm{ID}}(x)\right|(\operatorname{IntendID}(t, g) \cdot \overline{\operatorname{time}}(t) \mid \\ \left.\overline{\text { believe }_{\mathrm{ID}}}(\mathrm{ID}, t, g) \mid \operatorname{goal}_{\overline{\mathrm{ID}}}(g)\right)\)

其中: \(FactBaseBelief  (x)  def fact  _{\text {ID }}(x) \cdot  Fact  _{\text {ID }}(x) \), 表示事实类信念;

\(AttitudeBaseBelief (nid,  \tau, s)) \underline{\underline{\operatorname{def}}} \operatorname{time}(t) \cdot[t   =\tau] \\\left(\right.  believes  \left.\left._{\mathrm{ID}}(\mathrm{nid}, \tau t, s)\right) \cdot \overline{\operatorname{nid}}(t, s)\right) \), 表示主观态度类信念。

《4.2 PASS-BDI模型认知过程的描述》

4.2 PASS-BDI模型认知过程的描述

4.2.1 第一机能单元-警觉器    警觉器在感知到外界的刺激或来自于内部规划器的监听要求时,进入唤醒状态;警觉器在一定的时间段内未监听到外界刺激时,进入休眠状态,以节省系统资源。

唤醒进程定义如下:

\(StateArouse def input \mathrm{ID}(t, x) \cdot((v s) \\ \left(\overline{\text { state }_{\mathrm{ID}}}(\tau t, g, s) \cdot\right. StateActive \left.\left.(s)\right)\right) \) (2)

其含义为:Agent在时刻t接收到输入器inputID端口传送来的外界环境的刺激,将根据自身的当前状态和目标决定一个新的状态s,并在端口 stateID上输出,然后执行进程 StateActive,改变或保持Agent当前状态。其中,子进程 StateActive定义为

\(StateActive def perceive { }_{\mathrm{ID}}(\mathrm{s}) \cdot((v s) \cdot \left([s=\right. active ] Set Active { }_{I D}+[s \neq active \left.\left.] 0\right)\right) \)(3)

其含义为:进程在端口 perceiveID接收到状态s,若为active,则执行进程SetActiveID唤醒进程;否则,什么也不执行,相当于执行空进程0。

休眠进程定义为

\(StateSleeping \underline{\underline{\text { def }} ! \operatorname{clock}(t) \cdot} \\ \left([t=\tau] \overline{\text { state }_{\mathrm{ID}}}(\tau t, g, s) \cdot \text { StateSleep }(\mathrm{s})\right)\)(4)

其含义为:处于唤醒状态的Agent不断接受时钟端口的输出,当在一段时间内(t=τ)未接受到外界刺激或Agent 内部的唤醒请求时,Agent根据当前的目标g判定是否应该休眠,并将判定结果s在端口stateID输出,然后执行子进程 StateSleep,子进程StateSleep定义为

\(StateSleep def perceive _{\mathrm{ID}}(s) \cdot((v s)([x= sleeping ] \\ SetSleeping _{\mathrm{ID}}+[x \neq sleeping \left.\left.] 0\right)\right) \)(5)

其含义为:进程在端口 perceiveID接收到状态s,若为sleeping,则执行进程 SetSleeping将进程置为休眠状态;否则,什么也不执行,相当于执行空进程0。

若Agent接收到来自规划器(Planner)的注意要求,则进入注意状态,注意状态又分为选择性注意和分配性注意。选择性注意进程定义为

\(SelectiveAttention def Planner (t, x) \cdot \left((v s)\left(\overline{\text { state }_{I D}}(\tau t, g, s) \\ \cdot\right.\right. StateSelectiveAttention \left.)\right)\)(6)

其含义为:进程在t时刻从端Planner接收到选择性注意请求x,则根据当前的目标g判定是否应该进入选择性注意状态,并将判定结果s在端口stateID输出,然后执行子进程 StateSelectiveAttention, 该子进程定义为

\(StateSelectiveAttention \underline{\underline{\operatorname{def}}}(v s) perceive _{\mathrm{ID}}(s) \\ \cdot ([s= selectivestate ] SetSelectiveState + [s \neq selectivestate ] 0 )\)(7)

其含义为:进程从端口 perceiveID接收到其状态名字s,若s=selectivestate,则将当前状态置为选择性注意状态;否则,结束进程(0)。

分配性注意进程定义为

\(DivededAttention def Planner (t, x) \cdot((v s) \\ \left(\overline{\text { state }_{\mathrm{ID}}}(\tau t, g, s) \cdot\right. StateDividedAttention \left.)\right) \)(8)

其含义为:进程在t时刻从端口Planner接收到分配性注意请求x,则根据当前的目标g判定是否应该进入分配性注意状态,并将判定结果s在端口 stateID 输出,然后执行子进程StateDividedAttention,该子进程定义为

\(StateDividedAttention \underline{\underline{\operatorname{def}}}(v s) perceive _{\mathrm{ID}}(s) \\ \cdot ( [s= dividedstate ] SetDividedState + [\mathrm{s} \neq dividedstate ] 0 )\)(9)

其含义为:进程从端口 perceive接收到其状态名字s,若s=dividedstate,则将当前状态置为分配性注意状态;否则,结束进程(0)。
警觉器进程由唤醒子进程、休眠子进程、选择性注意子进程、分配性注意子进程等组成,综合式(2)至式(9),可以给出警觉器进程为

\(Attention def StateArouse | StateSleeping | \\ StateSelectiveAttention | StateDividedAttention\)(10)

4.2.2 第二机能单元-编码器    编码器的任务就是进行同时性加工和继时性加工,并将接受到的外界刺激转换为Agent内部的知识,也可建议修改公共基础数据库或直接修改公共基础数据库。编码器将对外界请求或自身目标完成的结果告知规划器,并同时经效应器输出。

同时性加工要求按照目标的要求,对有共同特性的许多目标进行再认,并对刺激过滤结果进行概括处理。同时性加工进程定义为

\(SimuProce \underline{\underline{\operatorname{def}}}(v i) perceive _{\mathrm{ID}}(t, g) . \\ \left(\operatorname{Input}_{\mathrm{ID}}(\mathrm{x}) \mid\right. FindID \left.(g, i)\right) \cdot([i \neq process ] 0+ [i= process ]\left(\operatorname{Proc1}_{\mathrm{ID}}\left(x_{1}\right) \\\left|\operatorname{Proc}_{\mathrm{ID}}\left(x_{2}\right)\right| \ldots \mid\right. \left.\left.\operatorname{Procn}_{\mathrm{ID}}\left(x_{n}\right)\right) \mid \overline{\text { GeneProc }_{\mathrm{ID}}}\right) \)(11)

其含义为:进程在时刻t从端口 perceiveID接收到其目标g,则开始监听端口 InputID的外界刺激x,并同时经子进程FindID(g,i)查询Agent的基本知识与意图i,判定Agent是否可以完成该目标。紧接着执行下面的复合进程:若该Agent不能完成该目标(i≠process),则结束进程(执行进程0);否则,并行执行多个子进程ProckID(xk),xk为各子进程按照自己的功能要求对刺激x进行过滤后的结果。各子进程ProckID(xk)的结果最后经子进程GeneProcp汇总输出。

继时性加工要求将刺激整合成特定序列,各序列子元之间的输入输出相互衔接。继时性加工进程定义为

\(SuccProc \underline{\underline{\operatorname{def}}}(v i) perceive _{\mathrm{ID}}(t, g) . \\ [i= Process ]\left(y(x) \cdot \operatorname{Proc1}_{\mathrm{ID}} \\ \cdot \bar{y}(x)|\ldots|\right. \left.\left.y\left(x_{n-1}\right) \cdot \operatorname{Procn}_{\mathrm{ID}} \cdot \bar{y}\left(x_{n}\right)\right)\right)\)(12)

其含义为:进程在时刻t从端口 perceiveID接收到目标g,则开始监听端口InputID的外界刺激x,并同时经子进程FindID(g,i)查询Agent的基本知识与意图i,判定Agent是否可以完成该目标。紧接着执行下面的复合进程:若该Agent不能完成该目标(i≠Process),则结束进程(执行进程0);否则,串行执行多个子进程ProckID(xk),每个子进程ProckID(xk)都首先在端口y上接收上一个子进程的输出xk-1,然后进行处理,最后在端口y输出其处理结果xk,作为下一个子进程ProckID(xk)(l=k+1)的输入。

综合式(11)和式(12)给出编码器进程的定义为

\(Coder def SimuProc \mid SuccProc\)           (13)

4.2.3 第三机能单元-规划器 规划器产生了一个新的目标之后,如果实现该目标的方法是明显的,那么,Agent就会在它的知识基础中寻找一种方法。如果这种方法超出其知识基础,就需要产生行动规划并检验这个规划,若该规划可行,就执行;否则,产生新的规划。规划完成后,需判定该规划并修正基础知识。

规划产生进程定义为

\(PlanProduce \underline{\underline{\operatorname{def}}}(v y) \operatorname{goal}_{\mathrm{ID}}(g) \cdot \\ (Find _{\mathrm{ID}}( knowledge, \left.i) \cdot \bar{x}(y)\right) \cdot \\ ( [y= finded ] PlanExcute +[y \neq finded ] NewPlan ) \) (14)

其含义为:进程从端口goalID接收目标g,紧接着查找其知识基础 knowledge并参照其意图i寻找实现目标的方法,寻找结果在端口x输出。若找到了实现目标的方法(y=finded),则执行进程 PlanExcute完成规划;否则(y≠finded),执行子进程NewPlan以产生规划。子进程NewPlan定义为

\(NewPlan def \overline{\text { Communicat }}(t, g) \mid \\ \left(\right. W ait _{\text {ID }}(\tau t , plans ) \cdot \bar{x}( plans \left.\left.)\right)\right) ! PlanSelect\)(15)

其含义为:进程在时刻t自端口CommunicatID输出其目标g,请求其他Agent的协作,并启动等待进程WaitID接收其他 Agent帮助产生的规划 plans,tt表示一定的时延,接收到的规划可能有0个或多个。等待进程在端口x输出其接收到的规划,并执行规划选择进程 PlanSelect。
规划选择进程定义为

\(PlanSelect \underline{\underline{\operatorname{def}}}(v y)\left(\right. perceive _{\mathrm{ID}} (plans) \\ ( Check _{\mathrm{ID}}( knowledge, i) \cdot \bar{x}(y) \cdot \\ ([y=\varnothing] PlanProduce +[y \neq \varnothing]( Filter \mid PlanExcute )) \)(16)

其含义为:进程在端口 perceiveID接收到规划plans,根据其基础知识 knowledge和意图i用子进程Checkp检查该规划,并在端口x输出其检查结果。若检查结果为空(y=Ø),则表示该Agent对目标g无知,启动进程PlanProduce重新产生规划,否则(y≠Ø)过滤(Filter子进程)并执行特定规划(PlanExcute)。

规划执行进程定义为

\(PlanExcute \underline{\underline{\operatorname{def}}}(v y) (perceive { }_{\mathrm{ID}}( plans) ) \cdot \\ (Excute \left._{\mathrm{ID}} \cdot \bar{x}(y)\right) \cdot(( Evaluate ( plan, y) \cdot \\ \bar{x}(z)) \mid Modify ( knowledge, i) \mid([y=\varnothing] \mid 0+ \\ [y \neq \varnothing] PlanProduce\)(17)

其含义为:进程在端口 perceiveID接收到规划plans,用子进程ExcuteID执行相关任务,在端口x输出其执行结果,并根据需要用子进程 Modify 修正其基础知识 knowledge和意图i,同时判定,若规划执行完毕且无更好的规划(y=Ø),则结束进程(0);否则(y≠Ø),执行进程PlanProduce产生新一轮的规划。

由式(14)至式(17)的定义可见,规划器是一个递归进程。规划器进程定义为

\(Planner def PlanProduce \mid PlanSelect \mid PlanExcute\)  (18)

综上所述,可以将PASS-BDI模型的认知过程描述为

\(AgentCongnitive def Attention \mid Coder \mid Planner\)(19)

即其认知过程由警觉器式(10)、编码器式(13)、规划器式(18)共同组成。

《4.3 PASS-BDI模型整体行为》

4.3 PASS-BDI模型整体行为

Agent的整体行为主要包括Agent的行为规范、Agent的自适应能力、Agent的接口等,至于多Agent 环境下,Agent的联合意图及协作规划等,将另文讨论。下面的描述省去了对有关表达式含义的详细描述。

Agent行为规范 Agent行为规范一方面用来规定当Agent要达到某种目标时应该或将要采取的行动,相当于其规划,另一方面用来约束当Agent处于某种状态(或感知到某种刺激)时的行为模式。当动作完成时,Agent进入预期的状态。行为规范进程定义为

\(ActRule def Planner (g) \mid perceive _{\mathrm{ID}}(t, p) \cdot \left.\left.\overline{\text { Intend }_{\mathrm{ID}}}(t, g) \mid \text { Planner }(g)\right)\right) \)   (20)

Agent的自适应能力:Agent的自适应能力主要表现为知识及能力的自我更新、目标的自我调整等。

知识更新进程包括新知识更新、外界刺激引起的知识更新和知识的反省等,分别定义如下:

Agent在接收到新的知识后,会按照自己的知识和意图检查这些新知识,若新知识符合自己的意图,并和原有的知识一致,则更新自己的知识库;否则,丢弃新知识。新知识更新定义为

\(ReceiveKnowledge def receive ID ( nid ) \cdot \\ \overline{\text { nid }} \cdot Check _{\mathrm{ID}} (knowledge, rule, Intention) \\ (v result )([ result = consisting ] UpdateKnowledge + \\ [ result \neq Consisting ] 0 )\)     (21)

Agent在感知到外界的刺激后,同样需要检查自己的知识、规则、意图等,判定自己的感知历史中是否包含对类似刺激的反应能力,若不包含,则
需要更新自己的知识。对刺激的更新定义为

\(InsKnowledge def perceive _{\mathrm{ID}}(x) . \\ Check _{\mathrm{ID}} (knowledge, rule, Intention) \\ (v result )([ result = consisting ] UpdateKnowledge + \\ [ result \neq Consisting ] 0 )\) (22)

Agent在经历了一定的生存周期后,其经验和知识都有了长足的进展,此时,需要对自己的知识重新进行归类和整理,也可以称为历史经验学习,这一过程可以定义为

\(ExperienceLearn \underline{\underline{\operatorname{def}}}[t=\tau] \cdot Check _{\text {ID }} \\ ( knowledge, rule, Intention) \mid UpdateKnowledge\)  (23)

综合式(21)、式(22)和式(23),可将Agent的知识更新进程定义为

\(Knowledge def ReceiveKnowledge| InsKnowledge| ExperienceLear\)      (24)

Agent可以通过2种途径来更新其能力:a.直接向外界发出请求,外界则返回特定的服务或知识。b.Agent可通过自我反省,进行能力的更新。
请求外界帮助的能力更新过程定义为

\(RepCap \underline{\underline{\operatorname{def}}}(\operatorname{Req}(w, x) \mid \\ \operatorname{ReqKnowledge}(w, c)) . UpdateCap\)  (25)

自我反省的能力更新过程定义为

\(RenewCap \underline{\underline{\text { def }}}[x= req ]\left(\left(\right.\right. Fact _{\text {ID }}(x) \mid \\ FactBaseBelief (x)) -UpdateCap (x) )\)    (26)

综合式(25)和式(26),可将Agent 能力的更新进程定义为

\(Capability def RepCap | RenewCap\)  (27)

目标的调整:Agent既可能出于自身的需要,也可能出于外界的需求,要对自己的目标进行调整。当Agent感知到外界的某种需求时,判断是否有能力满足该需求,如果它所掌握的知识及能力足以实现该需求所蕴含的目标,则将该目标作为自己的新目标之一。

\(RenewGoal \underline{\underline{\operatorname{def}}}[x=g]\left(\left(\overline{\text { Fact }_{\mathrm{ID}}}(x) \mid\right.\right. \\ FactBaseBelief (x) \cdot \operatorname{UpdateGoal}(x))\)(28)

综合式(24)、式(27)、式(28),形成Agent的自适应能力如下:

\(Adapt def Knowledge | Capability | RenewGoal\)  (29)

接口特性:Agent的接口特性包括:a.Agent向外界提供的服务;b.Agent要实现自己的目标需要外界提供的服务;c.Agent与外界进行通信的通道,这些通道不仅是传输服务的媒介,也是接收外界信息或

向外界发送信息的端口,在PASS-BDI模型中对应于其感知器、效应器和虚拟通信器。

Agent向外界提供的服务定义为

\(AgentServers def! \left(S_{\text {ID }}\left(\right.\right. askAgent \left.{ }_{I D}, y\right) \cdot \\ \left.\left((\bar{x}(\operatorname{sid}) \cdot \operatorname{sid}) \mid \overline{\mathrm{Fact}_{\mathrm{ID}}}(\operatorname{sid})\right)\right)\)  (30)

Agent向外界请求的服务定义为

\(Agent \operatorname{Re} q \underline{\underline{\operatorname{def}} \bar{R}}(w, r) \cdot \\w(\text { nid }) \cdot \overline{\text { nid }} \cdot \text { ExcuteNext }\)  (31)

请求服务需申明哪儿请求和请求什么,请求的结果同样是以函数指针形式返回的服务或者以指针形式返回的知识。
Agent与外界进行的通信依赖 Agent的警觉器完成,关于警觉器的定义请参见式(10)。

综合式(10)、式(30)和式(31),可将Agent的接口特性定义为

\(Agentinterface def AgentServesAgent \operatorname{Re} q \mid Attention\)     (32)

综合式(20)、式(29)和式(32),可将PASS-BDI模型的整体行为定义为

\(AgentActionRule def ActRule |Adapt | AgentInterface\)        (33)

即PASS-BDI模型的整体行为由其行为规范、自适应能力、接口特性等共同决定。

《5 PASS-BDI Agent 在DAI中的应用》

5 PASS-BDI Agent 在DAI中的应用

DAI系统中的分布式协作是MAS技术研究的热点和难点之一,基于组织结构的MAS协作已成为这一研究领域的一个重要分支,然而,现有的研究大都集中于理论模型的探讨,从实现技术上讲,稍显欠缺。应用多价π-演算的形式化方法,可以对系统进行精确的且无二义性的描述,能比较方便地转换为实际的程序,并能在此基础上进行推理,以验证其正确性和合理性。下面首先给出MAS中环境和组织的定义,并在此基础上给出组织活动中单个Agent的行为过程。

定义2 MAS所处环境E=(A,C,G,R,K),其中A为Agent的集合,A=|Agent1,Agent2,...,Agent,l,n为非负整数;C为A中

各个Agent能力的并集,\(C=\bigcup_{i=1}^{n} \text { Agent }_{i . c} \);G为A中各个Agent目标的并集,\(G=\bigcup_{i=1}^{n} \text { Agent }_{i . g} \);R=1为能力、目标关系,表示能力对目标的承担关系,\(R \subseteq 2^{C} G, 2^{C}\)表示C的幂集;K为基础知识库。

定义3 MAS的组织定义为ORG=(E,M,O_G,Ko),其中,E为其所处的环境;\(M \subseteq A\)为组织成员的集合;\(O-G \subseteq G \)为组织的目标集合;\(K_{0} \subseteq K \)为组织的初始知识集。

焦文品研究了MAS中组织结构的形成、角色与目标的关系以及组织目标的分解[12],在此基础上,笔者给出PASS-BDI结构的Agent的行为过程如下:

\(AgentActive def \overline{\text { Planner }_{\mathrm{ID}}} s \cdot StateArouse(SelectiveAttention | DividedAttention) \cdot \operatorname{Input}(x) \cdot \\(PlanProduce (c, g, x) \cdot(\overline{\operatorname{PlanSelect}}(c, g, x) r \cdot ([r \neq \phi]( SimuProc \mid SuccProcc ) \mid \cdot \\ [r=\phi]( AgentInterface | Adapt) \cdot AgentActive )) . \\(v t) \overline{\text { Output }_{I D}}(\tau t, b)\)          (34)

组织中的个体为了完成某个目标,执行如下的行为过程:a.在其规划器PlannerID端口输出期望的活动状态s;b.由唤醒进程 StateArouse 将该Agent置于选择性注意(SelectiveAttention)或者 分配性注意(SelectiveAttention)状态;c.在感知器 Input端口获得对外界环境E的认识x,启动规划器按照Agent的能力c,目标g和x产生规划(PlanProduce);d.选择规划并在其进程 PlanSelect端口输出选择结果r。若能产生有效规划,则启动编码器进行同时性加工(SimuProc)或者继时性加工(SimuProc);否则,依赖Agent的接口特性(AgentInterface)进行自适应调整(Adapt),修改环境和组织的能力、目标及其关系,并递归执行行为进程 AgentActive;e.经过执行时延,在端口Outputp输出执行结果b。

与相关研究结果比较,式(34)给出了组织中Agent行为的清晰结构,并在其中强调了认知结构。基于这一结果,一方面可以开展程序的性质验证工作,另一方面也极大地方便了面向Agent的编程工作。

《6 结论》

6 结论

PASS-BDI模型以警觉器、编码器、规划器为核心,在Agent模型理论和具体的Agent结构之间建立了明确的映射关系,使Agent的建造者易于编程实现Agent的理论抽象模型。同时,用多价π-演算严格刻画了PASS-BDI模型的心智状态、

认知过程、整体行为等,重点加强了对Agent认知过程的描述,在认知过程中增加了对Agent无知(式(16))及其处理方法的描述,扩展了Agent理论研究的内涵。最后,用该模型研究了组织结构中Agent的行为。进一步的工作包括:研究PASS-BDI模型下 Agent的理性平衡问题;研究多Agent的协作及 Agent的组织结构与组织形成;研究PASS-BDI模型下多Agent系统的体系结构问题等。