




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多主体仿真平台NetLogo 一 NetLogo简介 1 基本情况NetLogo是一个多主体建模仿真集成环境由美国西北大学连接学习与计算机建模中心 CenterforConnectedLearningandComputer BasedModeling CCL 开发 2 主要功能 多主体建模多个移动Agent分布在二维空间中 每个Agent自主行动 所有主体并行异步更新 整个系统随着时间推进而动态变化 运行控制仿真输出提供了多种手段实现仿真运行监视和结果输出实验管理BahaviorSpace 自动管理仿真运行 并记录结果 系统动力学仿真参与式仿真HubNet模型库 可直接使用 也可修改 二 NetLogo仿真框架 1 NetLogo软件界面 手册P77 模型部分三个TabPage命令行窗口 2 模型的抽象 总体 大量的可移动主体在二维空间中交互作用 随着时间推进 微观个体的属性不断发生变化 系统的宏观特征也因此而变化 从三个方面理解 主体空间表达仿真推进 1 主体 虚拟世界由主体构成 主体能够接受命令 进行活动 所有主体的行为并行发生 NetLogo中共有三类主体 turtles 小海龟 patches 瓦片 observer 观察者 在4 0中将Links作为一类主体 主体类型 turtles指能够在世界中移动的主体 世界是二维的 划分为由patches组成的网格 每个patch占据一个矩形小块 patch不能移动patch也是主体patch和turtle一样可以有自己的属性和行为observer是一个全局主体 它观察着由turtles和patches构成的世界 能够执行指令获取世界全部或部分的状态 或实现对世界的控制 虚拟世界 2 空间表达 每个patch有二维坐标 pxcor pycor 坐标值为整数 默认情况下 二维世界的水平 垂直坐标范围为 17 17 每个turtle也有坐标 xcor ycor turtle坐标不必是整数 因此turtle不一定正好位于某个patch的中心 一个patch上也可以同时有多个turtles 实际上对turtle而言 NetLogo的空间是连续的 拓扑结构 根据在水平和垂直方向边界是否进行回绕 形成四种结构环面 torus 默认结构盒子 box 垂直柱面 verticalcylinder 水平柱面 horizontalcylinder 回绕影响主体移动时是否穿越边界软件操作 在View上点击Edit 3 仿真推进 没有明确的仿真时钟变量 也没有提供特定的事件处理机制仿真推进是通过不断重复执行某个例程实现的模型中至少要有初始化例程和仿真执行例程初始化例程实现对模型初始状态的设置 生成所需的turtles 设置其状态 以及其它工作 仿真的执行通过例程go实现 在go例程中编写所需执行的各种指令 完成一个仿真步的工作 需要在Interface页中建立一个按钮与go例程相联系 该按钮是一个永久 forever 按钮 点击后将不断重复执行go例程 直到遇到stop指令或用户再次点击该按钮则仿真终止 2 建模基本过程 NetLogo模型包括可视化部件和例程两部分 二者具有紧密联系 先在Interface中创建可视化控件 然后在Procedures中实现相应的代码 通过设置控件的属性将二者联系起来 Interface中主要有三类部件运行控制参数控制仿真显示Procedure中的例程分为两类 命令 command 例程报告 reporter 例程 基本过程 初始化确定活动顺序定义主体属性与行为仿真过程监视图形输出仿真参数控制 三 生态系统建模示例 假设要模拟一个简单的生态系统 该系统中有一种生物以青草为食 通过吃草获取能量 该类生物经历成长 繁殖 死亡过程 1 初始化 创建生物群体 并将它们随机分布在空间中 例程 demo1 2 仿真执行例程 实现turtle随机移动实现go例程 与forever按钮联系go调用move turtles例程 增加代码 demo2 3 青草的模拟 为模拟青草的存在设置patches为绿色改写setup例程 其中调用了两个新的例程setup turtles和setup patches 分别设置turtle和patch的初始状态 demo3 4 主体行为 现在增加一些行为 假设turtle以青草为食 通过吃草获得能量 移动时要消耗能量 patch代表青草 绿色表示有 黑色表示无 为实现这样的模型 需要重新定义turtles的属性和行为 然后重写go例程 首先给turtle增加变量energy以存储当前能量值 另外添加吃草获取能量的例程 还要修改移动例程以反映能量消耗 自定义turtle变量 修改go 定义eatgrass turtle吃草获取能量修改patch颜色表示草的有无 修改原来的move turtles例程 添加能量消耗指令 假设turtle能量小于等于0就死亡 当能量大于50就繁殖 青草以一定的恢复率再生 由于主体行为发生了改变 需重新定义go例程 5 监视仿真运行 监视器控件 monitor 显示turtle数量 monitor表达式 countturtles 主体标签每个主体有一个变量lable 6 图形输出 在Interface中创建Plot控件 在Procedures中编制绘图例程 绘图概念每个Plot控件必须指定一个唯一名 在绘图时通过Plot名指定在哪个Plot上绘图绘图时必须使用某个画笔 画笔默认是黑色实线 也可以创建自定义画笔 绘制turtles数量和青草数量曲线 添加Plot控件创建两个画笔 分别指定颜色添加do plots例程修改setup和go例程 7 仿真参数控制 参数控件开关 switch 滑动条 slider 选择器 chooser 这些控件都对应一个全局变量 在Procedures中将这些全局变量作为参数使用在程序中 就能实现仿真参数的控制 例如 选择仿真时长 用滑动条设置仿真时长 对应变量名terminate time添加全局变量ticks修改go例程 随着仿真修改ticks当ticks terminate time时停止 代码 四 建模技术 1 访问邻域原语Neighbors Moore邻域neighbors4 vonNeumann邻域in radiusat points演示 2 主体交互 T P交互turtle能够直接访问所在之处的patch 对该patch的属性进行读写askturtles setpcolorblue turtle还可以利用空间相关操作获取所需的patches 然后对这些patches的属性进行读写askturtles setpcolor ofpatch at10blue patch可以通过一些操作获取相关的turtle例如turtles here就返回当前patch处的turtle集合 也可以通过空间相关操作获取相应patch上的turtles 例如 turtlesatdxdy 返回与当前patch相对距离 dx dy 处的turtles集合 T T交互 实现T T交互的第一步是得到目标turtle的句柄 然后进行操作 获取目标turtle句柄的常用方式有三种 随机选取 根据特定条件 空间相关 随机选取是指在特定agent集合中以随机方式选取一个或n个agent 选取一个agent的原语为one of例如 setcolor ofone ofturtlesred 在所有turtles中随机选择一个turtle 将其颜色设为红色 获得目标agent或agentset的第二种方式是根据特定条件 方法是使用with原语 语法为agentsetwith condition 返回满足条件condition的agent集合 例如 turtleswith color red 返回红色的turtle集合 获取目标agent或agent集合的第三种方式是运用空间相关操作 比较直接的一种是获取当前patch上的turtle集合 原语有turtles here和other turtles here 二者的区别仅在于是否包含调用者自身 例如 askturtle0 askother turtles here fd10 表示ID 0的turtle令处于同一patch上的其他turtle前进10 另一种方式是获取特定patch上的所有turtles 原语有 atdxdy onagentset等 例如 turtles at10 返回右侧紧邻patch上的所有turtle turtles onpatch ahead 返回前方patch上的所有turtle 3 持久关系的建立 基本方法是在个体中相互保持对方的引用 这样可以随时对对方进行操作 例如在个体之间建立简单的伙伴关系 假设还没有找到伙伴的个体随机移动 直到与另一个尚没有伙伴的个体建立伙伴关系 一旦建立伙伴关系后将长期保持 为实现这一模型 首先为turtle增加变量partner 用于保持对伙伴的引用 然后在移动时从相遇的一些无伙伴的turtle中选择一个 相互建立伙伴关系 4 多类异质主体 NetLogo可以定义不同类别 称为breeds 的turtles 各类turtle可以拥有特有的属性和例程 定义关键词为breed 例如 breed wolveswolf breed sheepa sheep 一旦定义了一类turtle 系统自动创建该类所有turtle的集合 一些相关的原语也马上可以使用了 例如对于sheep类就有create sheep hatch sheep is a sheep 等 也可以指定该类具有的变量 例如对于sheep sheep own grabbed 就为sheep增加了一个变量 五 NetLogo高级特性 1 实验管理实验管理工具BehaviorSpace 能够自动对参数空间进行扫描 也能进行较简单的统计计算 记录并输出仿真结果 2 参与式仿真 参与式仿真工具HubNet 使得人们可以参与到仿真过程之中 每个参与者控制一个仿真主体 与计算机一起完成仿真实验 进行参与式仿真的基本过程是 首先在一台计算机上运行HubNet模型 作为服务器 建立HubNet活动 模型启动时指定HubNet会话 session 名作为该活动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 疫情杭州房产合同(标准版)
- 企业财务预算编制及分析方法
- 个人购房贷款合同(标准版)
- 真空设备装配调试工中秋节后复工安全考核试卷含答案
- 大型商超仓储管理流程手册
- 教师资格证考试重点知识点汇编笔记
- 棘皮类繁育工中秋节后复工安全考核试卷含答案
- 钻孔机司机中秋节后复工安全考核试卷含答案
- 耐蚀喷涂工中秋节后复工安全考核试卷含答案
- 水供应输排工中秋节后复工安全考核试卷含答案
- 2025-2026学年人教鄂教版(2024)小学科学三年级上册(全册)教学设计(附目录P137)
- 落地式钢管脚手架验收记录表
- GA 1814.2-2023铁路系统反恐怖防范要求第2部分:旅客列车
- 个人养老保险重复缴费退费申请表
- 大气污染控制工程课程设计 车间除尘系统设计说明书1
- 全国行政区域身份证代码表(EXCEL版)
- YY 9706.240-2021医用电气设备第2-40部分:肌电及诱发反应设备的基本安全和基本性能专用要求
- JJF 1059.2-2012用蒙特卡洛法评定测量不确定度
- GA/T 1788.3-2021公安视频图像信息系统安全技术要求第3部分:安全交互
- 省级公开课(一等奖)雨巷-戴望舒课件
- 反不正当竞争法-课件
评论
0/150
提交评论