基于Netlogo建模基础知识讲解课件_第1页
基于Netlogo建模基础知识讲解课件_第2页
基于Netlogo建模基础知识讲解课件_第3页
基于Netlogo建模基础知识讲解课件_第4页
基于Netlogo建模基础知识讲解课件_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

Netlogo建模基础知识讲奕深Netlogo建模基础知识讲etLogo简介1.基本情况NetLogo是一个用来对自然和社会现象进行仿真的可编程建模环境建模仿真集成环境由美国西北大学连接学习与计算机建模中心(CenterforConnectedLearningandComputer-BasedModeling,CCL)开发。2002年发布了1.0版本,用户手册为4.0.2版本,最新为4.1.1版本NetLogo简介1.基本情况2.主要功能多主体建模(重点)多个移动Agent分布在二维空间中,每个Agent自主行动,所有主体并行异步更新,整个系统随着时间推进而动态变化。运行控制仿真输出提供了多种手段实现仿真运行监视和结果输出实验管理BahaviorSpace,自动管理仿真运行,并记录结果。系统动力学仿真参与式仿真HubNet模型库2.主要功能多主体建模(重点)3.软件特色完全可编程简单语言结构是LOGO语言的扩展,支持智能体和网络结构可以定义无限个智能体和变量多种内置命令帮助使用支持整型和双精度型浮点数计算跨平台、可复用的应用。3.软件特色完全可编程二、NetLogo仿真框架1.NetLogo软件

二、NetLogo仿真框架1.NetLogo软件基于Netlogo建模基础知识讲解课件2.模型的抽象总体:大量的可移动主体在二维空间中交互作用,随着时间推进,微观个体的属性不断发生变化,系统的宏观特征也因此而变化。从三个方面理解:主体空间表达仿真推进2.模型的抽象总体:(1)主体(Agents)虚拟世界由主体构成,主体能够接受命令,进行活动,所有主体的行为并行发生。NetLogo中共有三类主体,turtles(海龟)patches(瓦片)observer(观察者)(1)主体(Agents)虚拟世界由主体构成,主体能够接受命主体类型turtles指能够在世界中移动的主体。世界是二维的,划分为由patches组成的网格,每个patch占据一个矩形小块。patch不能移动patch也是主体patch和turtle一样可以有自己的属性和行为observer是一个全局主体,它观察着由turtles和patches构成的世界,能够执行指令获取世界全部或部分的状态,或实现对世界的控制。主体类型turtles指能够在世界中移动的主体。虚拟世界虚拟世界(2)空间表达每个patch有二维坐标(pxcor,pycor)坐标值为整数。默认情况下,二维世界的水平、垂直坐标范围为(-17,17)每个turtle也有坐标(xcor,ycor)turtle坐标不必是整数,因此turtle不一定正好位于某个patch的中心。一个patch上也可以同时有多个turtles。实际上对turtle而言,NetLogo的空间是连续的。(2)空间表达每个patch有二维坐标(pxcor,pyco(3)仿真推进没有明确的仿真时钟变量,也没有提供特定的事件处理机制仿真推进是通过不断重复执行某个例程实现的模型中至少要有初始化例程和仿真执行例程初始化例程实现对模型初始状态的设置,生成所需的turtles,设置其状态,以及其它工作。仿真的执行通过例程go实现,在go例程中编写所需执行的各种指令,完成一个仿真步的工作。需要在Interface页中建立一个按钮与go例程相联系,该按钮是一个永久(forever)按钮,点击后将不断重复执行go例程,直到遇到stop指令或用户再次点击该按钮则仿真终止。(3)仿真推进没有明确的仿真时钟变量,也没有提供特定的事件处2.建模基本过程NetLogo模型包括可视化部件和例程两部分,二者具有紧密联系。先在Interface中创建可视化控件,然后在Procedures中实现相应的代码,通过设置控件的属性将二者联系起来。2.建模基本过程NetLogo模型包括可视化部件和例程两部分Interface中主要有三类部件运行控制参数控制仿真显示Procedure中的例程分为两类:命令(command)例程报告(reporter)例程Interface中主要有三类部件仿真的基本框架初始化tosetup每一个仿真周期togo是否结束?结束对所有Turtle循环askturtles每个Turtle做出决策forward1是否仿真的基本框架初始化tosetup每一个仿真周期togo三、编程指南三、编程指南breed[]turtles-own[]globals[]tosetup[]endtogo[]endaskturtles[setpcolorwhite]set-default-shapeturtles"person"setxyrandom-xcorrandom-ycorsetturtles-ownrandomsetage(22+random53)setage(age+1)sethouse0clear-all(ca)forward(fd)1create-turles100sprout-breedsnumber[]sproutnumber[]hatchnumber[]hatch-breedsnumber[]askone-ofmen[setbreed]ififelsebreed[]四、生态系统建模示例假设要模拟一个简单的生态系统,该系统中有一种生物以青草为食,通过吃草获取能量、该类生物经历成长、繁殖、死亡过程。四、生态系统建模示例假设要模拟一个简单的生态系统,1.初始化创建生物群体,并将它们随机分布在空间中。例程(demo1)tosetup;;定义例程setupclear-all;;设置整个世界为初始状态;;创建100个turtles,创建后各turtle默认坐标是(0,0)create-turtles100;;命令所有turtle执行语句setxyrandom-xcorrandom-ycor;;各turtle坐标随机产生,实现turtles在空间中的随机分布askturtles[setxyrandom-xcorrandom-ycor]end1.初始化创建生物群体,并将它们随机分布在空间中。to2.仿真执行例程实现turtle随机移动实现go例程,与forever按钮联系go调用move-turtles例程2.仿真执行例程实现turtle随机移动增加代码:(demo2)togo;;定义仿真执行例程gomove-turtles;;调用例程move-turtlesendtomove-turtles;;定义例程move-turtles;;所有turtle执行[]中的命令序列askturtles[rightrandom360;;右转一个角度,度数随机产生forward1;;前进距离1]end增加代码:(demo2)togo3.青草的模拟为模拟青草的存在设置patches为绿色改写setup例程,其中调用了两个新的例程setup-turtles和setup-patches,分别设置turtle和patch的初始状态3.青草的模拟为模拟青草的存在设置patches为绿色demo3tosetupclear-allsetup-patches;;调用例程setup-patchessetup-turtles;;调用例程setup-turtlesendtosetup-patches;;命令所有patches执行指令setpcolorgreen;;该指令将patch颜色设置为绿色askpatches[setpcolorgreen]endtosetup-turtlescreate-turtles100askturtles[setxyrandom-xcorrandom-ycor]enddemo3tosetup4.主体行为现在增加一些行为,假设turtle以青草为食,通过吃草获得能量,移动时要消耗能量。patch代表青草,绿色表示有,黑色表示无。为实现这样的模型,需要重新定义turtles的属性和行为,然后重写go例程。首先给turtle增加变量energy以存储当前能量值,另外添加吃草获取能量的例程,还要修改移动例程以反映能量消耗。4.主体行为现在增加一些行为,假设turtle以青草为食,通自定义turtle变量,修改goturtles-own[energy];;声明turtle变量energytogomove-turtles;;turtle随机移动,消耗能量eat-grass;;吃草获取能量end自定义turtle变量,修改goturtles-own[en定义eat-grassturtle吃草获取能量修改patch颜色表示草的有无toeat-grass;;如果turtle所在patch颜色为绿色,表示有草,则吃草,;;令该patch颜色变为黑色,表示已无草,然后自身能量增加10askturtles[ifpcolor=green[setpcolorblacksetenergy(energy+10)]]end定义eat-grassturtle吃草获取能量toeat-修改原来的move-turtles例程,添加能量消耗指令。tomove-turtlesaskturtles[rightrandom360forward1setenergyenergy-1;;移动后能量减少1]end修改原来的move-turtles例程,添加能量消耗指令。t假设turtle能量小于等于0就死亡,当能量大于50就繁殖;青草以一定的恢复率再生。由于主体行为发生了改变,需重新定义go例程,togomove-turtles;;移动eat-grass;;吃草reproduce;;繁殖check-death;;死亡regrow-grass;;青草再生end假设turtle能量小于等于0就死亡,当能量大于50就繁殖;toreproduceaskturtles[ifenergy>50[;;如果能量大于50则繁殖setenergyenergy-50;;母体能量减少50hatch1[setenergy50];;产生一个后代,初始能量50]]endtocheck-deathaskturtles[ifenergy<=0[die];;如果能量小于等于0则死亡]endtoregrow-grassaskpatches[;;青草以0.03的概率再生ifrandom100<3[setpcolorgreen]]endtoreproduce5.监视仿真运行监视器控件(monitor)显示turtle数量,monitor表达式“countturtles”主体标签每个主体有一个变量lable5.监视仿真运行监视器控件(monitor)6.图形输出在Interface中创建Plot控件,在Procedures中编制绘图例程。绘图概念每个Plot控件必须指定一个唯一名,在绘图时通过Plot名指定在哪个Plot上绘图绘图时必须使用某个画笔,画笔默认是黑色实线,也可以创建自定义画笔 6.图形输出在Interface中创建Plot控件,在Pro绘制turtles数量和青草数量曲线添加Plot控件创建两个画笔,分别指定颜色添加do-plots例程修改setup和go例程绘制turtles数量和青草数量曲线添加Plot控件tosetupclear-allsetup-patchessetup-turtles

do-plots;;绘制初始点endtogomove-turtleseat-grassreproducecheck-deathregrow-grass

do-plots;;随仿真运行绘制图形endtodo-plotsset-current-plot“totals”;;选定plot控件set-current-plot-pen“turtles”;;选定画笔turtlesplotcountturtles;;绘制turtles数量

set-current-plot-pen“grass”;;选定画笔grassplotcountpatcheswith[pcolor=green];;绘制青草数量endtosetup7.仿真参数控制参数控件开关(switch)、滑动条(slider)、选择器(chooser)这些控件都对应一个全局变量,在Procedures中将这些全局变量作为参数使用在程序中,就能实现仿真参数的控制。 7.仿真参数控制参数控件例如:选择仿真时长用滑动条设置仿真时长,对应变量名terminate-time添加全局变量ticks修改go例程,随着仿真修改ticks当ticks=terminate-time时停止例如:选择仿真时长用滑动条设置仿真时长,对应变量名termi代码globals[ticks];;声明全局变量ticks…togo

ifticks>=terminate-time[stop];;判断是否应停止move-turtleseat-grassreproducecheck-deathregrow-grassdo-plots

setticksticks+1;;时钟推进end代码globals[ticks];;声明全局五、建模技术1.访问邻域原语Neighbors,Moore邻域neighbors4,vonNeumann邻域<agentset>in-radius<number><agentset>at-points<list>五、建模技术1.访问邻域原语2.主体交互T-P交互turtle能够直接访问所在之处的patch,对该patch的属性进行读写askturtles[setpcolorblue]turtle还可以利用空间相关操作获取所需的patches,然后对这些patches的属性进行读写askturtles[setpcolor-ofpatch-at10blue] 2.主体交互T-P交互patch可以通过一些操作获取相关的turtle例如turtles-here就返回当前patch处的turtle集合。也可以通过空间相关操作获取相应patch上的turtles。例如”turtlesatdxdy”返回与当前patch相对距离(dx,dy)处的turtles集合。patch可以通过一些操作获取相关的turtleT-T交互实现T-T交互的第一步是得到目标turtle的句柄,然后进行操作。获取目标turtle句柄的常用方式有三种:随机选取、根据特定条件、空间相关。随机选取是指在特定agent集合中以随机方式选取一个或n个agent。选取一个agent的原语为one-of例如“setcolor-ofone-ofturtlesred”在所有turtles中随机选择一个turtle,将其颜色设为红色。T-T交互实现T-T交互的第一步是得到目标turtle的句柄获得目标agent或agentset的第二种方式是根据特定条件。方法是使用with原语,语法为agentsetwith[condition],返回满足条件condition的agent集合。例如“turtleswith[color=red]”返回红色的turtle集合;获得目标agent或agentset的第二种方式是根据特定条获取目标agent或agent集合的第三种方式是运用空间相关操作。比较直接的一种是获取当前patch上的turtle集合,原语有turtles-here和other-turtle

温馨提示

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

评论

0/150

提交评论