《多主体仿真平台》PPT课件.ppt

上传人:小飞机 文档编号:5631798 上传时间:2023-08-04 格式:PPT 页数:44 大小:255.50KB
返回 下载 相关 举报
《多主体仿真平台》PPT课件.ppt_第1页
第1页 / 共44页
《多主体仿真平台》PPT课件.ppt_第2页
第2页 / 共44页
《多主体仿真平台》PPT课件.ppt_第3页
第3页 / 共44页
《多主体仿真平台》PPT课件.ppt_第4页
第4页 / 共44页
《多主体仿真平台》PPT课件.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《《多主体仿真平台》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《多主体仿真平台》PPT课件.ppt(44页珍藏版)》请在三一办公上搜索。

1、多主体仿真平台NetLogo,张 发2023年8月4日,一、NetLogo简介,1.基本情况NetLogo是一个多主体建模仿真集成环境由美国西北大学连接学习与计算机建模中心(Center for Connected Learning and Computer-Based Modeling,CCL)开发。2002年发布了1.0版本,最新4.0,2.主要功能,多主体建模多个移动Agent分布在二维空间中,每个Agent自主行动,所有主体并行异步更新,整个系统随着时间推进而动态变化。运行控制仿真输出提供了多种手段实现仿真运行监视和结果输出 实验管理BahaviorSpace,自动管理仿真运行,并记录

2、结果。系统动力学仿真参与式仿真HubNet 模型库,二、NetLogo仿真框架,1.NetLogo软件 界面(见软件):模型部分 三个TabPage 命令行窗口,2.模型的抽象,总体:大量的可移动主体在二维空间中交互作用,随着时间推进,微观个体的属性不断发生变化,系统的宏观特征也因此而变化。从三个方面理解:主体空间表达仿真推进,(1)主体,虚拟世界由主体构成,主体能够接受命令,进行活动,所有主体的行为并行发生。NetLogo中共有三类主体,turtles(小海龟)patches(瓦片)observer(观察者)在4.0中将Links作为一类主体,主体类型,turtles指能够在世界中移动的主体

3、。世界是二维的,划分为由patches组成的网格,每个patch占据一个矩形小块。patch不能移动patch也是主体patch和turtle一样可以有自己的属性和行为observer是一个全局主体,它观察着由turtles和patches构成的世界,能够执行指令获取世界全部或部分的状态,或实现对世界的控制。,虚拟世界,(2)空间表达,每个patch有二维坐标(pxcor,pycor)坐标值为整数。默认情况下,二维世界的水平、垂直坐标范围为(-17,17)每个turtle也有坐标(xcor,ycor)turtle坐标不必是整数,因此turtle不一定正好位于某个patch的中心。一个patch

4、上也可以同时有多个turtles。实际上对turtle而言,NetLogo的空间是连续的。,拓扑结构,根据在水平和垂直方向边界是否进行回绕,形成四种结构环面(torus),默认结构盒子(box)垂直柱面(vertical cylinder)水平柱面(horizontal cylinder)回绕影响主体移动时是否穿越边界软件操作,在View上点击Edit,(3)仿真推进,没有明确的仿真时钟变量,也没有提供特定的事件处理机制仿真推进是通过不断重复执行某个例程实现的模型中至少要有初始化例程和仿真执行例程初始化例程实现对模型初始状态的设置,生成所需的turtles,设置其状态,以及其它工作。仿真的执行

5、通过例程go实现,在go例程中编写所需执行的各种指令,完成一个仿真步的工作。需要在Interface页中建立一个按钮与go例程相联系,该按钮是一个永久(forever)按钮,点击后将不断重复执行go例程,直到遇到stop指令或用户再次点击该按钮则仿真终止。,2.建模基本过程,NetLogo模型包括可视化部件和例程两部分,二者具有紧密联系。先在Interface中创建可视化控件,然后在Procedures中实现相应的代码,通过设置控件的属性将二者联系起来。,Interface中主要有三类部件 运行控制参数控制仿真显示Procedure中的例程分为两类:命令(command)例程报告(report

6、er)例程,基本过程,初始化确定活动顺序定义主体属性与行为仿真过程监视图形输出仿真参数控制,三、生态系统建模示例,假设要模拟一个简单的生态系统,该系统中有一种生物以青草为食,通过吃草获取能量、该类生物经历成长、繁殖、死亡过程。,1.初始化,创建生物群体,并将它们随机分布在空间中。例程(demo1),2.仿真执行例程,实现turtle随机移动实现go例程,与forever按钮联系go 调用move-turtles例程,增加代码:(demo2),3.青草的模拟,为模拟青草的存在设置patches为绿色改写setup 例程,其中调用了两个新的例程setup-turtles和setup-patches

7、,分别设置turtle和patch的初始状态,demo3,4.主体行为,现在增加一些行为,假设turtle以青草为食,通过吃草获得能量,移动时要消耗能量。patch代表青草,绿色表示有,黑色表示无。为实现这样的模型,需要重新定义turtles的属性和行为,然后重写go例程。首先给turtle增加变量energy以存储当前能量值,另外添加吃草获取能量的例程,还要修改移动例程以反映能量消耗。,自定义turtle变量,修改go,定义eatgrass,turtle吃草获取能量修改patch颜色表示草的有无,修改原来的move-turtles例程,添加能量消耗指令。,假设turtle能量小于等于0就死亡

8、,当能量大于50就繁殖;青草以一定的恢复率再生。由于主体行为发生了改变,需重新定义go例程,,5.监视仿真运行,监视器控件(monitor)显示turtle数量,monitor表达式“count turtles”主体标签每个主体有一个变量lable,6.图形输出,在Interface中创建Plot控件,在Procedures中编制绘图例程。绘图概念每个Plot控件必须指定一个唯一名,在绘图时通过Plot名指定在哪个Plot上绘图 绘图时必须使用某个画笔,画笔默认是黑色实线,也可以创建自定义画笔,绘制turtles数量和青草数量曲线,添加Plot控件创建两个画笔,分别指定颜色添加do-plots

9、例程修改 setup和go例程,7.仿真参数控制,参数控件开关(switch)、滑动条(slider)、选择器(chooser)这些控件都对应一个全局变量,在Procedures中将这些全局变量作为参数使用在程序中,就能实现仿真参数的控制。,例如:选择仿真时长,用滑动条设置仿真时长,对应变量名terminate-time添加全局变量ticks修改go例程,随着仿真修改ticks当ticks=terminate-time时停止,代码,四、建模技术,1.访问邻域原语Neighbors,Moore邻域neighbors4,von Neumann邻域 in-radius at-points 演示,2.

10、主体交互,T-P交互turtle能够直接访问所在之处的patch,对该patch的属性进行读写 ask turtles set pcolor blue turtle还可以利用空间相关操作获取所需的patches,然后对这些patches的属性进行读写 ask turtles set pcolor-of patch-at 1 0 blue,patch可以通过一些操作获取相关的turtle例如turtles-here就返回当前patch处的turtle集合。也可以通过空间相关操作获取相应patch上的turtles。例如”turtles at dx dy”返回与当前patch相对距离(dx,dy)

11、处的turtles集合。,T-T交互,实现T-T交互的第一步是得到目标turtle的句柄,然后进行操作。获取目标turtle句柄的常用方式有三种:随机选取、根据特定条件、空间相关。随机选取是指在特定agent集合中以随机方式选取一个或n个agent。选取一个agent的原语为one-of 例如“set color-of one-of turtles red”在所有turtles中随机选择一个turtle,将其颜色设为红色。,获得目标agent或agentset的第二种方式是根据特定条件。方法是使用with原语,语法为agentset with condition,返回满足条件condition

12、的agent集合。例如“turtles with color=red”返回红色的turtle集合;,获取目标agent或agent集合的第三种方式是运用空间相关操作。比较直接的一种是获取当前patch上的turtle集合,原语有turtles-here和other-turtles-here,二者的区别仅在于是否包含调用者自身。例如“ask turtle 0 ask other-turtles-here fd 10”表示ID=0的turtle令处于同一patch上的其他turtle前进10。另一种方式是获取特定patch上的所有turtles。原语有-at dx dy,-on agentset等

13、。例如“turtles-at 1 0”返回右侧紧邻patch上的所有turtle,“turtles-on patch-ahead”返回前方patch上的所有turtle。,3.持久关系的建立,基本方法是在个体中相互保持对方的引用,这样可以随时对对方进行操作。例如在个体之间建立简单的伙伴关系。假设还没有找到伙伴的个体随机移动,直到与另一个尚没有伙伴的个体建立伙伴关系,一旦建立伙伴关系后将长期保持。为实现这一模型,首先为turtle增加变量partner,用于保持对伙伴的引用,然后在移动时从相遇的一些无伙伴的turtle中选择一个,相互建立伙伴关系。,4.多类异质主体,NetLogo可以定义不同类

14、别(称为breeds)的turtles,各类turtle可以拥有特有的属性和例程。定义关键词为breed,例如:breed wolves wolfbreed sheep a-sheep一旦定义了一类turtle,系统自动创建该类所有turtle的集合,一些相关的原语也马上可以使用了,例如对于sheep类就有create-sheep、hatch-sheep、is-a-sheep?等。也可以指定该类具有的变量,例如对于sheep,“sheep-own grabbed?”就为sheep增加了一个变量。,五、NetLogo高级特性,1.实验管理实验管理工具BehaviorSpace,能够自动对参数空间

15、进行扫描,也能进行较简单的统计计算,记录并输出仿真结果。,2.参与式仿真,参与式仿真工具HubNet,使得人们可以参与到仿真过程之中,每个参与者控制一个仿真主体,与计算机一起完成仿真实验。进行参与式仿真的基本过程是:首先在一台计算机上运行HubNet模型,作为服务器,建立HubNet活动,模型启动时指定HubNet会话(session)名作为该活动的标识。会话启动后出现HubNet控制中心,管理者通过控制中心实现用户管理HubNet服务器启动后,参与者可以在其它计算机上启动HubNet客户程序,用户选择要参与的会话进行登录。登录后会出现客户端界面,用户通过控件实现对主体行为的控制。,3.使用扩展包,除了使用NetLogo内建的原语外,还可以在模型中引入扩展包,使用扩展包中提供的命令和报告器就象使用内建原语一样。NetLogo可以使用第三方扩展包,当然也可以根据需要自行编写扩展包实现特定功能,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号