【发布时间】:2021-10-21 02:44:53
【问题描述】:
我在执行以下代码时遇到了困难:我有一段代码让海龟在圆锥内选择一个资源 > 30 的补丁。什么时候,乌龟的补丁是具有最高值的补丁 a乌龟没有动。所以我使用“其他”命令放置代码行。但是,现在发生的情况是,如果海龟所在的补丁具有最高的资源价值,它会选择另一个资源> 30的补丁。问题是,例如,在乌龟的一侧有一个具有资源价值的补丁= 51,另一个值为31,她选择31。我想实现的是:如果乌龟所在的补丁是资源价值最高的补丁(并且乌龟已经收集了这个资源),她将选择另一个具有第二高资源价值的邻居补丁。我尝试使用 max-one-of 但出现错误:“MAX-ONE-OF 预期 2 个输入,一个代理集和一个数字块。
有没有人有什么想法,我该如何解决这个问题?
提前致谢
to go
ask turtles
[
let availablePatch patches in-cone 5 90 with [ resource-value > 30 ]
ask patch-here [ set availablePatch other availablePatch ] ;; remove the patch it is in, because if the patch it is in is the one with the highest value within your range of vision, the turtle does not move
; ask patch-here [ set availablePatch other max-one-of [ availablePatch ] ]
let neighAvailable count availablePatch
ifelse neighAvailable = 0
[
move-around
]
[
let target max-one-of availablePatch [ resource-value ]
face target move-to target
set step-count step-count + 1
]
]
end
to move-around
right random 360
let step-length 2
forward step-length
end
【问题讨论】:
-
您应该知道您在海龟上下文中创建
availablePatch,然后在补丁上下文中更改它。这总是容易出错和意外结果。目前尚不清楚other在这种情况下应该是什么意思。 -
如果您从更笼统的术语描述程序开始(它应该代表什么,海龟在做什么以及为什么?)也会有所帮助
标签: netlogo