Netlogo基础知识讲解
netlogo编程语言

netlogo编程语言
NetLogo是一种教育和研究用途的编程语言和集成开发环境。
它主要用于建模和模拟复杂系统,特别是用于代理基础建模。
NetLogo的语法基于Logo语言,它包括了一些特定于代理建模的功能,例如对空间建模的支持。
NetLogo的语言特点包括了易学易用,适合教育和研究使用。
它使用了简单的命令和语法,使得用户可以快速上手。
同时,它也
支持高级编程概念,如条件语句、循环和函数,使得用户可以编写
复杂的模型和模拟。
NetLogo的集成开发环境提供了一个直观的界面,用户可以通
过拖放方式创建代理、设置参数和运行模拟。
它还包括了丰富的可
视化工具,用户可以实时观察模拟结果并进行分析。
除此之外,NetLogo还支持并行计算,可以利用多核处理器来
加速模拟过程。
这使得NetLogo在处理大规模复杂系统时表现出色。
总的来说,NetLogo是一种功能丰富、易学易用的编程语言,
适合用于教育和研究领域,特别是在代理基础建模和复杂系统模拟
方面有着广泛的应用。
希望这些信息能够帮助你更好地了解NetLogo编程语言。
《Netlogo多主体建模入门》笔记2

《Netlogo多主体建模⼊门》笔记2从⾃带的模型库开始
财富分配模型
黄⾊代表稻⾕,有的⼈消化快,有的慢,稻⾕的积累代表财富的积累,不涉及交易⾏为。
点击setup后,点击 go
红线--穷⼈;绿线-- 中产;蓝线--- 富⼈。
第⼀张图:⼈数变化
第⼆张图:直⽅图
第三张图:洛伦兹曲线,越弯代表分配越不均
第四张图:吉尼指数变化
信息⼀栏有详细的介绍
代码:有详细的注释
单⾏注释;;
多⾏注释;;;
⾃⼰写⼀个⼩球乱撞的模型
点添加,在左侧的空⽩处点击⼀下就OK
go的按钮需要选上持续执⾏
因为原点位置设置成中⼼,
所以x的最⼤坐标相当于红线标记,
所以y的最⼤坐标相当于蓝线标记。
嵌块的⼤⼩就相当于是这个“画布”的像素⼤⼩,英⽂名叫 patch
帧率⼀般调成60(为了流畅的显⽰动画)
页⾯缩放的快捷键:
有不会的函数或者保留字,那就⽤词典查,这是⼀个本地的html ⽂件。
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介绍课件

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基础知识讲解

2. 主要功能
❖ 多主体建模(重点)
多个移动Agent分布在二维空间中,每个Agent自主行动,所有主体 并行异步更新,整个系统随着时间推进而动态变化。
❖ 运行控制 ❖ 仿真输出
提供了多种手段实现仿真运行监视和结果输出
❖ 实验管理
BahaviorSpace,自动管理仿真运行,并记录结果。
❖ 系统动力学仿真 ❖ 参与式仿真
❖ if ❖ ifelse
四、生态系统建模示例
❖ 假设要模拟一个简单的生态系统, ❖ 该系统中有一种生物以青草为食,通过吃草
获取能量、 ❖ 该类生物经历成长、繁殖、死亡过程。
1. 初始化
❖ 创建生物群体,并将它们随机分布在空间中。
❖ 例程(demo1)
to setup
;;定义例程setup
clear-all
;;设置整个世界为初始状态
;;创建100个turtles,创建后各turtle默认坐标是(0,0)
create-turtles 100
;;命令所有turtle执行语句setxy random-xcor random-ycor
;;各turtle 坐标随机产生,实现turtles在空间中的随机分布
ask turtles
❖ 仿真推进是通过不断重复执行某个例程实现的 ❖ 模型中至少要有初始化例程和仿真执行例程
初始化例程实现对模型初始状态的设置,生成所需的 turtles,设置其状态,以及其它工作。
仿真的执行通过例程go实现,在go例程中编写所需执行 的各种指令,完成一个仿真步的工作。
需要在Interface页中建立一个按钮与go例程相联系,该 按钮是一个永久(forever)按钮,点击后将不断重复执行 go例程,直到遇到stop指令或用户再次点击该按钮则仿 真终止。
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年开发,旨在提供一个简单易 用的建模环境。
NetLogo模型讲解:交通模型 Traffic Grid(街区、红绿灯)

]
turtles-own 表示主体的拥有的属性,这里的主体就是车辆,表示车辆拥有的属性
pቤተ መጻሕፍቲ ባይዱtches-own
[
intersection? ;; 是不是十字交叉口
green-light-up? ;; 绿灯是不是在交叉口
my-row
;; the row of the intersection counting from the upper left corner of the
本文档由 netlogo 爱好者编,如有不足,请见谅! 模型位置 :模型库->Sample Models ->Social Science->Traffic Grid 利用 NetLogo 模拟现实当中带街区的交通流,在道路上同时拥有红绿灯。交通模拟模型在模 型库中还有好多模型,大家有需要的话可以去参考! 通过将瓦片着不同的颜色,同时设置一些属性,模拟我们现实生活中的街区,道路,红绿灯。 海龟,就是这里面可以移动的汽车。
;;找到一个空的地方初始化的时候放置车辆 to put-on-empty-road ;; turtle procedure
move-to one-of roads with [not any? turtles-on self] end
上面都是定义一些初始设置,如海龟汽车是怎么放置的,瓦片形成街区,道路和十字交叉路 口,下面就是程序运行。
原语学习: floor floor number 返回小于等于 number 的最大整数 random random number 如果 number 为正,返回大于等于 0、小于 number 的一个随机整数。 如果 number 为负,返回小于等于 0、大于 number 的一个随机整数。 如果 number 为 0,返回 0。 heading 这是一个内置海龟变量,指明海龟面向的方向,该值在[0,360)。0 是北,90 是东,等等。设 置这个变量实现海龟转动。
Netlogo基础知识讲解

四、生态系统建模示例
假设要模拟一个简单的生态系统,
该系统中有一种生物以青草为食,通过吃草
获取能量、 该类生物经历成长、繁殖、死亡过程。
1. 初始化
创建生物群体,并将它们随机分布在空间中。
例程(demo1)
to setup ;;定义例程setup clear-all ;;设置整个世界为初始状态 ;;创建100个turtles,创建后各turtle默认坐标是(0,0) create-turtles 100 ;;命令所有turtle执行语句setxy random-xcor random-ycor ;;各turtle 坐标随机产生,实现turtles在空间中的随机分布 ask turtles [setxy random-xcor random-ycor] end
to eat-grass ;;如果turtle所在patch颜色为绿色,表示有草,则吃草, ;;令该patch颜色变为黑色,表示已无草,然后自身能量增加10 ask turtles[ if pcolor = green[ set pcolor black set energy (energy+10) ] ] end
7.仿真参数控制
参数控件
开关(switch)、滑动条(slider)、选择器(chooser) 这些控件都对应一个全局变量,在Procedures中
将这些全局变量作为参数使用在程序中,就能实 现仿真参数的控制。
例如:选择仿真时长
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 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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
to setup clear-all setup-patches setup-turtles
end
demo3
;;调用例程setup-patches ;;调用例程setup-turtles
to setup-patches ;;命令所有patches执行指令set pcolor green ;;该指令将patch颜色设置为绿色
将这些全局变量作为参数使用在程序中,就能实 现仿真参数的控制。
例如:选择仿真时长
用滑动条设置仿真时长,对应变量名 terminate-time
2002年发布了1.0版本,用户手册为4.0.2版 本,最新为4.1.1版本
2. 主要功能
多主体建模(重点)
Z 多个移动Agent分布在二维空间中,每个Agent自主行动,所有主体 并行异步更新,整个系统随着时间推进而动态变化。
运行控制 仿真输出
Z 提供了多种手段实现仿真运行监视和结果输出
5.监视仿真运行
监视器控件(monitor)
Z显示turtle数量,monitor表达式“count turtles”
主体标签
Z每个主体有一个变量lable
6.图形输出
在Interface中创建Plot控件,在Procedures 中编制绘图例程。
绘图概念
Z每个Plot控件必须指定一个唯一名,在绘图时通 过Plot名指定在哪个Plot上绘图
Z命令(command)例程 Z报告(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
Hale Waihona Puke 仿真推进是通过不断重复执行某个例程实现的 模型中至少要有初始化例程和仿真执行例程
Z 初始化例程实现对模型初始状态的设置,生成所需的 turtles,设置其状态,以及其它工作。
Z 仿真的执行通过例程go实现,在go例程中编写所需执行 的各种指令,完成一个仿真步的工作。
Z 需要在Interface页中建立一个按钮与go例程相联系,该 按钮是一个永久(forever)按钮,点击后将不断重复执行 go例程,直到遇到stop指令或用户再次点击该按钮则仿 真终止。
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) ]
2.建模基本过程
NetLogo模型包括可视化部件和例程两部分, 二者具有紧密联系。
先在Interface中创建可视化控件,然后在 Procedures中实现相应的代码,通过设置控 件的属性将二者联系起来。
Interface中主要有三类部件
Z运行控制 Z参数控制 Z仿真显示
Procedure中的例程分为两类:
set energy energy-50 ;;母体能量减少50
hatch 1 [set energy 50] ;;产生一个后代,初始能量50
]
]
end
to check-death ask turtles[ if energy<=0 [die] ] end
;;如果能量小于等于0则死亡
to regrow-grass ask patches[ ;;青草以0.03的概率再生 if random 100<3 [set pcolor green] ] end
observer是一个全局主体,它观察着由turtles和 patches构成的世界,能够执行指令获取世界全部或 部分的状态,或实现对世界的控制。
虚拟世界
Observer Turtle Patch
(2)空间表达
每个patch有二维坐标(pxcor,pycor)坐标值为整数。 默认情况下,二维世界的水平、垂直坐标范围为(-17,17)
;;绘制初始点
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
改变,需重新定义go例程,
to go move-turtles eat-grass reproduce check-death regrow-grass end
;;移动 ;;吃草 ;;繁殖 ;;死亡 ;;青草再生
to reproduce
ask turtles[
if energy > 50[
;;如果能量大于50则繁殖
每个turtle也有坐标(xcor,ycor)
Z turtle坐标不必是整数,因此turtle不一定正好位于某个patch的中心。
一个patch上也可以同时有多个turtles。 实际上对turtle而言,NetLogo的空间是连续的。
(3)仿真推进
没有明确的仿真时钟变量,也没有提供特定的事件 处理机制
;;设置整个世界为初始状态
;;创建100个turtles,创建后各turtle默认坐标是(0,0)
create-turtles 100
;;命令所有turtle执行语句setxy random-xcor random-ycor
;;各turtle 坐标随机产生,实现turtles在空间中的随机分布
ask turtles
Z绘图时必须使用某个画笔,画笔默认是黑色实 线,也可以创建自定义画笔
绘制turtles数量和青草数量曲线
添加Plot控件 创建两个画笔,分别指定颜色 添加do-plots例程 修改 setup和go例程
to setup clear-all setup-patches setup-turtles do-plots end
[setxy random-xcor random-ycor]
end
2.仿真执行例程
实现turtle随机移动 实现go例程,与forever按钮联系 go 调用move-turtles例程
增加代码: (demo2)
to go move-turtles
end
;;定义仿真执行例程go ;;调用例程move-turtles
Netlogo建模基础知识讲解
北京邮电大学世纪学院 丁锐
NetLogo简介
1.基本情况 NetLogo是一个用来对自然和社会现象进行
仿真的可编程建模环境建模仿真集成环境
由美国西北大学连接学习与计算机建模中心 (Center for Connected Learning and Computer-Based Modeling,CCL)开发。
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 ]
二、NetLogo仿真框架
1. NetLogo软件
2.模型的抽象
总体:
Z大量的可移动主体在二维空间中交互作用,随着 时间推进,微观个体的属性不断发生变化,系统 的宏观特征也因此而变化。
从三个方面理解:
Z主体 Z空间表达 Z仿真推进
(1)主体(Agents)
虚拟世界由主体构成,主体能够接受命令, 进行活动,所有主体的行为并行发生。
实验管理
Z BahaviorSpace,自动管理仿真运行,并记录结果。
系统动力学仿真 参与式仿真
Z HubNet
模型库
3.软件特色
完全可编程 简单语言结构 是LOGO语言的扩展,支持智能体和网络结
构 可以定义无限个智能体和变量 多种内置命令帮助使用 支持整型和双精度型浮点数计算 跨平台、可复用的应用。