如何保存具有某些特征的补丁的xy

问题描述 投票:0回答:1

我想根据耕种类型将补丁的坐标存储在一个空列表中。现在我有一个名为 myland 的空列表,其中代理存储了他们附近的内容。

例如,我有番茄大豆和牛,中间还有一只乌龟。我有这个。

ask locals [set myland [plantation] of patches in-radius 5 with [plantation != "Cows"]]

这给我带来了用于农业的补丁列表,但现在我想知道这些补丁在该半径的哪个位置。

你会怎么做?

计划是给这些补丁涂上不同的颜色

netlogo patch
1个回答
2
投票

我建议你不要这样做。那就是痛苦和疯狂。

不要将种植园字符串值存储在列表中,而是将补丁本身存储在主体集中。这将使其他一切变得更容易。

但首先,请记住 NetLogo 不是强类型的,并且大多数值都是不可变的。这意味着之前在变量中存在并不重要,当您分配新值时,旧值将被替换。因此,如果您随后使用“set”在其中放置其他内容,则将变量初始化为“空列表”并不重要。

现在回答你的问题。

如果您的目的是根据补丁变量的值对补丁进行着色,那么要求海龟找到补丁,然后对它们进行着色似乎效率较低

让斑块根据种植园价值自行着色会更简单。

考虑:

Let cow-color brown
Let wheat-color yellow
Let grass-color green

ask patches
[
  Ifelse
  ( Plantation = "cows" )
  [ Set pcolor cow-color ]
  ( Plantation = "wheat" )
  [ Set pcolor wheat-color ]
  ;; Otherwise
  [ Set pcolor grass-color ]
]

还值得注意的是,您的示例代码没有返回补丁列表。它从种植园变量返回一个字符串列表。

但是你的想法是正确的。通常最好将补丁或海龟本身存储在代理集中。它通常会让其他事情变得更容易。

您原来的示例可能是:

Ask locals
[ 
  Set myland patches in-radius 5
  ;; Do all kinds of things with myland
]
© www.soinside.com 2019 - 2024. All rights reserved.