多智能体NetLogo仿真平台

上传人:灯火****19 文档编号:126457900 上传时间:2020-03-25 格式:PPT 页数:44 大小:409.51KB
返回 下载 相关 举报
多智能体NetLogo仿真平台_第1页
第1页 / 共44页
多智能体NetLogo仿真平台_第2页
第2页 / 共44页
多智能体NetLogo仿真平台_第3页
第3页 / 共44页
多智能体NetLogo仿真平台_第4页
第4页 / 共44页
多智能体NetLogo仿真平台_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《多智能体NetLogo仿真平台》由会员分享,可在线阅读,更多相关《多智能体NetLogo仿真平台(44页珍藏版)》请在金锄头文库上搜索。

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

2、式仿真 nHubNet n模型库 可直接使用 也可修改 二 NetLogo仿真框架 1 NetLogo软件 界面 手册P77 模型部分 三个TabPage 命令行窗口 2 模型的抽象 n总体 n大量的可移动主体在二维空间中交互作用 随着时间推进 微观个体的属性不断发生变 化 系统的宏观特征也因此而变化 n从三个方面理解 n主体 n空间表达 n仿真推进 1 主体 n虚拟世界由主体构成 主体能够接受命 令 进行活动 所有主体的行为并行发 生 nNetLogo中共有三类主体 nturtles 小海龟 npatches 瓦片 nobserver 观察者 n在4 0中将Links作为一类主体 主体类型

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

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

5、 n初始化例程实现对模型初始状态的设置 生成所需 的turtles 设置其状态 以及其它工作 n仿真的执行通过例程go实现 在go例程中编写所 需执行的各种指令 完成一个仿真步的工作 n需要在Interface页中建立一个按钮与go例程相联 系 该按钮是一个永久 forever 按钮 点击后将 不断重复执行go例程 直到遇到stop指令或用户再 次点击该按钮则仿真终止 2 建模基本过程 nNetLogo模型包括可视化部件和例程两 部分 二者具有紧密联系 n先在Interface中创建可视化控件 然后 在Procedures中实现相应的代码 通过 设置控件的属性将二者联系起来 nInterfac

6、e中主要有三类部件 n运行控制 n参数控制 n仿真显示 nProcedure中的例程分为两类 n命令 command 例程 n报告 reporter 例程 基本过程 n初始化 n确定活动顺序 n定义主体属性与行为 n仿真过程监视 n图形输出 n仿真参数控制 三 生态系统建模示例 n假设要模拟一个简单的生态系统 n该系统中有一种生物以青草为食 通过 吃草获取能量 n该类生物经历成长 繁殖 死亡过程 1 初始化 n创建生物群体 并将它们随机分布在空 间中 n例程 demo1 to setup 定义例程setup clear all 设置整个世界为初始状态 创建100个turtles 创建后各tur

7、tle默认坐标是 0 0 create turtles 100 命令所有turtle执行语句setxy random 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

8、定义例程move turtles 所有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 turtles 调用例程setup turtles end to se

9、tup patches 命令所有patches执行指令set pcolor green 该指令将patch颜色设置为绿 色 ask patches set pcolor green end to setup turtles create turtles 100 ask turtles setxy random xcor random ycor end 4 主体行为 n现在增加一些行为 假设turtle以青草为食 通过吃草获得能量 移动时要消耗能量 npatch代表青草 绿色表示有 黑色表示无 n为实现这样的模型 需要重新定义turtles的属 性和行为 然后重写go例程 n首先给turtle增

10、加变量energy以存储当前能量值 n另外添加吃草获取能量的例程 n还要修改移动例程以反映能量消耗 自定义turtle变量 修改go turtles own energy 声明turtle变量energy to go move turtles turtle随机移动 消耗能量 eat grass 吃草获取能量 end 定义eatgrass nturtle吃草获取能量 n修改patch颜色表示草的有无 to eat grass 如果turtle所在patch颜色为绿 色 表示有草 则吃草 令该patch颜色变为 黑色 表示已无草 然后自身能量增加10 ask turtles if pcolor g

11、reen set pcolor black set energy energy 10 end 修改原来的move turtles例程 添加能量 消耗指令 to 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

12、 grass 青草再生 end 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 gras

13、s reproduce 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还可以利用空间相关操作获取所需的 patches 然后对这些patches的属性进行 读写 na

14、sk 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 相对距离 dx dy 处的turtles集合 T T交互 n实现T T交互的第一步是得到目标turtle的句 柄 然后进行操作 n获取目标turtle句柄的常用方式有三种 随机 选取 根据特定条件 空间相关 n随机选取是指在特定agent集合中以随机方式 选

15、取一个或n个agent 选取一个agent的原 语为one of n例如 set color of one of turtles red 在所有 turtles中随机选择一个turtle 将其颜色设为红色 n获得目标agent或agentset的第二种方 式是根据特定条件 n方法是使用with原语 语法为agentset with condition 返回满足条件 condition的agent集合 n例如 turtles with color red 返回红 色的turtle集合 n获取目标agent或agent集合的第三种方式是 运用空间相关操作 n比较直接的一种是获取当前patch上的t

16、urtle 集合 原语有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 agentset等 n例如 turtles at 1 0 返回右侧紧邻patch上的所有 turtle turtles on patch ahead 返回前方 patch上的所有turtle 3 持久关系的建立 n基本方法是在个体中相互保持对方的引用 这 样可以随时对对方进行操作 n例如在个体之间建立简单的伙伴关系 n假设还没有找到伙伴的个体随机移动 直到与另一 个尚没有伙伴的个体建立伙伴关系 一旦建立伙伴 关系后将长期保持 n为实现这一模型 首先为turtle增加变量partner 用于保持对伙伴的引用 然后在移动时从相遇的一 些无伙伴的turtle中选择一个 相互建立伙伴关系 4 多类异质主体 nNetLo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号