【问题标题】:creating turtles in Netlogo在 Netlogo 中创建海龟
【发布时间】:2016-03-11 01:00:27
【问题描述】:

我的 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

但是由于 creat-bike、create-cycle 和 create-car 是观察者而发生错误,不能在这里使用。 请指导我。 谢谢

【问题讨论】:

  • 请发布您目前拥有的内容。每个人都需要一个 breed 声明,并且需要一些声明,例如 create-cars 10
  • 品种 [自行车] 品种 [汽车] 品种 [循环] 设置清除所有询问补丁 [ 萌芽 1 [ 设置品种(其中之一(列表自行车汽车循环))询问自行车 [ 设置颜色灰色] ask car[set color blue] ask cycle[set color green] ] ] end 在 Sprout creat-car 内不工作,因为它是观察者。我只想要 30% 的海龟品种自行车,30% 的海龟品种循环和 40% 的海龟品种汽车。我需要基于元胞自动机的模型。
  • @Aisha 欢迎来到 Stack Overflow!当你的代码被粘贴到这样的评论中时,阅读你的代码是非常困难的。请编辑您的原始问题并在那里添加代码。然后我们就可以为您提供帮助。
  • 好的。在 Sprout creat-car 内不能像观察者那样工作。我只想要 30% 的海龟品种自行车,30% 的海龟品种循环和 40% 的海龟品种汽车。我需要基于元胞自动机的模型。

标签: netlogo


【解决方案1】:

你正在一个新芽语句中做一个 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 是一个报告已经存在的海龟数量的指令。你需要了解接口和代码之间的联系。您可能还应该查看一些示例模型。

【讨论】:

  • 你在这里使用了随机浮点数。如果我计算海龟的总数,然后随机 0.3% 的海龟应该有自行车、0.2% 的自行车和 0.5% 的汽车,这可能吗?每个补丁上都有 1 只海龟。
  • random-float 1 返回一个从 0 到 1 的数字(并将其放入我代码中的变量 xx 中)。然后,您可以随意拆分范围。所以如果你想要 30% 的自行车、20% 的自行车和 50% 的汽车,那么范围是 0 到 0.2、0.2 到 0.5 和 0.5 到 1。所以只需将代码中的 0.6 更改为 0.5。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多