NetLogo引用用户定义的变量并在不靠近的情况下链接海龟和补丁
我正试图找出一种方法,让汽车在我的世界里预留一个停车位(补丁)。我已经为补丁创建了一个保留的布尔值,但不知道如何将该保留与特定的海龟链接。我曾想过链接海龟和补丁(我对这个程序是新手),但意识到链接只是海龟而已 除此之外,我还试图构建一个循环来搜索距离我的目的地最近的地点(xcor0)。乌龟将保留距离目的地最近的位置(乌龟本身作为决胜局的xcor-1和xcor 1与目的地的距离相同) 我错误地引用了补丁拥有的保留布尔值,但更重要的是,我可以将此保留或其他类型的变量链接到turtle吗NetLogo引用用户定义的变量并在不靠近的情况下链接海龟和补丁,netlogo,Netlogo,我正试图找出一种方法,让汽车在我的世界里预留一个停车位(补丁)。我已经为补丁创建了一个保留的布尔值,但不知道如何将该保留与特定的海龟链接。我曾想过链接海龟和补丁(我对这个程序是新手),但意识到链接只是海龟而已 除此之外,我还试图构建一个循环来搜索距离我的目的地最近的地点(xcor0)。乌龟将保留距离目的地最近的位置(乌龟本身作为决胜局的xcor-1和xcor 1与目的地的距离相同) 我错误地引用了补丁拥有的保留布尔值,但更重要的是,我可以将此保留或其他类型的变量链接到turtle吗 patche
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
变量的正确方法是使用patch 0-1的reserved
[reserved]
- 补丁和海龟之间不能有链接,但可以在补丁变量中存储对海龟的引用。您可以使用
引用,而不是保留的
布尔值。您可以通过执行以下操作来分配它:保留的
或类似操作askpatch0-1[海龟0保留集]
- 我看到您有一个
空的
补丁变量。您在代码中没有使用它,但我怀疑
not any会更好地满足您可能想到的任何用途?这里有海龟
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
哇!非常感谢你的帮助,我真的很感激。这看起来很完美!