多智能体NetLogo仿真平台_第1页
多智能体NetLogo仿真平台_第2页
多智能体NetLogo仿真平台_第3页
多智能体NetLogo仿真平台_第4页
多智能体NetLogo仿真平台_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、多主体仿真平台netlogo 一、一、netlogo简介简介 1.基本情况基本情况 nnetlogo是一个多主体建模仿真集成环是一个多主体建模仿真集成环 境境 n由美国西北大学连接学习与计算机建模由美国西北大学连接学习与计算机建模 中心(中心(center for connected learning and computer-based modeling,ccl)开发。)开发。 2. 主要功能主要功能 n多主体建模多主体建模 n多个移动多个移动agent分布在二维空间中,每个分布在二维空间中,每个agent自主行动,自主行动, 所有主体并行异步更新,整个系统随着时间推进而动态变化。所有主体并

2、行异步更新,整个系统随着时间推进而动态变化。 n运行控制运行控制 n仿真输出仿真输出 n提供了多种手段实现仿真运行监视和结果输出提供了多种手段实现仿真运行监视和结果输出 n实验管理实验管理 nbahaviorspace,自动管理仿真运行,并记录结果。,自动管理仿真运行,并记录结果。 n系统动力学仿真系统动力学仿真 n参与式仿真参与式仿真 nhubnet n模型库模型库:可直接使用,也可修改可直接使用,也可修改 二、二、netlogo仿真框架仿真框架 1. netlogo软件软件 界面界面(手册手册p77): 模型部分模型部分 三个三个tabpage 命令行窗口命令行窗口 2.模型的抽象模型的抽

3、象 n总体:总体: n大量的可移动主体在二维空间中交互作用,大量的可移动主体在二维空间中交互作用, 随着时间推进,微观个体的属性不断发生变随着时间推进,微观个体的属性不断发生变 化,系统的宏观特征也因此而变化。化,系统的宏观特征也因此而变化。 n从三个方面理解:从三个方面理解: n主体主体 n空间表达空间表达 n仿真推进仿真推进 (1)主体)主体 n虚拟世界由主体构成,主体能够接受命虚拟世界由主体构成,主体能够接受命 令,进行活动,所有主体的行为令,进行活动,所有主体的行为并行并行发发 生。生。 nnetlogo中共有三类主体,中共有三类主体, nturtles(小海龟)(小海龟) npatc

4、hes(瓦片)(瓦片) nobserver(观察者)(观察者) n在在4.0中将中将links作为一类主体作为一类主体 主体类型主体类型 nturtles指能够在世界中移动的主体。指能够在世界中移动的主体。 n世界是二维的,划分为由世界是二维的,划分为由patches组成的网格,组成的网格, 每个每个patch占据一个矩形小块。占据一个矩形小块。 npatch不能移动不能移动 npatch也是主体也是主体 npatch和和turtle一样可以有自己的属性和行为一样可以有自己的属性和行为 nobserver是一个全局主体,它观察着由是一个全局主体,它观察着由 turtles和和patches构成

5、的世界,能够执行指令构成的世界,能够执行指令 获取世界全部或部分的状态,或实现对世界的获取世界全部或部分的状态,或实现对世界的 控制。控制。 虚拟世界虚拟世界 (2)空间表达)空间表达 n每个每个patch有二维坐标(有二维坐标(pxcor,pycor)坐标值为)坐标值为整数整数。 n默认情况下,二维世界的水平、垂直坐标范围为(默认情况下,二维世界的水平、垂直坐标范围为(- 17,17) n每个每个turtle也有坐标(也有坐标(xcor,ycor) nturtle坐标坐标不必是整数不必是整数,因此,因此turtle不一定正好位于某个不一定正好位于某个 patch的中心。的中心。 n一个一个p

6、atch上也可以同时有多个上也可以同时有多个turtles。 n实际上对实际上对turtle而言,而言,netlogo的空间是连续的。的空间是连续的。 拓扑结构拓扑结构 n根据在水平和垂直方向边界是否进行回根据在水平和垂直方向边界是否进行回 绕绕 ,形成四种结构,形成四种结构 n环面(环面(torus),默认结构),默认结构 n盒子(盒子(box) n垂直柱面(垂直柱面(vertical cylinder) n水平柱面(水平柱面(horizontal cylinder) n回绕影响主体移动时是否穿越边界回绕影响主体移动时是否穿越边界 n软件操作,在软件操作,在view上点击上点击edit (3

7、)仿真推进)仿真推进 n没有明确的仿真时钟变量,也没有提供特定的没有明确的仿真时钟变量,也没有提供特定的 事件处理机制事件处理机制 n仿真推进是通过不断重复执行某个例程实现的仿真推进是通过不断重复执行某个例程实现的 n模型中至少要有模型中至少要有初始化初始化例程和仿真例程和仿真执行执行例程例程 n初始化例程初始化例程实现对模型初始状态的设置,生成所需实现对模型初始状态的设置,生成所需 的的turtles,设置其状态,以及其它工作。,设置其状态,以及其它工作。 n仿真的执行仿真的执行通过例程通过例程go实现,在实现,在go例程中编写所例程中编写所 需执行的各种指令,完成一个仿真步的工作。需执行的

8、各种指令,完成一个仿真步的工作。 n需要在需要在interface页中建立一个按钮与页中建立一个按钮与go例程相联例程相联 系,该按钮是一个永久(系,该按钮是一个永久(forever)按钮,点击后将按钮,点击后将 不断重复执行不断重复执行go例程,直到遇到例程,直到遇到stop指令或用户指令或用户 再次点击该按钮则仿真终止。再次点击该按钮则仿真终止。 2.建模基本过程建模基本过程 nnetlogo模型包括可视化部件和例程两模型包括可视化部件和例程两 部分,二者具有紧密联系。部分,二者具有紧密联系。 n先在先在interface中创建可视化控件,然后中创建可视化控件,然后 在在procedure

9、s中实现相应的代码,通过中实现相应的代码,通过 设置控件的属性将二者联系起来。设置控件的属性将二者联系起来。 ninterface中主要有三类部件中主要有三类部件 n运行控制运行控制 n参数控制参数控制 n仿真显示仿真显示 nprocedure中的例程分为两类:中的例程分为两类: n命令(命令(command)例程)例程 n报告(报告(reporter)例程)例程 基本过程基本过程 n初始化初始化 n确定活动顺序确定活动顺序 n定义主体属性与行为定义主体属性与行为 n仿真过程监视仿真过程监视 n图形输出图形输出 n仿真参数控制仿真参数控制 三、生态系统建模示例三、生态系统建模示例 n假设要模拟

10、一个简单的生态系统,假设要模拟一个简单的生态系统, n该系统中有一种生物以青草为食,通过该系统中有一种生物以青草为食,通过 吃草获取能量、吃草获取能量、 n该类生物经历成长、繁殖、死亡过程。该类生物经历成长、繁殖、死亡过程。 1. 初始化初始化 n创建生物群体,并将它们随机分布在空创建生物群体,并将它们随机分布在空 间中。间中。 n例程(例程(demo1) to setup ;定义例程setup clear-all ;设置整个世界为初始状态 ;创建100个turtles,创建后各turtle默认坐标是(0,0) create-turtles 100 ;命令所有turtle执行语句setxy r

11、andom-xcor random-ycor ;各turtle 坐标随机产生,实现turtles在空间中的随机分布 ask turtles setxy random-xcor random-ycor end 2.仿真执行例程仿真执行例程 n实现实现turtle随机移动随机移动 n实现实现go例程,与例程,与forever按钮联系按钮联系 ngo 调用调用move-turtles例程例程 增加代码增加代码: (demo2) to go ;定义仿真执行例程go move-turtles ;调用例程move-turtles end to move-turtles ;定义例程move-turtles

12、;所有turtle执行 中的命令序列 ask turtles right random 360 ;右转一个角度,度数随机产生 forward 1 ;前进距离1 end 3.青草的模拟青草的模拟 n为模拟青草的存在设置为模拟青草的存在设置patches为绿色为绿色 n改写改写setup 例程,其中调用了两个新的例程,其中调用了两个新的 例程例程setup-turtles和和setup-patches, 分别设置分别设置turtle和和patch的初始状态的初始状态 demo3 to setup clear-all setup-patches ;调用例程setup-patches setup-tu

13、rtles ;调用例程setup-turtles end to setup-patches ;命令所有patches执行指令set pcolor green ;该指令将patch颜色设置为绿色 ask patchesset pcolor green end to setup-turtles create-turtles 100 ask turtlessetxy random-xcor random-ycor end 4.主体行为主体行为 n现在增加一些行为,假设现在增加一些行为,假设turtle以青草为食,以青草为食, 通过吃草获得能量,移动时要消耗能量。通过吃草获得能量,移动时要消耗能量。

14、npatch代表青草,绿色表示有,黑色表示无。代表青草,绿色表示有,黑色表示无。 n为实现这样的模型,需要重新定义为实现这样的模型,需要重新定义turtles的的 属性和行为,然后重写属性和行为,然后重写go例程。例程。 n首先给首先给turtle增加变量增加变量energy以存储当前能量值,以存储当前能量值, n另外添加吃草获取能量的例程,另外添加吃草获取能量的例程, n还要修改移动例程以反映能量消耗。还要修改移动例程以反映能量消耗。 自定义自定义turtle变量,修改变量,修改go turtles-ownenergy ;声明turtle变量energy to go move-turtles

15、 ;turtle随机移动,消耗能量 eat-grass ;吃草获取能量 end 定义定义eatgrass nturtle吃草获取能量吃草获取能量 n修改修改patch颜色表示草的有无颜色表示草的有无 to eat-grass ;如果turtle所在patch颜色为绿色,表示有草,则吃草, ;令该patch颜色变为黑色,表示已无草,然后自身能量增加10 ask turtles if pcolor = green set pcolor black set energy (energy+10) end 修改原来的修改原来的move-turtles例程,添加能量例程,添加能量 消耗指令。消耗指令。 t

16、o move-turtles ask turtles right random 360 forward 1 set energy energy - 1 ;移动后能量减少1 end 假设假设turtle能量小于等于能量小于等于0就死亡,当能量大于就死亡,当能量大于 50就繁殖;青草以一定的恢复率再生。由于主体就繁殖;青草以一定的恢复率再生。由于主体 行为发生了改变,需重新定义行为发生了改变,需重新定义go例程,例程, to go move-turtles ;移动 eat-grass ;吃草 reproduce ;繁殖 check-death ;死亡 regrow-grass ;青草再生 end

17、to reproduce ask turtles if energy 50 ;如果能量大于50则繁殖 set energy energy-50 ;母体能量减少50 hatch 1 set energy 50 ;产生一个后代,初始能量50 end to check-death ask turtles if energy=0 die ;如果能量小于等于0则死亡 end to regrow-grass ask patches ;青草以0.03的概率再生 if random 100= terminate-time stop ;判断是否应停止 move-turtles eat-grass reprodu

18、ce check-death regrow-grass do-plots set ticks ticks+1 ;时钟推进 end 四、建模技术四、建模技术 1. 访问邻域原语访问邻域原语 nneighbors ,moore邻域邻域 nneighbors4 ,von neumann邻域邻域 n in-radius n at-points n演示演示 2.主体交互主体交互 nt-p交互交互 nturtle能够直接访问所在之处的能够直接访问所在之处的patch,对,对 该该patch的属性进行读写的属性进行读写 nask turtles set pcolor blue nturtle还可以利用空间相

19、关操作获取所需的还可以利用空间相关操作获取所需的 patches,然后对这些,然后对这些patches的属性进行的属性进行 读写读写 nask turtles set pcolor-of patch-at 1 0 blue npatch可以通过一些操作获取相关的可以通过一些操作获取相关的 turtle n例如例如turtles-here就返回当前就返回当前patch处的处的 turtle集合。集合。 n也可以通过空间相关操作获取相应也可以通过空间相关操作获取相应 patch上的上的turtles。 n例如例如”turtles at dx dy”返回与当前返回与当前patch 相对距离(相对距离

20、(dx,dy)处的)处的turtles集合。集合。 t-t交互交互 n实现实现t-t交互的第一步是得到目标交互的第一步是得到目标turtle的句的句 柄,然后进行操作。柄,然后进行操作。 n获取目标获取目标turtle句柄的常用方式有三种:随机句柄的常用方式有三种:随机 选取、根据特定条件、空间相关。选取、根据特定条件、空间相关。 n随机选取是指在特定随机选取是指在特定agent集合中以随机方式集合中以随机方式 选取一个或选取一个或n个个agent。选取一个。选取一个agent的原的原 语为语为one-of n例如例如“set color-of one-of turtles red”在所有在所

21、有 turtles中随机选择一个中随机选择一个turtle,将其颜色设为红色。,将其颜色设为红色。 n获得目标获得目标agent或或agentset的第二种方的第二种方 式是根据特定条件。式是根据特定条件。 n方法是使用方法是使用with原语,语法为原语,语法为agentset with condition,返回满足条件,返回满足条件 condition的的agent集合。集合。 n例如例如“turtles with color = red”返回红返回红 色的色的turtle集合;集合; n获取目标获取目标agent或或agent集合的第三种方式是集合的第三种方式是 运用空间相关操作。运用空间

22、相关操作。 n比较直接的一种是获取当前比较直接的一种是获取当前patch上的上的turtle 集合,原语有集合,原语有turtles-here和和other-turtles- here,二者的区别仅在于是否包含调用者自身。,二者的区别仅在于是否包含调用者自身。 n例如例如“ask turtle 0 ask other-turtles-here fd 10”表示表示id=0的的turtle令处于同一令处于同一patch上的其上的其 他他turtle前进前进10。 n另一种方式是获取特定另一种方式是获取特定patch上的所有上的所有turtles。 原语有原语有-at dx dy,-on agen

23、tset等。等。 n例如例如“turtles-at 1 0”返回右侧紧邻返回右侧紧邻patch上的所上的所 有有turtle,“turtles-on patch-ahead”返回前方返回前方 patch上的所有上的所有turtle。 3.持久关系的建立持久关系的建立 n基本方法是在个体中相互保持对方的引用,这基本方法是在个体中相互保持对方的引用,这 样可以随时对对方进行操作。样可以随时对对方进行操作。 n例如在个体之间建立简单的伙伴关系。例如在个体之间建立简单的伙伴关系。 n假设还没有找到伙伴的个体随机移动,直到与另一假设还没有找到伙伴的个体随机移动,直到与另一 个尚没有伙伴的个体建立伙伴关系

24、,一旦建立伙伴个尚没有伙伴的个体建立伙伴关系,一旦建立伙伴 关系后将长期保持。关系后将长期保持。 n为实现这一模型,首先为为实现这一模型,首先为turtle增加变量增加变量partner, 用于保持对伙伴的引用,然后在移动时从相遇的一用于保持对伙伴的引用,然后在移动时从相遇的一 些无伙伴的些无伙伴的turtle中选择一个,相互建立伙伴关系。中选择一个,相互建立伙伴关系。 4.多类异质主体多类异质主体 nnetlogo可以定义不同类别可以定义不同类别(称为称为breeds)的的turtles, 各类各类turtle可以拥有特有的属性和例程。可以拥有特有的属性和例程。 n定义关键词为定义关键词为breed,例如:,例如: nbreed wolves wolf nbreed sheep a-sheep n一旦定义了一类一旦定义了一类turtle,系统自动创建该类所有,系统自动创建该类所有turtle 的集合,一些相关的原语也马上可以使用了,的集合,一些相关的原语也马上可以使用了, n例如对于例如对于sheep类就有类就有create-sheep、hatch-sheep、is- a-sheep?等。等。 n也可以指定该类具有的变量,例如对于也可以指定该类具有的变量,例如对于sheep,“sheep- own grabbed?”就为就为sheep增加了一个变量。增加了一个变量。 五、五

温馨提示

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

评论

0/150

提交评论