英语原文共 27 页,剩余内容已隐藏,支付完成后下载完整资料
6
逃避历史事件:人工生命模型与Repast的概述
Michael J. North和Charles M. Macal
人工生命专注于合成似乎活着的形式和功能。人工生命允许在目前可观察到的历史事故之外对生物系统进行科学研究。基于代理的建模和仿真用于创建计算实验室,复制实际或可能的复杂自适应系统的实际或潜在行为。因此,基于代理的建模提供了进行人工生命实验的自然框架。免费和开源的Recursive Porous Agent Simulation Toolkit(Repast)是目前可用的几种基于代理的高级建模工具包之一。Repast旨在支持极其灵活的生活社会代理模型的开发,但不仅限于对生活社会实体进行建模。本文详细描述了Repast系统,并回顾了使用Repast构建的人工生命软件模型。
介绍
人工生命专注于在计算机,机器,分子和其他替代媒体中从头开始合成“类似生活的行为”[29]。人工生命扩展了“生物学实验研究的视野,超越了目前被我们所知的生命所包围的领域”,以“提供进入生命领域的可能性”[29]。基于代理的建模和仿真(ABMS)用于创建计算实验室,复制实际或可能的复杂自适应系统(CAS)的实际或潜在行为。代理建模的目标是允许使用模拟复杂系统进行实验。为实现此目的,基于代理的建模使用一组代理和框架来模拟代理的决策和交互。代理模型可以显示复杂的自适应系统如何随着时间的推移以难以从单个代理的行为知识中预测的方式发展。因此,基于代理的建模提供了进行人工生命实验的自然框架。免费和开源的Recursive Porous Agent Simulation Toolkit(Repast)是目前可用的几种基于代理的高级建模工具包之一。
人造生命
人工生命学科研究了活着的形式和功能的综合。人工生命允许在目前可观察到的历史事故之外对生物系统进行科学研究。根据Langton [29]的说法:
生物学是对生命的科学研究 - 原则上,无论如何。在实践中,生物学是基于碳链化学的地球生命的科学研究。其章程中没有任何内容将生物学限制在以碳为基础的生活中;简单地说,这是唯一可以用来学习的生活。因此,理论生物学长期以来面临的根本障碍是不可能从单个例子中推导出一般原则。
没有其他例子,很难区分生命的基本属性 - 任何生命系统可能共有的属性 - 原则上可能附带于生命的属性,但由于组合而恰好在地球上的生命中具有普遍性。当地的历史事故和共同的遗传血统。
为了得出关于生命的一般理论,我们需要一组实例来概括。由于外星生命形式不太可能在不久的将来呈现给我们学习,我们唯一的选择是尝试自己创造另类的生命形式 - 人造生命 - 字面意思是“由人而不是自然制造的生活”。
兰顿对人造生命的描述表明了深度,但却掩盖了门徒的年龄。根据迪保罗[12]的说法:
要说人造生命在名义上是一门年轻的学科只是夸大其词,但认为它的目标是新的是错误的。合成科学目标与计算技术的结合使人工生命成为过去十五年的产物,但其动机在控制论,理论生物学以及理解生命和思想奥秘的古老动力中有更深层次的根源。难怪这个领域的很大一部分工作是重新发现和更新难题。其他学科通常出于非常正当的理由回避这些问题,或者将它们排除在日常研究的焦点之外;然而,这些问题特别适合用新技术处理,例如计算建模和其他合成方法。什么是有机体?什么是认知?目的来自哪里?
基于Agent的人工生命建模
基于代理的建模和仿真用于创建计算实验室,其复制实际或可能的复杂自适应系统的所选实际或潜在行为。复杂的自适应系统由在适应不断变化的环境的同时进行交互,变异,复制和死亡的代理组成。Holland已经确定了所有复杂自适应系统共有的三个属性和四种机制[22]:
-
-
-
- 当组件或代理以不仅仅是加法的方式交换资源或信息时,就会出现非线性属性。一个例子是光合细胞试剂,当要求一卡路里时返回一卡路里的能量,当请求两卡路里时返回两卡路里的能量,当请求十卡路里时返回三卡路里的能量。
- 当代理人或代理人群随着时间的推移彼此区分时,观察到多样性属性。一个例子是新物种的进化出现。
- 当一组代理在较高级别被视为单个代理时,会发生聚合属性。一个例子是蚁群中的蚂蚁。
- 流机制涉及代理之间的资源或信息交换,使得资源或信息可以从代理重复地转发到代理。一个例子是生态系统中代理之间的能量流动。
- 标记机制涉及可识别标志的存在,这些标志允许代理识别其他代理的特征。一个例子是在社交系统中使用诸如“博士”之类的正式标题。
- 内部模型机制涉及代理中嵌入的世界的正式,非正式或隐式表示。一个例子是猎物在追击过程中可能逃离的方向的进化观。
- 当代理参与多种交互时,使用构建块机制。一个例子是捕食者代理,它也可以成为较大捕食者的猎物。
-
-
当然,这些属性和机制是相互关联的。例如,通过聚合,许多代理可以作为一个代理。使用构建块,在某种意义上,一个代理可以充当许多代理。基于代理的模型通常包含复杂自适应系统的部分或全部属性和机制。
代理建模的目标是允许使用模拟复杂系统进行实验。为实现此目的,基于代理的建模使用一组代理和框架来模拟代理的决策和交互。代理模型可以显示复杂的自适应系统如何随着时间的推移以难以从单个代理的行为知识中预测的方式发展。代理建模侧重于个人行为。代理规则通常基于个体理论,如理性个体行为,有限理性或满足[42]。基于这些简单类型的规则,代理模型可用于研究模式如何出现。
代理建模可以揭示宏观或系统级别的行为模式,这些行为模式不仅仅是对基础代理规则的检查也不明显
- 这些模式称为紧急行为。因此,基于代理的建模和模拟提供了进行人工生命实验的自然框架。*
基于代理的建模和仿真与多智能体系统(MAS)领域密切相关。这两个领域都集中在计算复杂自适应系统的创建上。然而,代理仿真模拟复杂自适应系统的实际或潜在行为,而MAS通常关注人工智能应用于机器人系统,交互系统和代理系统。
章组织
本章从人工生命的角度概述了Repast代理建模工具包。本章分为四个部分。介绍描述了人工生命和基于代理的建模和模拟。第二部分讨论Repast代理建模工具包的开发生态系统和基础概念。第三部分回顾了一系列人工进化和生态系统的Repast人工生命模型;人工社会;和人工生物系统。最后一节提供了总结和结论。
Repast
递归多孔代理仿真工具包(Repast)是可用的几种代理建模工具包之一。Repast借用了基于Swarm代理的建模工具包[44]中的许多概念。Repast在几个方面与Swarm不同。首先,Repast以纯Java和纯Mcirosoft.Net形式提供,而Swarm是Objective-C和Java的混合体。其次,Swarm是在GNU通用公共许可证(GPL)下发布的,它要求开发人员为获得模型二进制代码的合法副本的任何人提供其整个模型的源代码。Repast是根据Berkeley Software Distribution(BSD)许可证的变体分发的,该许可证不需要发布模型源代码。第三,Repast为神经网络,遗传算法,社交网络建模和其他主题提供了一套集成的库。有关Swarm,Repast和其他代理建模工具包的评论,请参阅Serenko和Detlor的调查,Gilbert和Bankes的调查以及Tobias的工具包审核和霍夫曼[20,43,45]。特别是,Tobias和Hofmann对16个代理建模工具包进行了审查,发现“我们可以非常肯定地得出结论,根据现有信息,Repast目前是最适合基于社会干预应用建模的模拟框架。理论和数据“[45]。
*ABMS,基于代理的建模(ABM),基于代理的模拟(ABS)和个体建模(IBM)都是同义词。ABMS在这里使用,因为ABM可能与防弹导弹相混淆,ABS可能与防抱死制动混淆,IBM可能会与国际商业机器公司混淆。
Repast是一个免费的开源工具包,最初由Sal-lach,Collier,Howe,North等人开发[10]。Repast是在芝加哥大学创建的。随后,它由阿贡国家实验室等组织维护。Repast现在由非营利性志愿者Repast Organization for Architecture and Design(ROAD)管理。ROAD由董事会领导,董事会成员包括来自各种政府,学术和工业组织的成员。Repast系统(包括源代码)可直接从Web [41]获得。
Repast旨在支持极其灵活的生活社会代理模型的开发,但不仅限于对生活社会实体进行建模。来自ROAD主页[41]:
我们与Repast的目标是超越代理人的代表作为离散的,自足的实体,支持社会行动者的观点,即渗透性,交错性和相互界定;具有级联和重组动机。我们打算支持信念系统,代理,组织和机构的建模作为递归的社会结构。
重建发展生态系统
从本质上讲,Repast toolkit 3.0版可以被认为是基于代理的建模服务或功能的规范。这个概念规范有三个具体的实现。当然,所有这些版本都具有构成Repast系统的相同核心服务。这些实现在底层平台和模型开发语言方面有所不同。这三个实现是Repast for Java(RepastJ),Repast for Microsoft.Net框架(Repast.Net)和Repast for Python Scripting(RepastPy)。RepastJ是定义核心服务的参考实现。Repast的第四个版本,即Repz for Oz / Mozart(Repas-tOz),是一个实验系统,它在添加高级新功能的同时部分实现了Repast概念规范[33,47]。一般来说,建议使用RepastPy使用RepastPy编写基本模型,因为它具有可视化界面,高级模型使用RepastJ用Java编写,或者用Repast.Net用C#编写。Repast模型用户界面的示例如图6.1所示。
Repast 3.0具有多种功能,包括:
Repast包含各种代理模板和示例。但是,该工具包为用户提供了如何指定代理的属性和行为的完全灵活性。
bull;
图6.1。Repast模型用户界面。另见彩色印版。
Repast完全面向对象。
bull;
Repast包括完全并发的离散事件调度程序。此调度程序支持顺序和并行离散事件操作。
bull;
Repast提供内置的模拟结果记录和绘图工具。Repast拥有自动蒙特卡罗模拟框架。
bull;
bull;
Repast提供一系列二维代理环境和可视化。
bull;
Repast允许用户在运行时动态访问和修改代理属性,代理行为方程和模型属性。
bull;
Repast包括用于遗传算法,神经网络,随机数生成和专业数学的库。
bull;
Repast包括内置系统动力学建模。Repast拥有社交网络建模支持工具。
bull;
bull;
Repast集成了地理信息系统(GIS)支持。Repast完全以各种语言实现,包括Java和C#。
bull;
bull;
Repast模型可以用多种语言开发,包括Java,C#,Managed C ,Visual Basic.Net,Managed Lisp,Managed Prolog和Python脚本。
bull;
Repast几乎适用于所有现代计算平台,包括Windows,Mac OS和Linux。平台支持包括个人计算机和大规模科学计算集群。
bull;
Repast的功能直接支持具有Hol-s三种属性和四种机制的模型的实现[22]:
-
-
-
- Repast允许代理中的非线性,因为它们的行为完全由用户设计。Repast的系统动力学,遗传算法,神经网络,随机数生成和社交网络库使这一过程变得简单。
- Repast通过让用户完全控制其代理的定义和初始化方式来支持多样性。同样,Repast库简化了多样性的规范。
- Repast允许用户指定和维护代理组,从而允许聚合属性。
- Repast支持流机制,具有系统动态工具和社交网络库等功能。
- Repast通过允许代理提供任意标记来提供标记机制。
- Repast通过灵活的代理定义和许多行为库使内部模型机制可用。
- Repast通过其面向对象的多态性支持构建块机制。
-
-
Repast for Python Scripting(RepastPy)支持使用Python [31]中定义的代理行为构建可视化模型。RepastPy模型可以使用RepastPy的导出选项自动转换为RepastJ模型。
RepastPy用户使用图6.2左上角窗口中显示的界面将组件添加到他们的模型中。然后,RepastPy用户使用Python来编写代理行为的脚本,如图6.2右下方的窗口所示。
示例模型中的组件显示在
全文共9669字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[2578]
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。