《Netlogo多主体建模入门》学习笔记(4)

第五章 从羊-草生态系统深入turtles与plot画图

代码实现:

turtles-own [energy]

to setup;;初始化一只turtles,定义属性energy,创建一只能量为100的turtles
  clear-all
  reset-ticks
  set-default-shape turtles "sheep" 
  ask patches[
    if random-float 1 < 0.2[
    set pcolor green
    ]
  ]
  create-turtles 1[
  set energy 100
  ]
end

to go;;执行程序时,运行一堆自定义的子函数
  add_food
  ask turtles[
  turtles_move
  turtles_breed
  turtles_die
  ]
  tick
end

to add_food     ;;定义一个addfood函数
  ask n-of 10 patches[
  set pcolor green
  ]
end

to turtles_move;;定义turtles的移动模块
  if pcolor = green[
  set energy energy + 10
    set pcolor black
  ]
  if random-float 1 < 0.2[
  set heading random 360
  ]
  set energy energy - 1
  fd 1
end

to turtles_breed;;定义turtles繁殖模块
  if energy > 500[
  set energy energy - 500
    hatch 1[
    fd 1
      set energy 100
    ]
  ]
end

to turtles_die
  if energy <= 0[
  die
  ]
end

代码效果:

代码解析:

1.羊-草生态系统的规则:

(1)由羊(turtles)和草(patches)所构成的世界

(2)羊的内部有一个属性——“energy”,吃草增加,行动消耗,为0死亡

(3)羊可以繁殖,能量积累到一定水平,就会繁殖,且需要消耗能量,新出生的羊具备能量。

(4)草会自发的生长出来

2.to setup部分

使用一次简单的if语句模拟出百分之20的草,且设置羊的形状为sheep,初始化设置。

3.to go部分

这部分我们新学到了模块化程序的方法,即直接在to setup中加入自定义的子模块,并在接下来的程序中声明。该代码段中,一共有四个子模块,按照字面意思即添加食物子模块,移动子模块,繁殖子模块,死亡子模块。(在书中to go部分addfood和后面的to add_food不一致时检测不出来的)

4.n-of函数    相当于一个随机数函数

语法:n-of size(数量) agent(主体)即从“agent”集合中,随机抽取“size”个“agent”,使成为一个新的集合。

5.set energy energy + 10语句

FAO:这里又有点迷了,实际上可以理解为set ( energy (energy + 10)),这样就比较容易理解了。

6.hatch 顾名思义为孵化,为Netlogo的保留字

在《NetLogo 4.0.2 用户手册》提到语法为形如hatch number [ commands ],海龟创建number 个新海龟,每个都与母体相同,并且请求这些新海龟执行commands,你可以使用commands 让这些新海龟有不同的颜色、方向等。

7.曲线图    略。。。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值