您好,欢迎访问三七文档
智能软件开发范锐广东海洋大学软件学院fanrui_nc@yahoo.com.cn4、多智能Agent系统多智能Agent系统多智能Agent系统的协作策略多智能Agent系统的部件设计多智能Agent系统的内核构成多智能Agent系统的接口多智能Agent系统定义:能进行问题求解,能随环境改变而修改自己行为,并能通过网络与其它Agent通信、交互、协作、协同完成求解统一问题的分布式智能系统。多智能Agent系统六个基本特征:1)功能控制范围2)集成系统操作手段3)系统控制位置4)集成机制5)组成6)类型多智能Agent系统研究现状研究核心:一组自治Agent之间智能行为的协作与协调。从协作的观点转向从单个Agent的角度来考虑更一般的问题:Agent应有什么样的结构、能力在有限时间约束、开放的多主体环境中自主行动、决策与其它Agent交流?从DAI到M-AgentM-Agent的开放性开放模块适应M-Agent的协作策略Agent协作是区别其它研究领域的关键性概念之一。协调是一组Agent完成一些集体活动时相互作用的性质。协调是对环境的适应;协调一般改变Agent的意图;协调的原因是由于其它Agent的意图存在。协作是非对抗的Agent之间保持行为协调的一个特例。在开放动态的多Agent环境下,不同目标的多个Agent必须对其目标、资源的使用进行协调;在出现资源冲突时,没有很好的协调,就有可能出现死锁;单个Agent无法独立完成目标,需要其它Agent的帮助,这时就需要协作。M-Agent的协作策略Agent的交互有负关系和正关系。负关系导致冲突,对于冲突的消解构成协调。正关系表示主体的规划有重叠部分,或某个Agent具有其它Agent不具备的能力,各Agent通过协作获得帮助。多Agent之间的协作情形大致可分为:协作型:同时将自己的利益放在第二位;自私型:同时将协作放在第二位;完全自私型:不考虑任何协作:完全协作型:不考虑自身利益:协作与自私相混合型。M-Agent的协作策略”因需设岗,竞争上岗”:根据目标及协作的需要而设定恰当的岗位并配备相应的角色,而希望参与协作的竞争者则通过竞争获得能胜任的岗位并扮演相应的角色。协作过程:①产生需求、确定目标,②协作规划、求解协作结构,③寻求协作伙伴,④选择协作方案,⑤实现目标,⑥评估结果。M-Agent的协作策略在多Agent协同工作环境下(下图),Agent可以是智能体(如专家系统)、非智能体(如常规程序);可以是数据库、知识库、方法库、模型库等,在协同工作时不仅有具体的领域专家,而是由社会学家、心理学家、计算机专家等共同参与。多Agent协同工作,使计算机资源(硬件、软件、数据仓库、知识库等)实现真正的、最大的共享。不同历史时期及不同设备上的硬、软件资源,尤其是用不同的语言编写的应用程序(智能的、非智能的)均可以协同使用。多智能Agent结构Agent是一种混合结构,每个Agent包含感知、动作、反应、建模,规划、通信、决策等模块。多智能Agent结构反应模块:反应模块使Agent对紧急或简单的情况作出迅速反应,基本不作推理,直接由感知信息映射到某种行为。如果使用知识库的方法,则反应模块由一系列规则构成:RULE-Ri:IF感知信息条件子句THEN行动具体可用神经网络来实现反应。神经网络的输入参数是数值化的感知信息和自身状态,输出参数是动作的编码。建立起神经网络后,经过大量样本的训练,使它对一些常见的情况可以作出比较合理的反应,然后投入使用。这样在遇到紧急情况时,Agent在从感知到行为的映射过程实际上己经使用了大量的经验,所以一般会作出更合理的反应。多智能Agent结构规划模块:负责建立中短期的行为计划。规划模块从目标集合、世界模型、其它Agent模型以及自身状态等数据结构中提取信息,经过局部规划器,产生出近期的动作序列,送交给决策模块。局部规划:一方面,每个Agent根据目标集合、自身的状态、自己对世界和其它Agent的模型,以及以往的经验规划自身的行为;另一方面,Agent不需要对它的目标作出完全的规划,而只要生成近期的动作序列就可以了。多智能Agent结构建模模块两个功能:维护和更新Agent对世界和其它Agent所建立的模型;根据当前感知的信息和模型对近期的情况作出预测,并提出行动的建议。Agent最初从程序设计人员提供的模型库中得到关于世界的基本模型,然后在生存期间内,通过感知以及和其它Agent的通信修正模型。一方面模型被规划模块用来建立行动计划,另一方面,建模模块使用模型和当前感知信息预测将出现的情况,并将行动的建议提交给决策模块。多智能Agent结构通信模块:Agent根据词法库、语法库、语义库,对通信语言进行理解,并将一部分抽取的信息送交给决策模块(如其它Agent的请求信息)和建模模块(如其它Agent的信念信息)。对于一些基本的应答信息,则由通信模块直接作出反应。决策模块生成的和其它Agent的协商和交互信息通过语言生成模块变成通信语言。多智能Agent结构决策模块:它不对Agent中央控制,而是负责各个模块的协调工作。它的主要工作是冲突检查和消解,并决定当前的动作和通信。输入:规划模块生成的行动计划;建模模块的预测和行动建议;通信模块的请求等。。处理:世界是随着时间的推移而变化的,原定的计划和当前的情况,以及其它Agent的请求会发生冲突,这时,决策模块根据规则对冲突进行消解。任务的承接也由决策模块完成。任务一般以其它Agent的请求的方式进入决策模块。决策模块根据规则决定是否接受任务。如果接受,再决定其优先级,然后修改目标集合,将任务放在适当的位置。如果不接受,则发消息给通信模块让它生成“婉拒”的通信语句。输出:当前动作修改指令例如,一个汽车Agent正在按计划向预定目的地行驶时,感知另一汽车占据了原定要经过的一条单行道,建模模块因此建议汽车改道,这时决策模块根据规则,有两种解决方案:一种是先减速行驶,并发消息给规划模块让它重新规划;另一种是,如果时间充裕,则可以决定暂时停止计划的执行,等另一汽车离开单行道后再继续执行预定计划。多智能Agent的内核每个Agent由一个通用的Agent内核和许多功能模块构成。Agent内核由以下部分组成:内部数据库中包含Agent自身的信息、目标集合、世界的模型等信息;邮箱提供Agent和环境以及其它Agent的通信;黑板提供Agent内部各个功能模块之间的通信;执行机则完成消息分派、功能模块的执行控制等。各个功能模块都是相对独立的实体,由执行机启动后即完全并行地执行,并通过黑板协调工作。感知、行动、反应、建模、规划、通信、决策生成等都以功能模块的形式加入Agent中。可以使用不同的编程语言、数据结构,只要支持同样的黑板格式就可以了.多智能Agent的内核内部数据库:每个Agent对自身进行描述,主要包括:Agent自身的名字,邮箱地址等;Agent的能力(即它所控制度功能块)的名字及其描述(关键字、路径、运行参数等等);功能模块当前的状态,功能模块可以处于运行态、准备好、完成或阻塞态;Agent的状态,Agent的状态可以是检查邮件箱、检查黑板、正在进行规划、正在进行推理或运行功能模块等等。每个Agent都需要有一个对Agent社团的描述,该描述不是完整的描述,仅需要描述该Agent所能感知的信息。这些信息位于Agent内部数据库中,它们不是山系统开发人员预先定义的,而是在Agent的生存期间动态建立的。该信息是一些记录的集合。每个记录包括:Agent的名字邮箱地址与本Agent的关系通信费用因子多智能Agent的内核AGENT类的定义如下:typedefstructcapa{//Agent能力结构char*name;//Agent能力名称inttype;//Agent能力的类型(可以有Built_IN_FM,INVOKED_FM,EVERLASTING_FM三种)char*path;//对于Builtes_IN_FM是NULL;对于INVOKED_FM和EVERLASTING_FM为外部模块的运行文件路径char*keywords;//能力的描述关键字structcapa*next;}CAPABILITY;typedefstructFM_queue{//功能模块队列结构intqueue_id;//功能模块的唯一队列标识符intstub_d;//请求的存根号char*request_agent;//请求的Agent名字CAPABILITY*func://对应当功能模块intpriority;//优先级intstatus;//运行状态,有READY,RUNNING,FINISHED,BLOCKED等值pidtfpid;//运行中的功能模块的PIDchar*argument;//运行参数StructFM_queue*next;//功能模块队列是一个双向队列StructFM_queue*prior;}FMQUEUE;typedefsturctacquaintance{//其它Agent的信息char*agent;//Agent名称char*url;//地址intrelationship;//和本Agent的关系因子intcost;//通信费用因子sturctaddressbook*next;}ACQUAINTANCE;多智能Agent的内核classAGENT{//Agent类private:FM_QUEUE*Queuehead,*Queuetail;//功能模块队列第队首和对尾指针ACQUAINTANCE*Acquaintance;//其它Agent的队列第首指针IntQueuecount;II前功能模块队列第长度BBBUFFER*Blackboard;//黑板指针IntBlackboardeskey;//黑板关键字IntStatus;//Agent的状态Public:Char*Name;//IAgent的名字Char*Url;//Agent的地址Char*Facilitator;//通信服务员的地址CAPABILITY*Capabilities;//Agent的能力队列首指针AGENT(Char*AgentDescriptionF'ile);//Agent构造函数一AGENT();//析构函数voidCheckMailboxQ;//检查邮箱函数voidCheckBBQ;/I检查黑板函数voidAction{);/l复合式Agent的内置功能模块:行动voidPlanning();//复合式Agent的内置功能模块:规划voidModeling();/l复合式Agent的内置功能模块:建模voidDecisionesMaking();//复合式Agent的内置功能模块:决策生成intSendMessage(char*ToWhom,char*Perfromative,char*Content);//发送消息char*LookupAcquaintance(char*agentnaare);//在本地查找Agent地址voidUpdateAcquaitance(char*agentname,char*url,intrelationship,intcost);//更新或添加其它Agent信息};多智能Agent的内核执行机:管理的目标是功能模块。每个Agent执行相同的控制循环,步骤如下:1)初始化:读入Agent定义文件;启动Agent通信;初始化黑板;初始化各种队列;将所有的EVERLASTING-FM以READY态加入功能模块队列。2)检测邮箱,如果不空,取出第一条消息;3)根据消息的类型执行相应的动作:消息是INFORM类型,则将其内容放在黑板上以便所有的功能模块可以读取;消息是REQUEST类型,则表示对方请求本Agent的某个功能模块执行某个操作,如果该功能模块的状态是RUNNING,则将该消息通过黑板传递给它请求的功能模块;如果该功能还没有启动,则将该功能模块以READY态插入功能模块队列的尾部;
本文标题:智能软件开发4
链接地址:https://www.777doc.com/doc-3195283 .html