NetLogo引用用户定义的变量并在不靠近的情况下链接海龟和补丁

NetLogo引用用户定义的变量并在不靠近的情况下链接海龟和补丁,netlogo,Netlogo,我正试图找出一种方法,让汽车在我的世界里预留一个停车位(补丁)。我已经为补丁创建了一个保留的布尔值,但不知道如何将该保留与特定的海龟链接。我曾想过链接海龟和补丁(我对这个程序是新手),但意识到链接只是海龟而已 除此之外,我还试图构建一个循环来搜索距离我的目的地最近的地点(xcor0)。乌龟将保留距离目的地最近的位置(乌龟本身作为决胜局的xcor-1和xcor 1与目的地的距离相同) 我错误地引用了补丁拥有的保留布尔值,但更重要的是,我可以将此保留或其他类型的变量链接到turtle吗 patche

我正试图找出一种方法,让汽车在我的世界里预留一个停车位(补丁)。我已经为补丁创建了一个保留的布尔值,但不知道如何将该保留与特定的海龟链接。我曾想过链接海龟和补丁(我对这个程序是新手),但意识到链接只是海龟而已

除此之外,我还试图构建一个循环来搜索距离我的目的地最近的地点(xcor0)。乌龟将保留距离目的地最近的位置(乌龟本身作为决胜局的xcor-1和xcor 1与目的地的距离相同)

我错误地引用了补丁拥有的保留布尔值,但更重要的是,我可以将此保留或其他类型的变量链接到turtle吗

patches-own [empty reserved]
to reserve
  ifelse ((patch 0 -1 != nobody) and (patch 0 -1 [reserved] = false))
  [ask patch 0 -1 [set reserved true
      set pcolor red]]
  let i 1
  [do while reserved = true[
      ifelse (patch -i -1 != nobody and (patch -i -1 [reserved] = false))
      [ask patch -i 1 [ set reserved true
          set pcolor red]
      [ if patch i -1 != nobody and (patch i -1 [reserved] = false)
        [ask patch i -1 [ set reserved true
            set pcolor red]]]]
      set i i + 1]
  ]
 end

谢谢大家!

首先,有几个要点:

  • 引用
    patch 0-1
    reserved
    变量的正确方法是使用patch 0-1的
    [reserved]
  • 补丁和海龟之间不能有链接,但可以在补丁变量中存储对海龟的引用。您可以使用
    保留的
    引用,而不是
    保留的
    布尔值。您可以通过执行以下操作来分配它:
    askpatch0-1[海龟0保留集]
    或类似操作
  • 我看到您有一个
    空的
    补丁变量。您在代码中没有使用它,但我怀疑
    not any会更好地满足您可能想到的任何用途?这里有海龟
主要问题是:

在NetLogo中,循环是最好的方法是非常罕见的。一般来说,您应该尝试从AgentSet的角度来考虑,您可以使用其中的许多内置函数。在您的特定情况下,它可能类似于:

patches-own [ reserved-by ]

to reserve-closest-free-spot [ destination ]
  let free-spots patches with [ pycor = -1 and not is-turtle? reserved-by ]
  let closest-to-destination free-spots with-min [ distance destination ]
  let closest-to-me min-one-of closest-to-destination [ distance myself ]
  ask closest-to-me [
    set reserved-by myself
    set pcolor red
  ]
end
然后,您可以像这样使用
保留最近的空闲点
过程,例如:

to setup
  clear-all
  ask n-of 10 patches [ sprout 1 [ reserve-closest-free-spot patch 0 -1 ]]
  ; Show the reservations:
  ask patches with [ is-turtle? reserved-by ] [ show reserved-by ]
end

哇!非常感谢你的帮助,我真的很感激。这看起来很完美!