我的节目是关于:
一群乌龟走遍世界各地寻找最佳食物来源并去那里。
我在代码中存储特定补丁(这是最好的食物位置)时遇到问题。一世 …
你有太多问题,其中一些是概念问题。您需要一次处理一个问题,然后在转移到下一个问题之前解决该问题。如果您遇到任何一个问题,可以在这里询问(显示您尝试做的事情并解释它正在做什么,而不是您想要的)。
我认为最好的第一步是专注于存储最佳食物的位置。但首先你需要解决你的全局和乌龟变量问题。
我认为你对于什么样的事物是全局变量感到困惑。全局变量就是一个变量 的 所有模型实体的值都相同 强> 。很明显,每个海龟的队员和最近的队友都是不同的。因此,它们必须存储在海龟级别,如 turtles-own 变量。这也是你应该用来做最好的食物。
turtles-own
您的海龟自己的变量列表中似乎也有太多标识符类型变量。您只需要一个团队ID,然后您就可以通过简单地找到具有相同团队ID的海龟来识别团队成员。如果你做了很多,那么将这些乌龟的代理集存储在变量队友中,这样你就不必继续创建相同的代理集。
你的过程应该是这样的:
请注意,这只能找到最好的食物,它不会跟踪海龟发现的其他食物。一旦找到更好的食物,其他食物的位置将被遗忘。您需要做清单以跟踪所有食物,但在最佳食物版本正常工作之前,您绝对不应该这样做。
作为一般规则,当您使用NetLogo时,如果您正在使用标识符(或 who 对于代码中的个人而言,您可能不应该这样做。如果你使用foreach,你可能不应该。在这两种情况下,您都需要代理集。
who
你已经有了这个代码。你排队 set location patch-here 正在使用代理集 patch-here 而不是标识符。
set location patch-here
patch-here
看了你之前的问题 如何让乌龟能够在Netlogo中保存其他海龟身份证? 很明显,您之前已被建议使用此模型的代理集。我已经添加了一个答案,告诉你如何做到这一点。你也只是复制了那里提供的代码而不理解它,你之前的问题的答案也指出了全局变量和乌龟变量之间的区别。