Netlogo:如何在多个补丁中询问其中一只乌龟?

Netlogo: How can I ask one of the turtles in multiple patches?

如何在多个补丁中询问其中一只乌龟? 我想 select 指定补丁中的一只海龟。 (或者我想问指定单元格范围内的一只乌龟) 例如,我想使用以下语法:但是它不起作用。

ask turtles-on patch (1, 0) or (2, 0) or (3, 0)
move-to patch max-pxcor 1

ask turtles with [(50 0) < max-pxcor]
move-to patch max-pxcor 1

您的第一个问题是识别补丁的方式。例如,"patch (0, 1)" 的正确形式是 patch 0 1 - 没有括号也没有逗号。您在代码的 move-to 位中正确使用了此语法。

要使第一个版本正常工作,您需要创建一个补丁集,然后 select 从中创建补丁集:

ask turtles-on (patch-set patch 1 0 patch 2 0 patch 3 0)
[ move-to patch max-pxcor 1
]

我不太确定你的逻辑在第二个版本上是什么,因为你正在比较(某种程度上)一个数字和另一个数字。即使语法正确,它也可能对所有海龟为真或对所有海龟为假。根据您的第一个示例,我怀疑您希望海龟查看自己的补丁,并且如果 pxcor < 50 且 pycor 为 0,则您希望它们移动。那将是:

ask turtles with [pxcor < 50 and pycor = 0]
    [ move-to patch max-pxcor 1
    ]

如果你想要海龟在一行中包含所有的补丁(而不仅仅是最多 50 个),那么你可以这样做:

ask turtles with [pycor = 0]
    [ move-to patch max-pxcor 1
    ]

请注意,第二个和第三个示例使用了这样一个事实,即海龟可以自动访问它所在的补丁所拥有的变量。

请注意,如果您只想要一只海龟(正如您在文本中所说但不是示例代码中所说),那么您需要 ask one-of turtles 而不是 ask turtles