基于Agent的建模方法_第1页
基于Agent的建模方法_第2页
基于Agent的建模方法_第3页
基于Agent的建模方法_第4页
基于Agent的建模方法_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第九章第九章 基于基于Agent的建模方的建模方法及法及Swarm仿真仿真 为了研究或应用的需要,对所研究的系统进为了研究或应用的需要,对所研究的系统进行必要的化简,并用适当的形式或规则把它行必要的化简,并用适当的形式或规则把它的主要特征描述出来,这就形成了模型。这的主要特征描述出来,这就形成了模型。这种抽象的过程也就是建模的过程。人们提出种抽象的过程也就是建模的过程。人们提出了许多建模的方法和技术。尤其是计算机工了许多建模的方法和技术。尤其是计算机工程领域,产生了一系列的建模方法,常用的程领域,产生了一系列的建模方法,常用的有:有:过程抽象、数据类型抽象、结构化编程、过程抽象、数据类型抽象、

2、结构化编程、面向对象的方法、基于构件的方法等。面向对象的方法、基于构件的方法等。 现在人们又提出了基于现在人们又提出了基于Agent的建模方法,的建模方法,并由此衍生出一系列的相关概念和技术。并由此衍生出一系列的相关概念和技术。 如如基于基于Agent的软件工程的软件工程(ABSE:Agent-Based Software Engineering)、基于基于Agent的计算的计算(Agent-Based Computing)、面向面向Agent的程的程序设计序设计(AOP:Agent-Oriented Programming) Agent通信语言通信语言(ACL:Agent Communica

3、tion Language)等等。等等。 由于由于Agent 具有巨大的研究优势和应用前景,具有巨大的研究优势和应用前景,九十年代以来,九十年代以来,Agent已成为了计算机领域和已成为了计算机领域和人工智能研究的重点前沿;与此同时,许多人工智能研究的重点前沿;与此同时,许多领域都在借鉴或采用该概念进行本领域的研领域都在借鉴或采用该概念进行本领域的研究工作。究工作。本章主要介绍基于本章主要介绍基于Agent 的建模方法,的建模方法,以及用于以及用于Agent建模和仿真的建模和仿真的Swarm平台和应平台和应用实例等。用实例等。9.1 Agent9.1 Agent的基本概念的基本概念 9.1.1

4、 Agent的定义的定义 Agent 最初来源于分布式人工智能的研究。目前,最初来源于分布式人工智能的研究。目前,由于由于Agent 已经渗透到计算机科学技术的许多领域已经渗透到计算机科学技术的许多领域和许多非计算机领域中,所以从一般意义上很难给和许多非计算机领域中,所以从一般意义上很难给出出Agent 严格而清晰的定义,到目前为止,还没有严格而清晰的定义,到目前为止,还没有形成一个统一确定的形成一个统一确定的Agent定义。定义。 在英文中,在英文中,“Agent”有三种含义:一是指对其行有三种含义:一是指对其行为负责任的人;二是指能够产生某种效果的,在物为负责任的人;二是指能够产生某种效果

5、的,在物理、化学或生物意义上活跃的东西;三是指代理,理、化学或生物意义上活跃的东西;三是指代理,即接受某人的委托并代表他执行某种功能或任务。即接受某人的委托并代表他执行某种功能或任务。 基于对基于对Agent英文原意的理解,常被人解释为代理。英文原意的理解,常被人解释为代理。但随着但随着Agent广泛应用的不同领域,不再局限于广泛应用的不同领域,不再局限于“代理代理”。1.Agent1.Agent应具有的特性:应具有的特性: 1)Agent是一个具有明确边界和界面的问题是一个具有明确边界和界面的问题求解实体。求解实体。 2)Agent处于特定环境之中,它通过感知器处于特定环境之中,它通过感知器

6、来观测环境,通过效应器来作用于环境。来观测环境,通过效应器来作用于环境。 3)自治性。这是一个)自治性。这是一个Agent 最本质的特征。最本质的特征。 4)社会性。无论是现实世界,还是虚拟世界,)社会性。无论是现实世界,还是虚拟世界,通常都是由多个通常都是由多个Agent组成的系统。在该系组成的系统。在该系统内,单个统内,单个Agent或多个或多个Agent的行为必须遵的行为必须遵循符合循符合Agent社会的规则。能通过社会的规则。能通过Agent交互交互语言,与其他语言,与其他Agent进行灵活多样的交互,进行灵活多样的交互,并有效进行合作。并有效进行合作。 5)反应性。)反应性。Agen

7、t能够感知其所处的环境,能够感知其所处的环境,可能是物理世界,或操纵人机界面的用户,可能是物理世界,或操纵人机界面的用户,或与它进行交互和通信的其他或与它进行交互和通信的其他Agent等等。等等。并能及时迅速地作出反应以适应环境变化。并能及时迅速地作出反应以适应环境变化。 在一些特定领域的研究,特别是人工智能领在一些特定领域的研究,特别是人工智能领域的研究,还赋予域的研究,还赋予Agent一些更高级的特性,一些更高级的特性,使其更符合于所研究对象的特征:使其更符合于所研究对象的特征: 1)理性。)理性。Agent没有相互冲突的目标。没有相互冲突的目标。 2)诚实性。)诚实性。Agent 不故意

8、传播虚假的信息。不故意传播虚假的信息。 3)友好性。)友好性。 Agent 总是尽可能地完成其他总是尽可能地完成其他Agent的请求。的请求。2. 特性综合:特性综合: 可以看出,可以看出,Agent的特性常常因为应用的不同领域的特性常常因为应用的不同领域而有所不同,也就形成对而有所不同,也就形成对Agent 的不同理解或定义。的不同理解或定义。但是,自治性是但是,自治性是Agent概念的核心。在实际应用中,概念的核心。在实际应用中,Agent常被分为三种类型:常被分为三种类型: 类型类型Agent:描述特定实体或某一类实体。描述特定实体或某一类实体。 集中服务集中服务Agent(多多Agen

9、t):为多个:为多个Agent提供特提供特定的服务或一组服务。定的服务或一组服务。 移动移动Agent:可在不同的实体之间进行移动:可在不同的实体之间进行移动. 概括起来,可以说概括起来,可以说Agent是实际系统的物理实体抽是实际系统的物理实体抽象或系统的功能抽象,它能够在一定的环境中为了象或系统的功能抽象,它能够在一定的环境中为了满足其设计目标而采取一定的自主行为;满足其设计目标而采取一定的自主行为;Agent总总是能感知其所处的环境,适应环境变化。是能感知其所处的环境,适应环境变化。9.1.2 Agent9.1.2 Agent与对象与对象 对象是系统中用来描述客观事物的一个实体,对象是系

10、统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。组属性和对这组属性进行操作的一组服务组成。从认识论的角度来说,对象就是一种抽象技术,从认识论的角度来说,对象就是一种抽象技术,他的最基本特征是封装、继承和多态;他的最基本特征是封装、继承和多态;从软件从软件的角度来看,对象是一个计算实体,它封装了的角度来看,对象是一个计算实体,它封装了一些状态以及可根据这些状态采取特定措施的一些状态以及可根据这些状态采取特定措施的方法,对象之间可通过消息的传递来进行交互。方法,对象之间可通过消息的传递来进行交

11、互。从这些方面来对比对象与从这些方面来对比对象与Agent ,可以看出,可以看出它们之间有许多共同点,如数据和方法的封装,它们之间有许多共同点,如数据和方法的封装,因为因为Agent是一个独立的个体。拥有对象的继是一个独立的个体。拥有对象的继承与多态等性质。但又有一些区别。承与多态等性质。但又有一些区别。 Ageng与对象的一些明显区别:与对象的一些明显区别: 一是一是Ageng 和对象的自治程度。和对象的自治程度。 二是有关自治行为的灵活性,即自治性、反二是有关自治行为的灵活性,即自治性、反应性、社会性。应性、社会性。 三是对每一个三是对每一个Agent来说,它都有自己独立来说,它都有自己独

12、立的控制线程;而在标准的对象模型中,整个的控制线程;而在标准的对象模型中,整个系统才有一个控制线程。系统才有一个控制线程。 值得注意的是:尽管值得注意的是:尽管Agent与对象有着重大与对象有着重大的区别,但这并不妨碍用面向对象技术来实的区别,但这并不妨碍用面向对象技术来实现现Ageng。事实上,现在许多。事实上,现在许多Agent开发工开发工具和应用实例都是用面向对象技术来实现。具和应用实例都是用面向对象技术来实现。9.1.3 多多Agent系统系统 通常,我们将多个通常,我们将多个Agent组成的系统称为多组成的系统称为多Agent系统(系统(MultiAgent System,MAS)。

13、)。 Agent是一种新的方法论,在生产分布式控是一种新的方法论,在生产分布式控制、自适应及处理复杂过程的关键技术。多制、自适应及处理复杂过程的关键技术。多Agent系统具有以下特点:系统具有以下特点: 1)高层次的交互)高层次的交互 2)Agent之间丰富的组织关系之间丰富的组织关系 3)数据、控制和资源的分布)数据、控制和资源的分布9.1.4 Agent的作用的作用 1. 应用方面应用方面 1)模块化:)模块化:最适合于自然模块的应用问题。一个最适合于自然模块的应用问题。一个Agent有自己的状态变量集,这些状态变量不同于有自己的状态变量集,这些状态变量不同于环境的状态变量。环境的状态变量

14、。 Agent状态变量的一些子集与环状态变量的一些子集与环境状态变量的一些子集相耦合,以提供输入输出。境状态变量的一些子集相耦合,以提供输入输出。 2)分散化:)分散化: 一个一个Agent不需要外部的激励,可自不需要外部的激励,可自主地监视它自己的环境,并在它认为合适的时候采主地监视它自己的环境,并在它认为合适的时候采取行动。取行动。 3)可变性:)可变性:因为因为Agent 非常适合于模块化和分散非常适合于模块化和分散化的问题,所以,当一个问题可能经常变化时,化的问题,所以,当一个问题可能经常变化时, Agent的两个特征结合在一起会使它们具有特殊的的两个特征结合在一起会使它们具有特殊的价

15、值。价值。 4)不良结构:)不良结构: 所谓不良结构,简单的说,是在系所谓不良结构,简单的说,是在系统设计时,并非所有必须的结构化信息能够得到。统设计时,并非所有必须的结构化信息能够得到。Agent自然地支持这样的应用。自然地支持这样的应用。 5)复杂性:)复杂性: 衡量系统复杂性的一种方法是看系统衡量系统复杂性的一种方法是看系统必须演示的不同行为的数目;而经过恰当设计的必须演示的不同行为的数目;而经过恰当设计的Agent体系结构可以将组合行为空间的发生从设计体系结构可以将组合行为空间的发生从设计时移到运行时,这将急剧地减少必须要设计的软件时移到运行时,这将急剧地减少必须要设计的软件代码数,进

16、而降低构造系统的成本。代码数,进而降低构造系统的成本。 2. 研究方面研究方面 基于基于Agent 建模与仿真技术方面有三大优势:建模与仿真技术方面有三大优势: 1)传统方面:)传统方面:可明确地给出所研究系统的某种特可明确地给出所研究系统的某种特定的、可求解的范围;最常见的是数学方程。定的、可求解的范围;最常见的是数学方程。 2)问题不可解:)问题不可解:系统虽然可以明确地给出系统的系统虽然可以明确地给出系统的规范,但无法对其进行求解,或没有合适的求解方规范,但无法对其进行求解,或没有合适的求解方法,或依赖许多参数而无法计算等。法,或依赖许多参数而无法计算等。 3)无法形式化:)无法形式化:

17、在实现世界中有许多问题,在实现世界中有许多问题,我们无法给出其明确的方程(形式化)。希我们无法给出其明确的方程(形式化)。希望用高度形式化的方法进行数学计算是不可望用高度形式化的方法进行数学计算是不可能的。能的。9.2 9.2 基于基于AgentAgent的建模方法的建模方法 9.2.1 基于基于Agent的建模思想的建模思想 Agent技术发展和应用的两个基本推动力:技术发展和应用的两个基本推动力: 1)无论是现在还是将来,计算机科学及其应用领无论是现在还是将来,计算机科学及其应用领域内,由域内,由Agent组成的组成的MAS有能力扮演重要的角有能力扮演重要的角色。因为现在的计算机平台和信息

18、环境都是分布色。因为现在的计算机平台和信息环境都是分布的、开放和异构的,计算机不再是一个独立的系的、开放和异构的,计算机不再是一个独立的系统,而是越来越多的与其他的计算机及它们的用统,而是越来越多的与其他的计算机及它们的用户紧密的联系在一起。户紧密的联系在一起。 2)在建立和分析人类社会中的交互模型和理论方在建立和分析人类社会中的交互模型和理论方面,面,MAS也可以扮演重要的角色。也可以扮演重要的角色。 由于由于Agent建模的思想来源于以上两个基本的建模的思想来源于以上两个基本的推动力,需要再次强调推动力,需要再次强调Agent 在建模中的角在建模中的角色:色: 1) Agent是一个自治的

19、计算实体。是一个自治的计算实体。 2)智能性是指)智能性是指Agent在变化的环境中灵活而在变化的环境中灵活而有理性地运作,具有感知和效应的能力。有理性地运作,具有感知和效应的能力。 3)互交能力是指)互交能力是指Agent可以被其他为追求自可以被其他为追求自己的子目标而执行相应任务的己的子目标而执行相应任务的Agent所影响。所影响。 由于将由于将Agent看成是主动对象,基于看成是主动对象,基于Agent的的建模技术完全可以从面向对象技术中继承并建模技术完全可以从面向对象技术中继承并发展。发展。9.2.2 9.2.2 面向面向Agent Agent 的系统分析的系统分析 在一般情况下,建立

20、系统模型是由一群在一般情况下,建立系统模型是由一群Agent组组成的成的MAS,它可以用三个层次结构来描述:,它可以用三个层次结构来描述: 1) Agent层:层:系统中所有反映问题域和系统责系统中所有反映问题域和系统责任的任的Agent。 2)个体)个体Agent:特征模型层,即特征模型层,即Agent的结构与的结构与特征,包括内部状态(数据、变量)和行为规则特征,包括内部状态(数据、变量)和行为规则(函数、方法等)。(函数、方法等)。 3) MAS层:层:即组成系统的即组成系统的Agent群体所采用的群体所采用的体系结构,主要要解决的问题是体系结构,主要要解决的问题是Agent之间的通之间

21、的通信与协调等问题。信与协调等问题。 基于基于Agent的系统模型的层次如图的系统模型的层次如图9.1所示。所示。 1.1.发现个体发现个体AgentAgentAgent层层个体个体Agent特征模型特征模型MAS层层图图9.1 基于基于Agent的系统模型的层次的系统模型的层次 对于给定系统,就是有确定的系统问题和系对于给定系统,就是有确定的系统问题和系统边界,发现个体统边界,发现个体Agent的任务就是解决这的任务就是解决这样的问题:样的问题: 将系统中的什么映射作为将系统中的什么映射作为Agent?也就是对?也就是对系统进行系统进行Agent抽象。抽象。 Agent抽象的基本原则是:抽象

22、的基本原则是:从系统的物理结从系统的物理结构出发,围绕着系统的目标来对系统进行抽构出发,围绕着系统的目标来对系统进行抽象。以系统的物理结构作为抽象的基本点,象。以系统的物理结构作为抽象的基本点,就意味着可根据物理世界的实际构成来划分就意味着可根据物理世界的实际构成来划分Agent。一般的处理原则是将组成系统的每。一般的处理原则是将组成系统的每个实体都抽象为一个个实体都抽象为一个Agent,称为实体,称为实体Agent。这对自然的分布式系统尤为实用。这对自然的分布式系统尤为实用。但是要注意两个问题:但是要注意两个问题: 1 1)异质)异质Agent Agent 与同质与同质AgentAgent的

23、处理:的处理: 通常,系统是由多个实体构成的,实体之间可能是通常,系统是由多个实体构成的,实体之间可能是异质的,存在本质上的区别,如经济系统中的人、异质的,存在本质上的区别,如经济系统中的人、企业与政府等;而有些是同质的,在本质是相同企业与政府等;而有些是同质的,在本质是相同的,如一个生物种群中多个生物个体。处理方法是的,如一个生物种群中多个生物个体。处理方法是将异质将异质AgentAgent分别形成相应的分别形成相应的AgentAgent类,而将同质的类,而将同质的多个多个AgentAgent抽象归结为一个抽象归结为一个AgentAgent类。类。 2 2)抽象的粒度)抽象的粒度 根据研究与

24、应用的需要,要给系统确定一个抽象的根据研究与应用的需要,要给系统确定一个抽象的层次,必须要有所为,又有所不为,即有所取舍。层次,必须要有所为,又有所不为,即有所取舍。 在确定了实体在确定了实体AgentAgent后,有时为了实现系统的目标,后,有时为了实现系统的目标,还要设计一些其他的辅助还要设计一些其他的辅助AgentAgent,被称为集中服务,被称为集中服务AgentAgent。 2.2.个体个体AgentAgent的建模的建模 在建立系统的类图后,接着要进行建立每个在建立系统的类图后,接着要进行建立每个AgentAgent的模型。在这方面主要处理两个问题的模型。在这方面主要处理两个问题

25、1 1)每个)每个AgentAgent如何建立世界模型?如何建立世界模型?任何在一任何在一个变化的世界内起作用的个变化的世界内起作用的AgentAgent必须建立世必须建立世界内部模型。但是界内部模型。但是 AgentAgent在知识表达的复杂在知识表达的复杂性和对任务所使用的推理方面是有区别的。性和对任务所使用的推理方面是有区别的。 2 2)如何构筑)如何构筑AgentAgent的内部结构?的内部结构?一个系统中一个系统中不同的不同的AgentAgent可以是同质的、异质的或共享可以是同质的、异质的或共享某些共同的模块,或在其它的模块中不同。某些共同的模块,或在其它的模块中不同。它们也许会、

26、也许不会记得过去的状态;在它们也许会、也许不会记得过去的状态;在系统生命周期内,他们的代码可以改变,也系统生命周期内,他们的代码可以改变,也可以不改变。可以不改变。3.目前三种目前三种AgentAgent结构模型结构模型 1)基于逻辑的)基于逻辑的Agent 模型模型 在该模型中,在该模型中,Agent决策的制定过程是通过逻辑演决策的制定过程是通过逻辑演绎的方式来实现的,类似于专家系统绎的方式来实现的,类似于专家系统 2)反映式)反映式Agent模型模型 在该模型中,在该模型中,Agent决策的制定过程是通过环境与决策的制定过程是通过环境与行为的直接映射来实现的,如一般的控制系统。行为的直接映

27、射来实现的,如一般的控制系统。 3)信念信念-愿望愿望-意图意图Agent模型模型 在该模型中,在该模型中, Agent决策的制定过程是依赖于表达决策的制定过程是依赖于表达Agent的信念、愿望和意图的数据结构之间的操作的信念、愿望和意图的数据结构之间的操作来实现的,它更接近人类的思维方式。来实现的,它更接近人类的思维方式。4.4.关于关于AgentAgent的通用模型的通用模型 由于由于Agent技术正处于发展之中,各种模型技术正处于发展之中,各种模型都有待于不断完善。就目前来说,可以将都有待于不断完善。就目前来说,可以将Agent视为由环境、感知器和效应器三部分视为由环境、感知器和效应器三

28、部分组成,如图组成,如图9.2所示。所示。 1)每个)每个Agent都有自己的状态。都有自己的状态。环境环境感知器感知器效应器效应器内内部部状状态态图图9.2 Agent 的通用模型的通用模型 2)每个)每个Agent都拥有一个感知器来感知环境,都拥有一个感知器来感知环境,根据环境的状态来改变自己状态的方法。根据环境的状态来改变自己状态的方法。 3)每个)每个Agent都拥有一个效应器作用于环境,都拥有一个效应器作用于环境,用来改变环境状态的方法。用来改变环境状态的方法。 5. 5. 多多AgentAgent的体系结构的体系结构 为了建立由多个为了建立由多个AgentAgent组成的完整的系统

29、模型,组成的完整的系统模型,确定多确定多AgentAgent系统的体系的体系结构,就要处系统的体系的体系结构,就要处理好以下理好以下5 5个问题:个问题: 1 1)系统应有多少个)系统应有多少个AgentAgent? 根据系统的目标根据系统的目标要求,确定各种要求,确定各种AgentAgent的总数以及系统运行时的总数以及系统运行时AgentAgent的数目是否可改变。的数目是否可改变。 2 2)AgentAgent之间采用什么样的通信渠道之间采用什么样的通信渠道?通常在传输?通常在传输介质(共享物理环境与数字网络)、访问(广播、介质(共享物理环境与数字网络)、访问(广播、面向目标、面向目标、

30、Agent到到Agent)等方面可能有所不同。)等方面可能有所不同。 3 3)AgentAgent之间采用什么样的通信协议?通常采用的之间采用什么样的通信协议?通常采用的通信方式有共享全局存储器(如黑板机制)、消息通信方式有共享全局存储器(如黑板机制)、消息传递以及两者的结合。通信协议决定了被建立的传递以及两者的结合。通信协议决定了被建立的AgentAgent之间如何交流。之间如何交流。 4 4)怎样建立)怎样建立AgentAgent与其相关的其他与其相关的其他AgentAgent之间的结之间的结合?一个合?一个AgentAgent群体的结构描述每个群体的结构描述每个AgentAgent的直接

31、的的直接的熟人(熟人(AgentAgent)和它们之间由于信息和物料流动等)和它们之间由于信息和物料流动等原因而产生的拓扑结构,常见的如象分层嵌套结构、原因而产生的拓扑结构,常见的如象分层嵌套结构、网络结构等。网络结构等。9.2.3 9.2.3 实现与仿真实现与仿真 1. 实现实现 有了系统的特征模型后,其次的任务是设计与编程。有了系统的特征模型后,其次的任务是设计与编程。在实现系统模型之前,一个重要任务是开发平台的在实现系统模型之前,一个重要任务是开发平台的选择;一个好的面向选择;一个好的面向Agent的开发工具将会对开发的开发工具将会对开发者或研究人员的工作产生巨大的影响。尤其是方便、者或

32、研究人员的工作产生巨大的影响。尤其是方便、快捷、实用基于快捷、实用基于Agent建模和开发工具更显的重要。建模和开发工具更显的重要。 由于目前对由于目前对Agent还没有一个统一的定义,所出现还没有一个统一的定义,所出现的的Agent开发工具也没有可遵循的同一标准,他们开发工具也没有可遵循的同一标准,他们大都是按自己的理解和需要,采用象大都是按自己的理解和需要,采用象Smalltalk、C+和和Objective C那样的语言打包而成的那样的语言打包而成的Agent模型。目前在复杂系统的研究中,被广泛推荐和采模型。目前在复杂系统的研究中,被广泛推荐和采用的基于用的基于Agent的建模和开发工具

33、是由的建模和开发工具是由SFI研制的研制的Swarm。也是讨论的重点之一。也是讨论的重点之一。 由于开发工具的不同,在开发工具选定后,由于开发工具的不同,在开发工具选定后,结合开发工具调整系统的特征模型是必不可结合开发工具调整系统的特征模型是必不可少的,所以选择开发工具和建立系统模型相少的,所以选择开发工具和建立系统模型相结合,反复调整直至比较完善。结合,反复调整直至比较完善。 在具体实现的在具体实现的Agent可以用类似于下图可以用类似于下图9.3实实体体Agent类和图类和图9.4集中服务集中服务Agent的伪码来的伪码来简单地表示。简单地表示。Agent_Entity:Agent_Ent

34、ity: BeginBegin States:States: Private_Preferences; Private_Preferences; Private_Variables; Private_Variables; Pubic_Variables; Pubic_Variables; And so on And so on Perceptions:Perceptions: Accept_Information_Methods; Accept_Information_Methods; Get_Information_Methods; Get_Information_Methods; And

35、so on And so onBehaviors:Behaviors: Make_Decisions; Make_Decisions; Compute_Internal_Variables; Compute_Internal_Variables; Draw_self; Draw_self; And so on And so onEnd End 图图9.3典型实体典型实体Agent模型模型 Ageng_Population:Ageng_Population: Begine: Begine: States:States: Internal_Represent_of_collection;Inter

36、nal_Represent_of_collection;Current_Active_Agent; Current_Active_Agent; Nunmber_of_Agents; Nunmber_of_Agents; And so on; And so on; Perceptions:Perceptions: Accept_Information_Methods; Accept_Information_Methods; Get_Information_Methods; Get_Information_Methods; And so on; And so on; Behaviors:Behav

37、iors: Private Behaviors: Private Behaviors: Get_Nth_Agent(N); Get_Nth_Agent(N); Randomize_Agents; Randomize_Agents; And so on; And so on; Public Behaviors: Public Behaviors: Initilize; Initilize; Special_Service_Methods; Special_Service_Methods; And so on; And so on; EndEnd 图图9.4典型集中服务典型集中服务Agent程序模

38、型程序模型2.仿真仿真 模型建立后,就可以对模型实施仿真。在仿模型建立后,就可以对模型实施仿真。在仿真时,为了跟踪真时,为了跟踪Agent 的性能或反应整个模的性能或反应整个模型的某方面特性,需要在仿真程序代码中加型的某方面特性,需要在仿真程序代码中加入一些统计分析代码,可采用简单的文本输入一些统计分析代码,可采用简单的文本输出、图表显示或实时的产生于模型的统计特出、图表显示或实时的产生于模型的统计特性等形式。这样,基于性等形式。这样,基于Agent的模型仿真程的模型仿真程序可用图序可用图9.5的伪码表示。的伪码表示。 在图在图9.5所述的程序框架中,有许多东西被抽所述的程序框架中,有许多东西

39、被抽象掉了。而在实际的实现中,象掉了。而在实际的实现中,Agent交互或交互或独自运作要么是顺序的,要么是并行的等。独自运作要么是顺序的,要么是并行的等。 注意:并行是要同步的,采用什么样的同步注意:并行是要同步的,采用什么样的同步技术或同步时钟?技术或同步时钟?Typical_Agent_Model Simulation Program: Typical_Agent_Model Simulation Program: Begin Begin Get Parameters; Get Parameters; Initialize Agents; Initialize Agents; Repeat

40、: Repeat: Agent_Working_or_Interaction; Agent_Working_or_Interaction; Statistics & Analyze; Statistics & Analyze; Show_States; Show_States; And so on; And so on; Until done Until done 图图9.5 典型的典型的Agent 的模型仿真程序的模型仿真程序9.39.3 Swarm Swarm系统简介系统简介 Swarm是一个免费工具,而且是一个免费工具,而且Swarm具有具有巨大的应用空间和不断改进及免费

41、支持。巨大的应用空间和不断改进及免费支持。 Swarm的目的在于为复杂性的研究提供一个的目的在于为复杂性的研究提供一个标准的、可靠的软件工具集,用于高度分散标准的、可靠的软件工具集,用于高度分散体系结构特征的各种复杂系统的实验。体系结构特征的各种复杂系统的实验。 Swarm提供了用于多提供了用于多Agent系统的设计、实系统的设计、实现、运行和分析的工具。现、运行和分析的工具。 其仿真的基本单位其仿真的基本单位“Swarm”; “Swarm”是执行事件时间表是执行事件时间表的的Agent集合。集合。 Swarm采用层次建模方法建采用层次建模方法建立立Agent的嵌套模型,即一个的嵌套模型,即一

42、个Swarm 也可以也可以是多个是多个Agent的的Swarm。9.3.1 SwarmSwarm的思想的思想 简单来说,简单来说,Swarm是一组程序库的集合,利用这些是一组程序库的集合,利用这些程序库,可以快捷、方便地实现基于程序库,可以快捷、方便地实现基于Agent的系统的系统模型,并对该模型进行仿真研究。模型,并对该模型进行仿真研究。 Swarm的灵感的灵感来自人工生命(来自人工生命(Artificial Life)领域的研究。人工)领域的研究。人工生命是研究生态系统的一种方法生命是研究生态系统的一种方法. Swarm的思想是:描述一系列独立的个体,通过独的思想是:描述一系列独立的个体,

43、通过独立事件进行的交互作用。在这个框架下,立事件进行的交互作用。在这个框架下, Swarm的使用者不必花精力在特定模型的实现。的使用者不必花精力在特定模型的实现。 Swarm不限定特定的领域。不限定特定的领域。 Swarm模拟可以在不同的领模拟可以在不同的领域,如化学、经济学、物理学、人类学和政治学等域,如化学、经济学、物理学、人类学和政治学等科等。科等。 Swarm指蜜蜂群体或蚂蚁群体。建模者可用它来指蜜蜂群体或蚂蚁群体。建模者可用它来作任何松散结构的相互交互的作任何松散结构的相互交互的Agent集合容器。比集合容器。比如,一个蚂蚁群体可看作是一个如,一个蚂蚁群体可看作是一个Swarm,其中

44、,其中Agent是个体蚂蚁;一个免疫系统是细胞和分子的是个体蚂蚁;一个免疫系统是细胞和分子的Swarm;尽管;尽管Swarm的概念包括了空间上的的概念包括了空间上的群体群体移动移动这样的含义,但是,应该关注的是所有类型的这样的含义,但是,应该关注的是所有类型的群体行为。而不仅仅是空间上的移动。群体行为。而不仅仅是空间上的移动。 Swarm这一概念之所以非常重要和具有吸引力,这一概念之所以非常重要和具有吸引力,是因为个体行为与群体行为的耦合。尽管个体行为是因为个体行为与群体行为的耦合。尽管个体行为简单,但是,它们的群体行为可以是相当复杂的。简单,但是,它们的群体行为可以是相当复杂的。 Swarm

45、作为一个整体行为是来自个体的非线性的作为一个整体行为是来自个体的非线性的交互,包括个体行为与群体行为之间的反馈。交互,包括个体行为与群体行为之间的反馈。 在在Swarm中,中,个体行为个体行为的组合决定了整个的组合决定了整个群体的群体的行为行为;反过来,;反过来,群体行为群体行为决定了决定了个体做出它们行为个体做出它们行为选择的环境选择的环境。9.3.2 Swarm的发展的发展 1994年年Chris Langton 在在SFI正式领导并发起正式领导并发起Swarm项目。项目。 1995年,年, SFI发发布布Swarm的的Beta版。版。 1997年年1月发布月发布Swarm-1.0版。版。

46、 1998年年4月发布支持月发布支持Win95/98/NT(早期的仅支持(早期的仅支持UNIX)Swarm-1.1版。版。 1999年年4月发布支持月发布支持Java的的Swarm-2.0版。版。 2000年年3月发布月发布Swarm-2.1.1版,全面支持版,全面支持Java编程。编程。 目前目前Swarm是一个公开源码的免费软件,可以从官方网站是一个公开源码的免费软件,可以从官方网站查阅查阅相相关资关资料和料和寻寻求求软软件方面的支件方面的支持;同持;同时时,可,可从从FTPFTP服服务务器器( (ftp:/ftp

47、.) )中下中下载载由由Objective CObjective C编写编写的相的相应软应软件和源件和源码码。 由于由于Swarm是一个开放式的开发平台,所以目前在许多领是一个开放式的开发平台,所以目前在许多领域都得到应用。如生物、计算机科学、国防、生态、地理、域都得到应用。如生物、计算机科学、国防、生态、地理、工业等等。工业等等。9.3.3 Swarm的建模思想与方法的建模思想与方法 SwarmSwarm的建模思想是把的建模思想是把“Swarm”Swarm”代表一个个体的集合和代表一个个体的集合和它们的行为时间表封装起来。它们的行为时间表

48、封装起来。 SwarmSwarm可以嵌套,也可以直可以嵌套,也可以直接表示多层模型,而且可以被个体作用自身环境的模型。接表示多层模型,而且可以被个体作用自身环境的模型。 多层次的建模方法可以提供非常强的表达能力;多层次的建模方法可以提供非常强的表达能力; SwarmSwarm允允许用户完整地建立和测试多层模型。图许用户完整地建立和测试多层模型。图9.69.6表示了一个复杂表示了一个复杂嵌套的嵌套的SwarmSwarm层次结构。层次结构。 SwarmSwarm平台就是基于平台就是基于AgentAgent的建模工具,其建模方法是从底的建模工具,其建模方法是从底向上,先构建每个实体向上,先构建每个实

49、体Agent,Agent,再将这些再将这些AgentAgent组装起来形成组装起来形成整个系统的模型。整个系统的模型。 在在SwarmSwarm平台上,平台上, SwarmSwarm是基本构件,是基本构件,一个一个SwarmSwarm就是一个对象,它实现内存的分配和事件的规划。就是一个对象,它实现内存的分配和事件的规划。在建模和编程时,可以认为一个在建模和编程时,可以认为一个SwarmSwarm就是一个就是一个AgentAgent,这,这时,时,AgentAgent通过规划技术来安排自己自治性的行为;也可以通过规划技术来安排自己自治性的行为;也可以认为一个认为一个SwarmSwarm是某个组织

50、,包含多个是某个组织,包含多个AgentAgent,由,由SwarmSwarm的规的规划技术对这些划技术对这些AgentAgent的行为进行规划。的行为进行规划。AgentSwarmThe ModelScheduleSub-SwarmSub-sub-Swarm图图9.6 Swarm的嵌套层次结构的嵌套层次结构9.3.4 Swarm的体系结构和仿真结构的体系结构和仿真结构 SwarmSwarm仿真的基本单位是个体。每个个体就像系统仿真的基本单位是个体。每个个体就像系统中的一个演员。它们能够产生动作并影响自身和其中的一个演员。它们能够产生动作并影响自身和其他个体。仿真包括几组交互的个体。例如:一门

51、课他个体。仿真包括几组交互的个体。例如:一门课的实验系统仿真有课程实验内容、实验设备、指导的实验系统仿真有课程实验内容、实验设备、指导实验的教师及其实验环境等。实验的教师及其实验环境等。 个体定义了个体定义了SwarmSwarm系统中的基本对象。时间表规定系统中的基本对象。时间表规定了这些对象独立事件发生的流程。行为的发展按照了这些对象独立事件发生的流程。行为的发展按照时间表的规定进行,时间表是一个数据结构,包括时间表的规定进行,时间表是一个数据结构,包括各事件的执行顺序。值得注意的是,不同各事件的执行顺序。值得注意的是,不同SwarmSwarm的的时间表的执行是并行的,体现了复杂系统中的并行

52、时间表的执行是并行的,体现了复杂系统中的并行性特点。模型总是要按照安排好的执行顺序发展。性特点。模型总是要按照安排好的执行顺序发展。 SwarmSwarm自身也可以是个体;一个典型的个体是一个自身也可以是个体;一个典型的个体是一个包括一系列规则、反映和刺激的模型。包括一系列规则、反映和刺激的模型。 一个一个SwarmSwarm仿真程序中包括仿真程序中包括SwarmModelSwarmModel构件和构件和ObseverSwarmObseverSwarm构件。构件。 ModelSwarmModelSwarm是系统模型,包含所有的是系统模型,包含所有的AgentAgent和作和作为容器的子为容器的

53、子SwarmSwarm,并对其进行实例化。,并对其进行实例化。 ObseverSwarmObseverSwarm包括包括SwarmModelSwarmModel,并为,并为SwarmModelSwarmModel的运行提供空间和时间环境,同时,的运行提供空间和时间环境,同时,根据要求对模型进行可视化操作(根据要求对模型进行可视化操作(GUIGUI接口)。一接口)。一个个SwarmSwarm仿真程序构件结构如仿真程序构件结构如图图9.7所示所示。 模型运行时,模型运行时, SwarmSwarm作为一个虚拟机,作为一个虚拟机, SwarmSwarm的的内核执行模型和内核执行模型和GUIGUI事件,

54、操作系事件,操作系统与统与SwarmSwarm内核内核进行互交,而计算机的进行互交,而计算机的CPUCPU执行来自操作系统的程执行来自操作系统的程序指令,如序指令,如图图9.8所示所示。Observer SwarmSwarm ModelAgent_1Agent_mAgent_n图图9.7 Swarm仿真程序的构件结构仿真程序的构件结构 GUIGUIMODELMODELSwarm KernalSwarm KernalOperation SystemOperation SystemCPUCPU图图9.8 Swarm仿真程序的执行层次仿真程序的执行层次9.3.5 SwarmSwarm的基本特征和的基

55、本特征和JavaJava接口接口 1. SwarmSwarm的基本特征的基本特征 组成组成SwarmSwarm的程序库大部分是用的程序库大部分是用ObjectiveObjective C C语言编写的类库,只有语言编写的类库,只有GUIGUI是用是用Tcl/TkTcl/Tk编编写写的,用的,用户户可以在自己的仿可以在自己的仿真真程序中引用、程序中引用、扩扩展展这这些些类库类库。由。由这这些些类库组类库组成的成的SwarmSwarm开开发发工具具有如下重要的特征:工具具有如下重要的特征: (1 1)SwarmSwarm中的中的内内存管理存管理 (2 2)SwarmSwarm的的ActivityA

56、ctivity类库类库 (3 3)SwarmSwarm的的Prober(Prober(探探测测器)器) (4 4)GUIGUI图图形化用形化用户户界面界面2. SwarmSwarm的的JavaJava接口接口 Swarm2.0.1Swarm2.0.1版开始支持版开始支持JavaJava,其主要实现其主要实现技术是提供了一组技术是提供了一组JavaJava接口接口,存在于存在于SwarmSwarm的的JavaJava包中,包中, SwarmSwarm的所有特征都的所有特征都包含在该包内;这些接口可直接调用包含在该包内;这些接口可直接调用SwarmSwarm内核中的功能,用户只要在自己的内核中的功

57、能,用户只要在自己的JavaJava程序中调用这些接口即可。下面对程序中调用这些接口即可。下面对SwarmSwarm的的JavaJava接口接口简单简单的介的介绍绍: (1 1)Swarm EnvironmentSwarm Environment Swarm EnvironmentSwarm Environment包含供仿真运行的包含供仿真运行的AgentAgent和方法。常用的方法有:和方法。常用的方法有: InitSwarmInitSwarm。SwarmSwarm的开始方法,任何一个仿真的开始方法,任何一个仿真开始时,将首先调用这个方法。参数是:开始时,将首先调用这个方法。参数是:Appl

58、ication NameApplication Name、Version NameVersion Name、Bug-Bug-Reporting AddressReporting Address和和Command LineCommand Line ArgumentsArguments。 GlobalZoneGlobalZone。所有的。所有的SwarmSwarm 对象都必须要放到对象都必须要放到一个域中。在模型开始运行时,一个域中。在模型开始运行时, GlobalZoneGlobalZone 可能可能要用来引导程序运行,在这之后,将会建立新的子要用来引导程序运行,在这之后,将会建立新的子域并使用

59、子域。域并使用子域。 RandomGenerator,UniformIntRand, RandomGenerator,UniformIntRand, UniformDblRand UniformDblRand。为为了了方便方便,在,在InitSwarm InitSwarm 中,中,建立一个基本的发生器对象和分布对象。建立一个基本的发生器对象和分布对象。 ProbeLibraryProbeLibrary。一个。一个AgentAgent将自身变量的一个子集将自身变量的一个子集与一个探测器类联系起来,这也是查看一个与一个探测器类联系起来,这也是查看一个AgentAgent的的标准方法。标准方法。 P

60、robeDisplayManagerProbeDisplayManager。是用户定制是用户定制GUIGUI显示的显示的内容。内容。 (2)Selector Selector是是Objective C中的概念,用来使一条消中的概念,用来使一条消息与目标或类相分离;而息与目标或类相分离;而Java中,一个方法的调中,一个方法的调用总是在已知的、被检查过的上下文中进行。但是,用总是在已知的、被检查过的上下文中进行。但是,在在Swarm接口中,有许多地方用到接口中,有许多地方用到Selector,所,所以,对于以,对于Java来说,来说, Swarm引入了一个类来完成引入了一个类来完成这方面的功能。在这方面的功能。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论