首页 > 解决方案 > 如何使用补丁变量的约束设置乌龟的随机 XY 坐标

问题描述

我有一个名为 ID 和人口的变量的补丁,从 GIS 矢量导入。我要求补丁在每个特征 ID 的质心处产生种群,即海龟。但我希望海龟不要重叠,在补丁 ID 变量的约束内为每个海龟分配随机 xy 坐标。例如,在一个补丁 ID = 1 的质心中喷出的乌龟可以在任何 ID = 1 的补丁中,但不能在具有其他 ID 的补丁中。

> patches-own [ID centroid? pop]
> turtles-own [tID]
>
> ask patches with [ID >= 1] [sprout (pop * 0.1) [
>     set tID ID
>     let mypatch one-of patches with [ID = tID]
>     move-to mypatch   ]]

一个错误说我不能使用 tID 作为补丁上下文,因为 tID 只显示海龟。

标签: gisnetlogo

解决方案


令 NetLogo 困惑的tIDwith声明中的内容。您可以通过设置一个局部变量来保存该值来解决这个问题:

patches-own [ ID ]
turtles-own [ tID ]

to test1
  clear-all
  ask patches [ set ID random 3 ]
  ask patches with [ID >= 1] [
    sprout (random 10) [
      set tID ID
      let tID-local tID
      let mypatch one-of patches with [ID = tID-local]
      move-to mypatch   
  ]]
end

但我不确定这实际上是你想要的。你已经在ID >= 1sprout海龟询问补丁,这意味着它们已经在这些补丁上。试试这个,看看它是否正确:

to test2
  clear-all
  ask patches [ set ID random 3 ]
  ask patches with [ID >= 1] [
    sprout (random 10) [
      set tID ID
  ]]
end

我可能完全错了,你的意思是在相同 ID 的补丁中重新排列人口,在这种情况下忽略我的第二部分!


推荐阅读