我的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
但是因为创造自行车,创造周期和创造汽车是观察者而发生的错误,不能在这里使用。 请指导我。 谢谢
答案 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
是报告已存在的海龟数量的指令。您需要了解接口和代码之间的连接。您可能还应该查看一些示例模型。