Netlogo建模基础知识讲解

合集下载

基于主体建模及Netlogo软件介绍

基于主体建模及Netlogo软件介绍
生物界的现象中吸取有益启示,具体表现为遗传算法(Genetic Algorithm)
复杂性科学
• 没有明确的定义 • 大体而言,有关研究复杂系统的理论、方法、工具等等的学问 • 混沌(chaos)、分形(fractal)(自相似)、熵(entropy) 、
复杂网络,ABM等
一、引言
计算社会科学(Computational Social Science) 计算社会科学是一种新兴的交叉学科。关注将 社会学理论转换为计算的结构。目的在于: 在直接考察某些人类行为比较困难或存在伦 理原因在无法直接考察的情况下,进行研究 和实验; 发展可以应用于从人工到自然世界的新理论 和视野。
社会仿真是构建计算机程序对社会现象的行为 进行模拟
为什么要仿真?
• 语言描述 不精确 • 数学描述 严格,但是异质的,非线性模型很难
分析 • 计算机模型 严格,可以建立多水平,异质的
模型,可以实验
一、引言
仿真作为一个范式 • 过程分析 不仅仅是一个时点 • 抽象 非描述性的 • 宏观和微观 非原子化的 • 实验性的 非观察性的
二、基于主体建模(ABM)
元胞自动机(CA) 基于主体建模(ABM)
二、基于主体建模(ABM)
元胞自动机(CA)
规则
• 每个元胞可以有一个或两个(几个)状态,如用
颜色表示
• 每个元胞每个时步的状态由它前一步的状态和直接 邻居的状态来决定
二、基于主体建模(ABM)
元胞和格子
二、基于主体建模(ABM)
一、引言
复杂系统与复杂性科学
系统科学发展经历:
• 从元素数量较少到元素数量较多 • 较单纯的系统过程到系统自身的演化与发展 • 元素具有主动性,能与外界交流并根据经验改变自

netlogo编程语言

netlogo编程语言

netlogo编程语言
NetLogo是一种教育和研究用途的编程语言和集成开发环境。

它主要用于建模和模拟复杂系统,特别是用于代理基础建模。

NetLogo的语法基于Logo语言,它包括了一些特定于代理建模的功能,例如对空间建模的支持。

NetLogo的语言特点包括了易学易用,适合教育和研究使用。

它使用了简单的命令和语法,使得用户可以快速上手。

同时,它也
支持高级编程概念,如条件语句、循环和函数,使得用户可以编写
复杂的模型和模拟。

NetLogo的集成开发环境提供了一个直观的界面,用户可以通
过拖放方式创建代理、设置参数和运行模拟。

它还包括了丰富的可
视化工具,用户可以实时观察模拟结果并进行分析。

除此之外,NetLogo还支持并行计算,可以利用多核处理器来
加速模拟过程。

这使得NetLogo在处理大规模复杂系统时表现出色。

总的来说,NetLogo是一种功能丰富、易学易用的编程语言,
适合用于教育和研究领域,特别是在代理基础建模和复杂系统模拟
方面有着广泛的应用。

希望这些信息能够帮助你更好地了解NetLogo编程语言。

NetLogo的建模和仿真研究报告

NetLogo的建模和仿真研究报告

四.NetLogo的建模和仿真研究报告NetLogo 是一个用来对自然和社会现象进行仿真的可编程建模环境。

我建立了一个模型用来模拟大火在森林中的传播。

其界面如下,这个模型的参数只有一个,那就是森林的覆盖率(density),也可以称为森林的密度,其结果则由燃烧比例(percent burned)决定。

我先设计了实验表格,如下。

我从40%开始记录数据的原因是,当密度小于20%时,其燃烧比例基本在0.5%左右,当密度大于20%小于40%时,其燃烧比例基本在0.5%—1.0%。

(如图)下图是我在进行实验后得到的数据表格。

下图是将其整理为图表后的折线图。

我们可以清楚的发现,40%至60%缓慢上升类似二次曲线的递增趋势,但在60%以后其上升趋势变缓且呈直线上升,在65%以后其结果均在95%以上。

因此,60%为一个转折点。

在实验时发现,每一个点都会有几个偏差较大的数据,例如59%时,有如下4个数据,59% 14.2% 59% 24.6%59% 34.1% 59% 53.1% 经过分析,我发现造成如下结果的原因主要是因为树木的分布是随机的,如果59%的树木都在一边,那么燃烧比例最高可以远远超过平均值,甚至是达到100%。

也有可能树木分布两边分散而导致燃烧无法转播到右边,正如60%时所测到的一个数据,燃烧率只有29.8%。

60% 72.6% 60% 29.8%这个模型还十分简单,因为就自然界而言,对于大火的传播有许多因素影响着,比如说气候的湿润度,如果气候干燥大火就更容易传播;风向的影响,大火的传播方向基本随风向而改变;起火的位置,此模型只是针对线性大火的传播,而现实生活中起火时都会由一个点开始传播的。

《Netlogo多主体建模入门》笔记2

《Netlogo多主体建模入门》笔记2

《Netlogo多主体建模⼊门》笔记2从⾃带的模型库开始
财富分配模型
黄⾊代表稻⾕,有的⼈消化快,有的慢,稻⾕的积累代表财富的积累,不涉及交易⾏为。

点击setup后,点击 go
红线--穷⼈;绿线-- 中产;蓝线--- 富⼈。

第⼀张图:⼈数变化
第⼆张图:直⽅图
第三张图:洛伦兹曲线,越弯代表分配越不均
第四张图:吉尼指数变化
信息⼀栏有详细的介绍
代码:有详细的注释
单⾏注释;;
多⾏注释;;;
⾃⼰写⼀个⼩球乱撞的模型
点添加,在左侧的空⽩处点击⼀下就OK
go的按钮需要选上持续执⾏
因为原点位置设置成中⼼,
所以x的最⼤坐标相当于红线标记,
所以y的最⼤坐标相当于蓝线标记。

嵌块的⼤⼩就相当于是这个“画布”的像素⼤⼩,英⽂名叫 patch
帧率⼀般调成60(为了流畅的显⽰动画)
页⾯缩放的快捷键:
有不会的函数或者保留字,那就⽤词典查,这是⼀个本地的html ⽂件。

多主体建模工具Netlogo介绍

多主体建模工具Netlogo介绍
Two types of people living in a city
Each person can
Move around within a given range Settle down if the number of same type neighbors is big enough Otherwise, keep moving
诞生规则
如果某时刻,一个空方格(白色)周围邻居中有三个活的生命(黑 色方格),那么该方格就会诞生一个新生生命(白色黑色)
死亡规则
在某时刻,对于已经占领某方格的生命体(黑色)只有当它的邻居中有2个或 者3个是活的(黑色),它才会继续存活,否则不是因为过分拥挤就是因为过 分孤独而死亡(黑色白色)
Boid模型
Pattern formation
Thomas C. Schelling
In 1960, he found the phenomenon of segregation of black and white. One day in flight, a simple game with coins came up his mind He invented this segregation model He won Nobel’s prize in 2005
A Toy Model of Urban Road Network Growth
The traffic flow is determined by the road network The network is shaped by flows in a long time Growth of urban road networks Coevolution of road network and traffic flow

Netlogo基础知识讲解

Netlogo基础知识讲解

初始化例程实现对模型初始状态的设置,生成所需的
turtles,设置其状态,以及其它工作。 仿真的执行通过例程go实现,在go例程中编写所需执行 的各种指令,完成一个仿真步的工作。 需要在Interface页中建立一个按钮与go例程相联系,该 按钮是一个永久(forever)按钮,点击后将不断重复执行 go例程,直到遇到stop指令或用户再次点击该按钮则仿 真终止。
turtle坐标不必是整数,因此turtle不一定正好位于某个patch的中心。
一个patch上也可以同时有多个turtles。 实际上对turtle而言,NetLogo的空间是连续的。
(3)仿真推进
没有明确的仿真时钟变量,也没有提供特定的事件 处理机制 仿真推进是通过不断重复执行某个例程实现的 模型中至少要有初始化例程和仿真执行例程
2.建模基本过程
NetLogo模型包括可视化部件和例程两部分,
二者具有紧密联系。 先在Interface中创建可视化控件,然后在 Procedures中实现相应的代码,通过设置控 件的属性将二者联系起来。
Interface中主要有三类部件
运行控制 参数控制 仿真显示
Procedure中的例程分为两类:
命令(command)例程
报告(reporter)例程
仿真的基本框架
初始化to setup 对所有Turtle循环 ask turtles 每一个仿 真周期to go
每个Turtle做出决策 forward 1

是否结 束?

结束

Netlogo建模基础知识讲解
14302010008 秦奕深
NetLogo简介
1.基本情况 NetLogo是一个用来对自然和社会现象进行 仿真的可编程建模环境建模仿真集成环境 由美国西北大学连接学习与计算机建模中心 (Center for Connected Learning and Computer-Based Modeling,CCL)开发。 2002年发布了1.0版本,用户手册为4.0.2版 本,最新为4.1.1版本

多主体建模工具Netlogo介绍课件

多主体建模工具Netlogo介绍课件
每一个仿 真周期to
go
对所有Turtle循环 ask turtles
每个Turtle做出决策 forward 1

是否结
束?

结束
多主体建模工具Netlogo介绍
Boid模型 在Models Library中Biology菜单下找到Flocking
多主体建模工具Netlogo介绍
手动建立Game of Life
多主体建模工具Netlogo介绍
Boid模型
多主体建模工具Netlogo介绍
每只鸟的邻域
A bird’s Neighborhood
多主体建模工具Netlogo介绍
规则1——靠近
Cohesion: steer to move toward the average position of neighbors
NetLogo是Star-Logo的最新版本 NetLogo是一个很容以上手的高级建模玩具。
多主体建模工具Netlogo介绍一个简单实例:气体模型
多主体建模工具Netlogo介绍
Step by step • 打开Netlogo界面,添加2个按钮setup 和go,注意把go上面的Forever勾上 • 选择Procedure选项卡,编写代码
Game of Life
多主体建模工具Netlogo介绍
生命• 游197戏0年,John
Conway提出了一个 有趣的计算机程序: 生命游戏 • 这是一个方格世界, 每个方格仅仅有黑、 白两种颜色
多主体建模工具Netlogo介绍
生命游戏的规则 想象一个外星空间存活者很多方格生命,如果一个方格是黑色的,那 么这里就有一个生命,如果是白色的就没有
多主体建模工具Netlogo介绍

Netlogo建模基础知识讲解

Netlogo建模基础知识讲解

05 Netlogo进阶操作
自定义绘图函数
01 02
自定义绘图函数
在Netl表, 例如折线图、柱状图、饼图等。这需要使用Netlogo的绘图库和绘图函 数,如“plot”、“histogram”等。
绘图函数使用
自定义绘图函数的使用方法与其他Netlogo函数类似,需要先定义绘图 函数,然后在模型运行过程中调用该函数进行绘图。
象。
它允许用户创建复杂的代理模型, 包括生物、经济、社会和政治系
统等。
Netlogo提供了一个可视化的编 程界面,使用拖放式编程语言, 使得建模过程更加直观和易于理
解。
Netlogo的用途
1 2
科学研究
Netlogo被广泛应用于社会科学、生物学、环境 科学等领域,用于模拟复杂系统的行为和动态。
教育
经济学与金融学
在经济学和金融学领域,Netlogo常被用于模拟市场交易、 金融风险和投资决策等。例如,股票市场模型、货币政策模 型、国际贸易模型等。
Netlogo能够帮助研究者深入理解市场运作机制和金融风险 ,为政策制定提供依据。
教育与科研
在教育和科研领域,Netlogo被广泛应用于教学和学术研究。 通过Netlogo,学生和研究者可以构建自己的模型,探究各 种问题,培养解决实际问题的能力。
Netlogo是一个强大的教学工具,用于教授复杂 系统、网络、人工智能和多代理系统等领域。
3
政策制定
Netlogo可以用于模拟政策干预的影响,帮助决 策者更好地理解复杂系统的行为和动态。
Netlogo的历史与发展
Netlogo最初由美国西北大学的Uri Wilensky于1999年开发,旨在提供一个简单易 用的建模环境。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
绘图时必须使用某个画笔,画笔默认是黑色实 线,也可以创建自定义画笔
绘制turtles数量和青草数量曲线
添加Plot控件 创建两个画笔,分别指定颜色 添加do-plots例程 修改 setup和go例程
to setup clear-all setup-patches setup-turtles do-plots end
to move-turtles ;;定义例程move-turtles
;;所有turtle执行[ ]中的命令序列
ask turtles[
right random 360 ;;右转一个角度,度数随机产生
forward 1
;;前进距离1
]
end
3.青草的模拟
为模拟青草的存在设置patches为绿色 改写setup 例程,其中调用了两个新的例程
命令(command)例程 报告(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
[setxy random-xcor random-ycor]
end
2.仿真执行例程
实现turtle随机移动 实现go例程,与forever按钮联系 go 调用move-turtles例程
增加代码: (demo2)
to go move-turtles
end
;;定义仿真执行例程go ;;调用例程move-turtles
5.监视仿真运行
监视器控件(monitor)
显示turtle数量,monitor表达式“count turtles”
主体标签
每个主体有一个变量lable
6.图形输出
在Interface中创建Plot控件,在Procedures 中编制绘图例程。
绘图概念
每个Plot控件必须指定一个唯一名,在绘图时通 过Plot名指定在哪个Plot上绘图
;;绘制初始点
to go move-turtles eat-grass reproduce check-death regrow-grass do-plots end
;;随仿真运行绘制图形
to do-plots
set-current-plot “totals” ;;选定plot控件
set-current-plot-pen “turtles” ;;选定画笔turtles
if ifelse
四、生态系统建模示例
假设要模拟一个简单的生态系统, 该系统中有一种生物以青草为食,通过吃草
获取能量、 该类生物经历成长、繁殖、死亡过程。
1. 初始化
创建生物群体,并将它们随机分布在空间中。
例程(demo1)
to setup
;;定义例程setup
clear-all
] end
修改原来的move-turtles例程,添加能量消耗指 令。
to move-turtles ask turtles [
right random 360 forward 1 set energy energy - 1 ;;移动后能量减少1 ] end
假设turtle能量小于等于0就死亡,当能量大于50就繁 殖;青草以一定的恢复率再生。由于主体行为发生了
二、NetLogo仿真框架
1. NetLogo软件
2.模型的抽象
总体:
大量的可移动主体在二维空间中交互作用,随着 时间推进,微观个体的属性不断发生变化,系统 的宏观特征也因此而变化。
从三个方面理解:
主体 空间表达 仿真推进
(1)主体(Agents)
虚拟世界由主体构成,主体能够接受命令, 进行活动,所有主体的行为并行发生。
2.建模基本过程
NetLogo模型包括可视化部件和例程两部分, 二者具有紧密联系。
先在Interface中创建可视化控件,然后在 Procedures中实现相应的代码,通过设置控 件的属性将二者联系起来。
Interface中主要有三类部件
运行控制 参数控制 仿真显示
Procedure中的例程分为两类:
set turtles-own random set age ( 22 + random 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 ]
to go move-turtles eat-grass end
;;turtle随机移动,消耗能量 ;;吃草获取能量
定义eat-grass
turtle吃草获取能量
修改patch颜色表示草的有无
to eat-grass ;;如果turtle所在patch颜色为绿色,表示有草,则吃草, ;;令该patch颜色变为黑色,表示已无草,然后自身能量增加10 ask turtles[ if pcolor = green[ set pcolor black set energy (energy+10) ]
将这些全局变量作为参数使用在程序中,就能实 现仿真参数的控制。
例如:选择仿真时长
用滑动条设置仿真时长,对应变量名 terminate-time
改变,需重新定义go例程,
to go move-turtles eat-grass reproduce check-death regrow-grass end
;;移动 ;;吃草 ;;繁殖 ;;死亡 ;;青草再生
to reproduce
ask turtles[
if energy > 50[
;;如果能量大于50则繁殖
每个turtle也有坐标(xcor,ycor)
turtle坐标不必是整数,因此turtle不一定正好位于某个patch的中心。
一个patch上也可以同时有多个turtles。 实际上对turtle而言,NetLogo的空间是连续的。
(3)仿真推进
没有明确的仿真时钟变量,也没有提供特定的事件 处理机制
Netlogo建模基础知识讲解
14302010008 秦奕深
NetLogo简介
1.基本情况 NetLogo是一个用来对自然和社会现象进行
仿真的可编程建模环境建模仿真集成环境
由美国西北大学连接学习与计算机建模中心 (Center for Connected Learning and Computer-Based Modeling,CCL)开发。
ask patches[set pcolor green]
end
to setup-turtles create-turtles 100 ask turtles[setxy random-xcor random-ycor] end
4.主体行为
现在增加一些行为,假设turtle以青草为食,通过吃 草获得能量,移动时要消耗能量。
patch代表青草,绿色表示有,黑色表示无。 为实现这样的模型,需要重新定义turtles的属性和
行为,然后重写go例程。
首先给turtle增加变量energy以存储当前能量值, 另外添加吃草获取能量的例程, 还要修改移动例程以反映能量消耗。
自定义turtle变量,修改go
turtles-own[energy] ;;声明turtle变量energy
observer是一个全局主体,它观察着由turtles和 patches构成的世界,能够执行指令获取世界全部或 部分的状态,或实现对世界的控制。
虚拟世界
Observer Turtle Patch
(2)空间表达
每个patch有二维坐标(pxcor,pycor)坐标值为整数。 默认情况下,二维世界的水平、垂直坐标范围为(-17,17)
实验管理
BahaviorSpace,自动管理仿真运行,并记录结果。
系统动力学仿真 参与式仿真
HubNet
模型库
3.软件特色
完全可编程 简单语言结构 是LOGO语言的扩展,支持智能体和网络结
构 可以定义无限个智能体和变量 多种内置命令帮助使用 支持整型和双精度型浮点数计算 跨平台、可复用的应用。
setup-turtles和setup-patches,分别设置 turtle和patch的初始状态
to setup clear-all setup-patches setup-turtles
end
demo3
;;调用例程setup-patches ;;调用例程setup-turtles
to setup-patches ;;命令所有patches执行指令set pcolor green ;;该指令将patch颜色设置为绿色
2002年发布了1.0版本,用户手册为4.0.2版 本,最新为4.1.1版本
2. 主要功能
多主体建模(重点)
多个移动Agent分布在二维空间中,每个Agent自主行动,所有主体 并行异步更新,整个系统随着时间推进而动态变化。
相关文档
最新文档