netlogo笔记(3):摘蘑菇行为模拟
目录
摘蘑菇行为模拟
to setup:创造一个有蘑菇的森林
to go:找蘑菇的两种行为路线
用行为空间找到最佳参数组合
摘蘑菇行为模拟
to setup:创造一个有蘑菇的森林
首先,需要创造一个有蘑菇的森林。思路为:
1.用瓦片颜色指示森林(绿)和蘑菇(红);
2.随机指定5个瓦片变成红色,再在其周围随机指定10个瓦片变成红色,指示一片蘑菇;
3.创造2个小蓝人,为了后续完善他们找蘑菇的行为路径,设定turtles新的属性为memory,初始值设为21(为什么是21后文再讲)。
具体代码如下:
turtles-own [memory]to set-upclear-allask patches[set pcolor green]ask n-of 5 patches[set pcolor redask n-of 10 patches in-radius 5[set pcolor red]]crt 2[set size 5set shape "person"set color blueset memory 21]
reset-ticks
end
注意点:
(1).固定设置:clear-all、reset-ticks;
(2).memory为新属性,需要在最开始进行声明;
(3).n-of+数量+主体名是netlogo的内置命令,代表随机选择指定数量的主体;
(4).in-radius+距离是netlogo的内置命令,代表在指定距离的半径范围内。
(5).ask n-of 5 patches后面是一串连续的命令,用方括号连在一起。方括号中间的方括号是对n-of 10 patches in-radius 5发出的命令,也需要用方括号括起来。
setup后的世界如下:
to go:找蘑菇的两种行为路线
要模拟小蓝人找蘑菇,主要考虑两种情况,对应两种行为路径:
1.没找到蘑菇:小蓝人小角度左右环顾着找;
2.发现了蘑菇:一旦发现了一朵蘑菇,小蓝人会在这朵蘑菇周围进行大角度的搜查,设定次数为20;
to goask turtles [search]wait 0.1if count patches with [pcolor = red] = 0 [stop]
tick
endto searchifelse memory > mem-len[right (random 20)][right (random 270)]fd 1ifelse pcolor = red[set memory memory = 0set pcolor = yellow][set memory memory + 1]
tick
end
注意点:
(1)为了避免出错,使用了嵌套命令。在go命令中嵌套了search命令;
(2)为了使小蓝人的行动更容易观察,加上了wait 0.1;
(3)条件命令ifelse后加条件,如果满足,则执行前一个方括号的命令;如果不满足,则执行后一个方括号的命令。
(4)可以设定mem-len为20,初始情况为memory=21>20,会进行小范围搜寻;一旦找到蘑菇,该patch会变黄,memory会清零,memory<20,小蓝人会在找到的蘑菇周围进行大范围搜寻,搜一次,memory+1,直到memory重新>20就会恢复到没找到蘑菇时的小范围搜寻。
小蓝人找蘑菇:
用行为空间找到最佳参数组合
在这个世界中,加入了参数mem-len,mem-len取不同值时,小蓝人找完所有蘑菇所花费的时间不同。为了知道当mem-len取多少时小蓝人可以最快找完所有蘑菇,可以通过行为空间进行实验,得到最佳的参数值。设置如下:
1.选择:工具-行为空间-新建;
2.设置实验名称;
3.设置实验中变量值的改变:注意方括号和引号:变量名用引号引起来,初始值、增加值、终止值三个数字用方括号括起来,如下:
4.重复次数是指每个变量取值的条件下,重复做几次实验;
5.报告器测算运行结果,指每次运行需要报告哪些值;
之后点运行-确定,设置好实验结果的保存地址就可以等待计算机运行了。生成的结果数据如下:
这些数据可以用来进一步分析。
(2022.3.24)
netlogo笔记(3):摘蘑菇行为模拟相关推荐
- C#开发笔记之18-如何用C#模拟(传统方法)发送Post请求或Get请求?
本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#开发笔记之18-如何用C#模拟(传统方法)发送Post请求或Get请求? | .Net中文网. C#开发笔记概述 概述 HTTP ...
- 大学android移动开发笔记,基于Android的移动模拟练习系统的设计与实现
李思莉 聂芝献 摘要:该文主要论述基于Android的移动模拟练习系统的功能设计及数据设计.数据实现.该系统客户端使用基于Android的移动应用开发技术,服务器端采用JAVA WEB+MySQL技术 ...
- STM8S003xx学习笔记(1):模拟 / 数字转换器(ADC)
虽然使用STM8S003F有一年了,但是对于其中的一些知识还是不是很详尽,从今天开始对照芯片资料做一个完整的学习.这篇文章作为模拟 / 数字转换器(ADC)的学习笔记,主要是根据<STM8S参考 ...
- 学习自旋电子学的笔记01:微磁模拟软件OOMMF的教程(中文版)17.4-22章
操千曲而后晓声,观千剑而后识器.--刘勰<文心雕龙> # 前言 这是oommf软件教程<OOMMF User's Guide>的中文翻译文章,由于本人水平有限,有 ...
- 冰冰学习笔记:反向迭代器的模拟
欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正. 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬.帅哥.美女点点支 ...
- 冰冰学习笔记:list的简单模拟
欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正. 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位大佬.帅哥.美女点点支 ...
- MySQl笔记7:MySQL在线模拟平台汇总
MySQL在线模拟平台 1. http://sample.jimstone.com.cn/xsql/ 2. http://sqlfiddle.com/ 3. https://sqlbolt.com/l ...
- php条件运算符加法器,【加法笔记系列】JS 加法器模拟
JS 加法器模拟,实现 半加器 全加器 波纹进位加法器 全部代码 补码 & 减法 常规位运算 位运算 & 简单的 assert 断言 // 常规位运算 // https://devel ...
- 笔记丨元胞自动机模拟城市扩张过程
忙啊忙啊....实验数据来自翁敏老师的空间分析.我是初次接触,为了熟悉操作,参照课本进行粗浅记录,很粗糙,不具备参考价值,请各位仔细甄别. CA模型:CA(Cellular Automat)即元胞自动 ...
最新文章
- Redlock——Redis集群分布式锁
- ED/EP系列5《消费指令》
- (转)挺好的一篇介绍字节序的文章
- python如何通过以太网发送指令_用scapy在python中编写一个以太网桥
- gradient设置上下渐变_css3渐变之线性渐变linear-gradient
- 哈夫曼树的构建、编码以及带权路径长计算
- php中如何定义常量和变量的区别,php define常量定义与变量区别
- php把数据创建一个表格,PHP创建(导出Excel数据表格)
- 虚拟服务器(dmz),dmz虚拟主机(dmz主机和虚拟服务器区别)
- java eclipse profile_在 Eclipse 中集成JProfiler 进行 JAVA 项目性能分析
- iOS 健康 计步 卡路里
- 带有风的诗词_带有风字的诗句
- c++new时赋初值_智慧树知到_C/C++程序设计案例实战_作业题库答案
- Crime Management CodeForces - 107D
- close事件 vue_vue中v-on支持的事件总结
- 港科夜闻|香港科大(广州)系统枢纽署理院长李世玮教授成为首位获电子封装领域最重要荣誉大奖的中国科学家...
- Exception类
- php工作便签,便签本的正确使用方法
- 《Python 案例》平方根
- android studio便签需求介绍,Android我的便签-----SQLite的使用方法
热门文章
- 电脑电源设置下面没有亮度设置怎么办怎么调亮度
- C语言队列的两种实现
- 【详记MySql问题大全集】三、安装之后没有my.ini配置文件怎么办
- htc g12 电话自动开扬声器的解决办法
- elementUI + vue 输入框只能输入正整数 不能输入字母 e 以及+ - 号
- Vuex入门(3)—— getters,mapGetters,...mapGetters详解
- PyCharm使用Virtualenv和Conda
- 学生用计算机怎么发出声音,大学老师正在上课,电脑突然发出奇怪的声音,引起学生嘘声一片!...
- 高性能分布式缓存Redis--- 缓存原理和设计 --- 持续更新
- 企业微信SCRM系统部署_企业微信SCRM二次开发_企业微信SCRM系统独立版源码价格