【问题标题】:Netlogo increase turtle number by tickNetlogo 按刻度增加海龟数量
【发布时间】:2017-11-26 23:05:50
【问题描述】:

我正在尝试构建一个模型,其中海龟每个刻度移动一个补丁并随机移动。我正在寻找一种解决方案来根据百分比增加每个刻度的海龟数量。例如。一开始有 7 只海龟,每增加一个刻度,它们应按以下百分比增加:

10.72% 10.83% 10.93% 11.03% 11.11% 11.19% 11.27% 11.33% 11.39% 11.45%

不确定这是否可行?如果需要,这可以四舍五入到整数。

如果这是不可能的,我怎样才能将海龟数量增加 11%,每次滴答 10 滴答,然后在每次滴答 12% 之后再增加 10 滴等等?

以下是我正在使用的代码。


to setup
  clear-all
  setup-turtles
  setup-patches
  reset-ticks
end
to setup-patches
  ask patches [ set pcolor green ]
end
to setup-turtles
  create-turtles tourists [setxy random-xcor random-ycor ]
  ask turtles [ set shape "person" set size 2 ]
end
to go
  if ticks >= 130 [ stop ]
  move-turtles
  eat
  tick
end
to move-turtles
  ask turtles [ right random 360 forward 1]
end
to eat
  ask turtles [ if pcolor = green [ set pcolor black ] ]
end

感谢您的支持。 阿维

【问题讨论】:

  • 需要增加什么?例如,它是乌龟拥有的变量(属性)吗?还是增加与运动有关?
  • 感谢 JenB 的回复。增加与运动有关。每一次滴答声,每只海龟都必须在绿色斑块上移动一步,消耗绿色空间并将其变成黑色。 (在我的模型中甚至可能那部分也不正确,因为移动是随机的,这意味着海龟也可能在黑色斑块上移动,如果您也能帮助我,我将不胜感激)并且海龟的数量需要如果可能的话,如果不是按数字,按百分比增加。我对编程的了解有限,因此将不胜感激。谢谢。
  • 所以你想创建更多的海龟来增加它们的总数?如果你从 7 只海龟开始,那么 10.72% 的增长会让你达到 7.75 只海龟,所以这没有任何意义。真的,最好一次只做一件事。我会先搬家,然后吃东西,然后担心增加海龟。
  • 知道了,谢谢。在那种情况下,我怎样才能让所有 7 只海龟每次只在绿色斑块上移动并增加海龟数量,让我们说每个滴答声上多一只海龟?所以它从 7 只海龟开始,下一个刻度增加到 8 只海龟,依此类推?这可能吗?非常感谢您在这方面的帮助。

标签: netlogo agent-based-modeling


【解决方案1】:

我认为您的模型与模型库中的“Rabbit Grass Weeds”非常相似,因此您可能想看看它以获得一些想法。只关注修改后的迁移到绿色补丁的问题,您需要with,这将限制选择。请注意,如果没有相邻的绿色补丁,下面的代码将中断。

to setup
  clear-all
  setup-turtles
  setup-patches
  reset-ticks
end

to setup-patches
  ask patches [ set pcolor green ]
end

to setup-turtles
  create-turtles 7 [setxy random-xcor random-ycor ]
  ask turtles [ set shape "person" set size 2 ]
end

to go
  if ticks >= 130 [ stop ]
  move-turtles
  increase-turtles
  tick
end

to move-turtles
  ask turtles [ move-to one-of neighbors with [pcolor = green] ]
end

to increase-turtles
  ask one-of turtles [ hatch 1 ]
end

我在这段代码中使用了hatch,它让一只乌龟在同一个地方用相同的颜色创建另一只乌龟,等等。如果你只想以与原来的乌龟完全相同的方式创建一个新的乌龟,那么你想要更多这样的东西。

to setup
  clear-all
  make-turtles 7
  setup-patches
  reset-ticks
end

to setup-patches
  ask patches [ set pcolor green ]
end

to make-turtles [ num ]
  create-turtles num
  [ setxy random-xcor random-ycor
    set shape "person"
    set size 2
  ]
end

to go
  if ticks >= 130 [ stop ]
  move-turtles
  increase-turtles
  tick
end

to move-turtles
  ask turtles [ move-to one-of neighbors with [pcolor = green] ]
end

to increase-turtles
  make-turtles 1
end

在这种情况下,我创建了一个新程序(称为make-turtles),它可以创建任意数量的海龟,随机定位它们等。在设置中,我调用它来制作 7 只海龟,然后再制作每次 1 个。

【讨论】:

  • 这很有帮助。第二个选项最适合我的需要。正如您所提到的,目前我只有一个问题,当没有绿色相邻补丁时,代码会中断。为了解决这个问题,是否可以从补丁的左端开始所有海龟。例如,在开始时,它们都以列格式创建在补丁的左端,这样如果它们的移动只是向前,那么它们将始终在果岭上。最后,是否可以增加海龟代码,使其只在剩余的绿色补丁中生成新海龟?感谢您推荐“兔子草杂草”。谢谢
猜你喜欢
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
  • 2017-07-08
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多