在Netlogo中创建海龟

时间:2015-12-06 10:31:53

标签: netlogo

我的ABM需要一些帮助。我的模型是基于细胞自动机的。海龟有三个品种自行车,自行车和汽车。当模拟开始时,设置过程应该创建一些特定的海龟数量。例如: 30%的海龟与品种自行车, 30%的总龟具有繁殖周期和 40%的海龟与品种车。 总数(30%+ 30%+ 40%)=海龟总数 我的代码如下:

breed[bike]
breed[cycle]
breed[car]
to setup
ask patches[
sprout 1 [
let b = count bike(round (30 / 100 * count turtles)) 
let cy = count cycle(round(30 / 100 * count turtles))
let c = count car (round(40 / 100 * count turtles))
create-bike b
 ask bike[set color gray]
create-cycle cy
ask cycle[set color blue]
create-car c
ask car[set color green]
]
]
end

但是因为创造自行车,创造周期和创造汽车是观察者而发生的错误,不能在这里使用。 请指导我。 谢谢

1 个答案:

答案 0 :(得分:3)

你正在sprout语句中做一个create-turtle。两者都是创造海龟的方法。这是您所拥有的更正版本:

breed[bikes bike]
breed[cycles cycle]
breed[cars car]

to setup
  set num-turtles 100     ; or use a slider to set total turtle numbers
  create-bikes round (0.3 * num-turtles)
  [ set color gray
    setxy random-xcor random-ycor
  ]
  create-cycles round (0.3 * num-turtles)
  [ set color blue
    setxy random-xcor random-ycor
  ]
  create-cars round (0.4 * num-turtles)
  [ set color green
    setxy random-xcor random-ycor
  ]
end

但是,您可能希望每个补丁都有一只乌龟(如果我已正确解释您对细胞自动机的请求)。在这种情况下,您需要以下内容:

breed[bikes bike]
breed[cycles cycle]
breed[cars car]

to setup
  ask patches
  [ let xx random-float 1
    ifelse xx < 0.3 [ sprout-bikes 1 [ set color gray ] ] [
    ifelse xx < 0.6 [ sprout-cycles 1 [ set color blue ] ] [
                    [ sprout-cars 1 [ set color green ] ] ] ]
  ]
end

我强烈建议您在尝试编写下一部分代码之前,先在NetLogo网站上进行在线教程,因为您缺少一些基础知识。例如,count turtles是报告已存在的海龟数量的指令。您需要了解接口和代码之间的连接。您可能还应该查看一些示例模型。