版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Netlogo建模基础知识讲解秦奕深,NetLogo简介,1.基本情况 NetLogo是一个用来对自然和社会现象进行仿真的可编程建模环境建模仿真集成环境 由美国西北大学连接学习与计算机建模中心(Center for Connected Learning and Computer-Based Modeling,CCL)开发。 2002年发布了1.0版本,用户手册为4.0.2版本,最新为4.1.1版本,2. 主要功能,多主体建模(重点) 多个移动Agent分布在二维空间中,每个Agent自主行动,所有主体并行异步更新,整个系统随着时间推进而动态变化。 运行控制 仿真输出
2、提供了多种手段实现仿真运行监视和结果输出 实验管理 BahaviorSpace,自动管理仿真运行,并记录结果。 系统动力学仿真 参与式仿真 HubNet 模型库,3.软件特色,完全可编程 简单语言结构 是LOGO语言的扩展,支持智能体和网络结构 可以定义无限个智能体和变量 多种内置命令帮助使用 支持整型和双精度型浮点数计算 跨平台、可复用的应用。,二、NetLogo仿真框架,1. NetLogo软件,2.模型的抽象,总体: 大量的可移动主体在二维空间中交互作用,随着时间推进,微观个体的属性不断发生变化,系统的宏观特征也因此而变化。 从三个方面理解: 主体 空间表达 仿真推进,(1)主体(Age
3、nts),虚拟世界由主体构成,主体能够接受命令,进行活动,所有主体的行为并行发生。 NetLogo中共有三类主体, turtles(海龟) patches(瓦片) observer(观察者),主体类型,turtles指能够在世界中移动的主体。 世界是二维的,划分为由patches组成的网格,每个patch占据一个矩形小块。 patch不能移动 patch也是主体 patch和turtle一样可以有自己的属性和行为 observer是一个全局主体,它观察着由turtles和patches构成的世界,能够执行指令获取世界全部或部分的状态,或实现对世界的控制。,虚拟世界,(2)空间表达,每个patc
4、h有二维坐标(pxcor,pycor)坐标值为整数。 默认情况下,二维世界的水平、垂直坐标范围为(-17,17) 每个turtle也有坐标(xcor,ycor) turtle坐标不必是整数,因此turtle不一定正好位于某个patch的中心。 一个patch上也可以同时有多个turtles。 实际上对turtle而言,NetLogo的空间是连续的。,(3)仿真推进,没有明确的仿真时钟变量,也没有提供特定的事件处理机制 仿真推进是通过不断重复执行某个例程实现的 模型中至少要有初始化例程和仿真执行例程 初始化例程实现对模型初始状态的设置,生成所需的turtles,设置其状态,以及其它工作。 仿真的
5、执行通过例程go实现,在go例程中编写所需执行的各种指令,完成一个仿真步的工作。 需要在Interface页中建立一个按钮与go例程相联系,该按钮是一个永久(forever)按钮,点击后将不断重复执行go例程,直到遇到stop指令或用户再次点击该按钮则仿真终止。,2.建模基本过程,NetLogo模型包括可视化部件和例程两部分,二者具有紧密联系。 先在Interface中创建可视化控件,然后在Procedures中实现相应的代码,通过设置控件的属性将二者联系起来。,Interface中主要有三类部件 运行控制 参数控制 仿真显示 Procedure中的例程分为两类: 命令(command)例程
6、报告(reporter)例程,仿真的基本框架,初始化to setup,每一个仿真周期to go,是否结束?,结束,对所有Turtle循环 ask turtles,每个Turtle做出决策forward 1,是,否,三、编程指南,breed turtles-own globals to setup end to go end ask turtles set pcolor white set-default-shape turtles person setxy random-xcor random-ycor set turtles-own random set age ( 22 + random
7、53 ) set age ( age + 1 ) set house 0 clear-all(ca) forward(fd) 1 create-turles 100 sprout-breeds number sprout number hatch number hatch-breeds number ask one-of men set breed if ifelse,四、生态系统建模示例,假设要模拟一个简单的生态系统, 该系统中有一种生物以青草为食,通过吃草获取能量、 该类生物经历成长、繁殖、死亡过程。,1. 初始化,创建生物群体,并将它们随机分布在空间中。 例程(demo1),2.仿真执行
8、例程,实现turtle随机移动 实现go例程,与forever按钮联系 go 调用move-turtles例程,增加代码: (demo2),3.青草的模拟,为模拟青草的存在设置patches为绿色 改写setup 例程,其中调用了两个新的例程setup-turtles和setup-patches,分别设置turtle和patch的初始状态,demo3,4.主体行为,现在增加一些行为,假设turtle以青草为食,通过吃草获得能量,移动时要消耗能量。 patch代表青草,绿色表示有,黑色表示无。 为实现这样的模型,需要重新定义turtles的属性和行为,然后重写go例程。 首先给turtle增加变
9、量energy以存储当前能量值, 另外添加吃草获取能量的例程, 还要修改移动例程以反映能量消耗。,自定义turtle变量,修改go,定义eat-grass,turtle吃草获取能量 修改patch颜色表示草的有无,修改原来的move-turtles例程,添加能量消耗指令。,假设turtle能量小于等于0就死亡,当能量大于50就繁殖;青草以一定的恢复率再生。由于主体行为发生了改变,需重新定义go例程,,5.监视仿真运行,监视器控件(monitor) 显示turtle数量,monitor表达式“count turtles” 主体标签 每个主体有一个变量lable,6.图形输出,在Interface
10、中创建Plot控件,在Procedures中编制绘图例程。 绘图概念 每个Plot控件必须指定一个唯一名,在绘图时通过Plot名指定在哪个Plot上绘图 绘图时必须使用某个画笔,画笔默认是黑色实线,也可以创建自定义画笔,绘制turtles数量和青草数量曲线,添加Plot控件 创建两个画笔,分别指定颜色 添加do-plots例程 修改 setup和go例程,7.仿真参数控制,参数控件 开关(switch)、滑动条(slider)、选择器(chooser) 这些控件都对应一个全局变量,在Procedures中将这些全局变量作为参数使用在程序中,就能实现仿真参数的控制。,例如:选择仿真时长,用滑动条
11、设置仿真时长,对应变量名terminate-time 添加全局变量ticks 修改go例程, 随着仿真修改ticks 当ticks=terminate-time时停止,代码,五、建模技术,1. 访问邻域原语 Neighbors ,Moore邻域 neighbors4 ,von Neumann邻域 in-radius at-points ,2.主体交互,T-P交互 turtle能够直接访问所在之处的patch,对该patch的属性进行读写 ask turtles set pcolor blue turtle还可以利用空间相关操作获取所需的patches,然后对这些patches的属性进行读写 a
12、sk turtles set pcolor-of patch-at 1 0 blue,patch可以通过一些操作获取相关的turtle 例如turtles-here就返回当前patch处的turtle集合。 也可以通过空间相关操作获取相应patch上的turtles。 例如”turtles at dx dy”返回与当前patch相对距离(dx,dy)处的turtles集合。,T-T交互,实现T-T交互的第一步是得到目标turtle的句柄,然后进行操作。 获取目标turtle句柄的常用方式有三种:随机选取、根据特定条件、空间相关。 随机选取是指在特定agent集合中以随机方式选取一个或n个age
13、nt。选取一个agent的原语为one-of 例如“set color-of one-of turtles red”在所有turtles中随机选择一个turtle,将其颜色设为红色。,获得目标agent或agentset的第二种方式是根据特定条件。 方法是使用with原语,语法为agentset with condition,返回满足条件condition的agent集合。 例如“turtles with color = red”返回红色的turtle集合;,获取目标agent或agent集合的第三种方式是运用空间相关操作。 比较直接的一种是获取当前patch上的turtle集合,原语有tur
14、tles-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等。 例如“turtles-at 1 0”返回右侧紧邻patch上的所有turtle,“turtles-on patch-ahead”返回前方patch上的所有turtle。,3.多类异质主体,NetLogo可以定义不同类别(称为breeds)的turtles,各类turtle可以拥有特有的属性和例程。 定义关键词为breed,例如: breed wolves wolf breed sheep a-sheep 一旦定义了一类turtle,系统自动创建该类所有turtle的集合,一些相关的原语也马上可以使用了, 例如对于sheep类就有create-sheep、hatch-sheep、is-a-sheep?等。 也可以指定该类具有的变量,例如对于shee
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中粮集团农产品部的农产品供应链优化研究
- 酒店餐饮部经理面试要点参考
- 环境监测技术应用与发展趋势分析
- 广告创意与执行策略的策划者应聘技巧
- 机构研究报告-现制饮品行业市场前景及投资研究报告:蜜雪冰城招股说明书小门店大玩家平价下沉市场茶饮龙头
- 时尚产业资深设计师的设计思路与创作安排
- 电信行业技术专家面试要点解析
- 空调滤网话术
- 字节跳动职业发展前景
- 政府机关行政主管面试常见问题
- 学前教育政策与法规考试试题(含答案)
- 2025年江西信息应用职业技术学院单招综合素质考试试题及答案解析
- 话剧《日出》剧本
- 亳州市招聘警务辅助人员考试真题及答案
- 寿春中学师德师风考核制度
- 2026年春青岛版(五四制)(新教材)小学科学二年级第二学期教学计划及进度表
- 浙江省嘉兴市2025-2026学年度第一学期期末测试高一化学试题 (含答案)
- 2026年春期人教版二年级下册数学全册教案(核心素养教案)
- 2026国考行测真题及其答案
- 2026生产安全事故应急预案范文(汇编)
- 2026年佛山市高三语文一模作文题目解析及范文:以提升“稳定”对抗外力压迫
评论
0/150
提交评论