目录
森林火灾模拟
森林火灾模拟来自netlogo模型库。主要思路是通过让turtles随机改变周围turtles的颜色模拟火灾发生,并探索森林密度与烧毁比例之间的关系。
1.to setup:建立一个森林和起火线
代码如下:
globals [
initial-trees ;; 声明新的全局变量:原本的树
burned-trees ;; 被烧毁的树
]
breed [fires fire] ;; 声明新的海龟种类:fires fire(火)
breed [embers ember] ;; embers ember(余烬)
to setup
clear-all
set-default-shape turtles "square"
;; 将海龟默认形状设置为方形
ask patches with [(random-float 100) < density]
[ set pcolor green ]
;; 用random-float命令让patch生成<100的随机数,该数字若小于density,则patch变绿
ask patches with [pxcor = min-pxcor]
[ ignite ]
;; 让坐标系中最左边的一条线点燃
set initial-trees count patches with [pcolor = green]
;;设置变量原本的树为:绿色patch的数量
set burned-trees 0
reset-ticks
end
注意点:
(1)在最前面声明新的全局变量:initial-trees、burned-trees和新的海龟种类:fire、fires、ember、embers;
(2)用random-float的命令使得patch与森林密度density关联起来,即:使patch生成随机数,若设置density为30(界面已设置density滑块),则随机数<30的patch变为绿色;
(3)用count命令使initial-trees取值等于绿色patch的数量。,
设置完毕如下图:
2.to go:燃烧
令fires随机点燃4个邻居,点燃即:使fire变红,之后pcolor变黑,烧毁数量加1。点燃后生