上一节已向读者展示如何下载NetLogo、熟悉NetLogo用户界面,以及如何创建一个自定义模型,即100个“箭头”在一个世界中不断向前移动。但现实中的模型远比它要复杂,因而也要求我们更深入地了解NetLogo建模的语法。
一、最简单的模型
如上一节所述,即使是最简单的模型,也含有两个过程(procedure)——setup和go(当然,setup命名成别的名称也可以,但一般不这么做,因为不习惯)
to setup
clear-all
create-turtles 100 [ setxy random-xcor random-ycor]
reset-ticks
end
to go
ask turtles [ forward 1 ]
tick
end
一个过程的定义由to <过程名>
开头,end
作结尾。setup
过程一般都会含有clear-all
和reset-ticks
命令(command)。
clear-all
:将整个世界重置,清除世界中所含的所有东西,从而允许一个新模型开始运行。reset-ticks
:重置时钟,使时间步重新变为0。
一个go
过程的末尾往往有tick
,表示时间步加1。回到界面标签(Interface tab),会发现速度滑块(speed slider)旁边有一个下拉列表框,可以选择“按时间步更新”或“连续更新”。
按时间步更新
:每运行完一次go
过程就更新一次视图(view)。连续更新
:go
过程中每一步的进行都会导致视图(view)更新一次。
一般我们选取“按时间步更新”,比如上一节中建立简单模型时录制的gif动画。
二、基本概念
NetLogo是一款用于建立基于个体的模型(individual-basd model,IBM)的软件。对于一个IBM,NetLogo有一套专门的术语体系:
- 主体(agent):NetLogo模型