资源描述
第九章 基于Agent的建模方法及Swarm仿真9.1 Agent的基本概念9.1.1 Agent的定义在英文中,“Agent”这个词主要有三种含义:一是指对其行为负责的人;二是指能够产生某种效果的,在物理、化学或生物意义上活跃的东西;三是指代理,即接受某人的委托并代表他执行某种功能。通常认为一个Agent应具有以下全部或部分特征:1) Agent是一个具有明确边界和界面的问题求解实体。2) Agent处于特定环境之中,它通过感知器来观测环境,通过效应器来作用于环境。3) 自治性 这是一个Agent最本质的特征。Agent的自治性体现在:Agent的行为应该是主动的、自发的(至少有一种行为是这样的);Agent应该有它自己的目标或意图;根据目标、环境等的要求,Agent应该对自己的短期行为做出计划。4) 社会性 无论是现实世界,还是虚拟世界,通常都是由多个Agent组成的系统。在该系统内,单个Agent的行为必须遵循和符合Agent社会的社会规则,并能通过某种Agent交互语言,以它们认为合适的方式与其它Agent进行灵活多样的交互,并与其它Agent进有效地行合作。5) 反应性 Agent能够感知其所处的环境(可能是物理世界,或操纵人机界面的用户,或与它进行交互和通讯的其它Agent等等),并能及时迅速地对之作出反应,以适应环境的变化。概括起来,可以说Agent是实际系统的某种抽象(一般是系统物理实体抽象,但根据需要也可能是系统功能的抽象),它能够在一定的环境中为了满足其设计目标,而采取一定的自主行为;Agent总是能够感知其所处的环境(在真实世界中的Agent通过物理传感器进行,软件Agent则通过软件传感器进行),并且有可以影响环境的多个行为能力,能够适应环境的变化。9.1.2 Agent与对象对象与Agent之间有许多共同点,如数据和方法的封装,又如Agent可以拥有对象的继承与多态等性质。Agent与对象之间又有一些明显的区别:首先就是Agent和对象的自治程度。其次,对象和Agent的另一个重要区别是有关自治行为的灵活性(自治性、反应性、社会性)。标准对象模型和由Agent组成的系统的第三个重要区别是:对每一个Agent来说,它都有自己独立的控制线程;而在标准的对象模型中,整个系统才有一个控制线程。主动对象拥有自己的控制线程,可以在没有其它对象控制的情况下自主地实施自己的某种行为或某些行为。主动对象是Agent,也可以称Agent就是主动对象。事实上,现在许多Agent开发工具和应用实例都是用面向对象技术来实现的。9.1.3 多Agent系统面对复杂系统,用单个Agent来描述显然是不合适的,必须用多个Agent来刻画、抽象这样的系统。通常,我们就将这种由多个Agent组成的系统称为多Agent系统(MultiAgent System, MAS)。多Agent系统具有以下特点:1) 高层次的交互 MAS除了可以描述传统的客户/服务器类型的交互方式外,还可以描述复杂的社会交互模式:合作(为了共同目标一起工作)、协调(协调问题求解行为以避免有害的交互或利用有益的交互)、协商(所有的参与交互的各方达成都可以接受的协议)。2) Agent之间的丰富的组织关系 多Agent系统通常反映了这种组织环境,Agent之间的关系可以是来自于组织者中的各种关系,例如同等关系、上下级关系等,3) 数据、控制、资源的分布 MAS特别适合于需要多个不同的问题求解实体相互作用共同求解某个共同的问题或它们各自问题的领域,而多数情况下,这些实体、数据和资源在物理或逻辑上是分布式的。 9.1.4 Agent的作用1、应用方面 1) 模块化 2) 分散化 3) 可变性 4) 不良结构 5) 复杂性2、研究方面复杂性科学是指以还原论、经验论及“纯科学”为基础的经典科学正在吸收系统论、理性论和人文精神而发展成的一门新学科。现在兴起了一种崭新而前景广阔的研究方法:基于Agent的建模与仿真技术。9.2 基于Agent的建模方法9.2.1 基于Agent的建模思想 基于Agent建模的思想:人们将Agent作为系统的基本抽象单位,必要的时候可赋予Agent一定的智能(Intelligent),然后在多个Agent之间设置具体的交互(Interact)方式,从而得到相应系统的模型。这样,Agent、智能和交互便是基于Agent建模思想中最基本也是最重要的内容.1) AgentAgent是一个自治的计算实体,它可以通过感应器(物理的或软件的)来感知环境,并通过效应器作用于环境。2) 智能说Agent具有智能,并不是指它是全知全能的,也不是说它永远不会失败;而是说Agent在变化的环境中灵活(即具有柔性)而有理性地运作,具有感知和效应的能力。3) 交互交互是指Agent可以被其它的为追求自己的子目标而执行相应任务的Agents(或人)所影响。交互可以通过他们之间共享的环境或共享的语言来实现。在合作的情况下,多个Agent通过交互,以团队的方式一起工作来共同完成系统的目标;在冲突的情况下,Agent之间要通过交流来化解冲突,最终实现系统的目标。基于Agent的建模是一种由底向上(Bottom-Up)的建模方法,它把Agent作为系统的基本抽象单位,采用相关的Agent技术,先建立组成系统的每个个体(individual)的Agent模型(大多数时候它是比较简单的),然后采用合适的MAS体系结构来组装这些个体Agent,最终建立整个系统的系统模型。9.2.2 面向Agent的系统分析1) 基于Agent 的MAS的系统层次模型1、发现个体Agent对于给定的系统(有确定的系统问题域和系统边界),发现个体Agent的任务就是解决这样的问题:将系统中的什么映射为Agent?也就是对系统进行Agent抽象。对系统进行Agent抽象的基本原则是:从系统的物理结构出发,围绕着系统的目标来对系统进行抽象。以系统的物理结构作为抽象的基点,就意味着可根据物理世界的实际构成来划分Agent。一般的处理原则是,将组成系统的每个实体都抽象为一个Agent(可其称为实体Agent),这对自然的分布式系统尤为实用。这时,有两个问题需要注意:1) 异质Agent与同质Agent的处理 2) 抽象的粒度 设计一些其它的辅助Agent,通常这类Agent被称为集中服务Agent。2、个体Agent的建模1) 基于逻辑的Agent模型 在该模型中,Agent决策的制定过程是通过逻辑演绎的方式来实现的,类似于专家系统。2) 反应式Agent模型 在该模型中,Agent决策的制定过程是通过环境与行为的直接映射来实现的,如一般的控制器。3) 信念-愿望-意图Agent模型 在该模型中,Agent决策的制定过程是依赖于表达Agent的信念、愿望和意图的数据结构之间的操作来实现的,它更接近人类的思维方式。Agent的基本组成:1) 每个Agent都有自己的状态。2) 每个Agent都拥有一个感知器来感知环境,即根据环境的状态来改变自己状态的方法。3) 每个Agent都拥有一个效应器作用于环境,即用来改变环境状态的方法。3、多Agent的体系结构1) 系统应有多少Agent?2) Agent之间采用什么样的通信渠道?3) Agent之间采用什么样的通信协议?4) 怎样建立Agent与其相关的其它Agent之间的结构? 5) Agent之间如何协调它们的行动?要解决好上述5个问题的前提条件是:对物理系统的透彻了解和对系统目标的准确把握。在这个阶段,对相关技术的了解(如面向对象的消息传递、常用的合同网协议、耗散机制等)也会促进问题的解决,同时,可能会根据需要返回到前两个阶段进行再分析。问题解决后,我们就建立了一个完整的多 Agent系统模型。9.3 Swarm简介Swarm提供了用于像多agent系统这样的设计、实现、运行和分析的工具。9.3.1 Swarm的思想人工生命这样的复杂适应系统的基本特征是:分散的相对自治的实体之间以及与动态环境之间相互交互,没有一个集中的权威来指挥这些个体的行为:每个个体根据对环境的评估来决定它们自己的行为、内部状态以及与其它个体和环境的通信。Swarm就是基于这样的思想,描述一系列独立的个体,通过独立事件进行的交互作用。建模者可用“Swarm”来作任何松散结构的相互交互的Agent集合的容器。Swarm这一概念之所以非常重要和具有吸引力,是因为个体行为与群体行为的耦合。Swarm作为一个整体的行为是来自个体的非线性的交互,包括个体行为与群体行为之间的反馈。9.3.2 Swarm的发展历程 由于Swarm是一个开放式的开发平台,所以目前它不仅被研究者应用于生物学领域,而且在许多领域中都得到了应用:人类学、计算机科学、国防、经济学、生态学、地理学、工业、政治学等等.9.3.3 Swarm的建模思想和方法 SWARM的建模思想是把一个个体、包括它的部件和时间表封装起来。一个“swarm”代表一个个体的集合和它们的行为为时间表。SWARM中的模块化和组件思想允许建立一个灵活的模型系统。SWARM可以嵌套,可以直接表示多层模拟,而且它们可以被个体用作自身环境的模型。多层次的建模方法可以提供非常有强的表达能力。SWARM允许用户完整地建立和测试多层模型。SWARM可以明确地表达一个自然的结构,即一组个体紧密联系得一个个体一样。由于swarm,可以在模拟运行的过程中建立和释放,SWARM可用来建立描述多层次的动态出现的模型。图9.6表示了一个复杂的嵌套式的Swarm层次结构。Swarm支持个体建立自身所在环境的模型。Swarm平台就是基于Agent的建模工具,其建模方法是从底向上(Down-Up),先构筑每个实体Agent,再将这些Agent组装起来形成整个系统的模型。在Swarm平台上,swarm是基本构件,一个swarm就是一个对象,它实现内存的分配和事件的规划。在建模和编程时,可以认为一个Swarm就是一个Agent, Agent通过规划技术来安排自己的行为;也可认为一个swarm是某个组织,有多个Agent居于其中, Swarm可用规划技术来对这些Agent的行为进行规划。9.3.4 Swarm的体系结构和仿真结构Swarm仿真的基本单位是个体。每一个个体就像系统中的一个演员。它们能够产生动作并影响自身和其他个体。个体定义了Swarm系统中的基本对象。一个时间表规定了这些对象独立事件发生的流程。在Swarm中,特定的行为发生在特定的时间,行为的发展按照时间表的规定进行。除了作为个体的容器外,Swarm自身也可以是个体。一个典型的个体是一个包括一系列规则、反映和刺激的模型。但是,一个个体自身也可以作为一个Swarm:一个对象的集合和动作的时间表。9.3.5 Swarm的基本特征和Java接口9.4 Swarm应用实例 9.4.1 热虫(Heatbug)整个系统的基本构成单位是Agent,每个Agent代表一个热虫(一种生物)。很显然,热虫有其活动的时空范围(即环境),在Swarm中将其称为world。在该模型中,world有空间属性(热虫所处的位置)和热量(它在系统运作的时间内不断地产生并散失)。Swarm提供了2维的显示平面来显示world和在其中运行的所有Agent(点或方框),如图9.11。 ? 14
展开阅读全文