location - 如何在 Netlogo 中保存特定补丁?
问题描述
我的程序是关于:
一队海龟环游世界寻找最好的食物来源并前往那里。
我在代码中存储特定补丁(这是最好的食物位置)时遇到问题。我已尝试使用patch-here
,但无法存储我想要的确切补丁
这是代码:
turtles-own
[ myteamset
food-quality-found ;the quality of food that the turtle found
location ;the location of food-quality-found
best-food ;the best food available
location-best-food ;the location of best food
]
patches-own
[ food-quality ;the food source]
这是代码
foreach teamNumbers [
tn ->
ask turtles with [ teamID = tn ] [
if myteamset != nobody [
ask myteamset [
set food-quality-found food-quality
set location patch-here
;face location
]
if food-quality-found != 0 ;after all turtles found food, thus comparison can be done
[
let x1 max [food-quality-found] of myteamset ; max for group
set location-of-best-food [patch-here] of location ;problem ???
set best-food x1
move-to location-of-best-food ;turtles to go to the best food location
face location-of-best-food ;turtles stay there
]
]
]
我的世界是这样的,紫色是巢,其他是食物。
我需要帮助来存储location-of-best-food
我不能patch-here
用来存储位置的值。错误是我一直保存海龟找到食物的位置,而不是最好的食物位置。
感谢您的时间。
我已经编辑了我的问题,因为我已经理解了@JenB 想说的是什么(感谢您的解释)
解决方案
你有太多的问题,其中一些是概念问题。您需要一次处理一个问题,在处理下一个问题之前解决该问题。如果你在任何一个问题上遇到困难,你可以在这里提问(展示你尝试过的事情并解释它在做什么而不是你想要什么)。
我认为最好的第一步是专注于存储最好的食物的位置。但首先你需要理清你的全局和海龟变量问题。
我认为您对全局变量是什么类型的东西感到困惑。全局变量是所有模型实体的值都相同的变量。很明显,每只海龟的团队成员和最近的队友都是不同的。因此,它们必须作为turtles-own
变量存储在海龟级别。这也是你应该使用的最佳食物。
你的海龟自己的变量列表中似乎还有太多的标识符类型变量。您所需要的只是一个团队 ID,然后您可以通过简单地找到具有相同团队 ID 的海龟来识别团队成员。如果您经常这样做,则将此类海龟的代理集存储在变量队友中,这样您就不必继续创建相同的代理集。
你的过程应该是这样的:
- 每只海龟四处移动,如果它找到食物,则检查它找到的食物是否比它所知道的最好的食物更好
- 如果更好,请存储该食物的位置(这是一个补丁而不是一对坐标)和质量
- 如果队友可以立即沟通,它也会告诉其他队友食物的质量和位置
- 如果队友只在接触或类似情况下交流,那么当满足这些条件时,海龟会与队友核对食物更好的食物,并在适当的情况下将食物的位置和质量更改为队友的信息。
请注意,这只会找到最好的食物,它不会跟踪海龟找到的其他食物。一旦找到更好的食物,其他食物的位置就会被遗忘。你需要做清单来跟踪所有的食物,但你绝对不应该这样做,直到你有最好的食物版本正常工作。
作为开始使用 NetLogo 时的一般规则,如果您who
在代码中为个人使用标识符(或值),您可能不应该这样做。如果您使用的是 foreach,则可能不应该使用。在这两种情况下,您都需要代理集。
您几乎已经使用此代码到达了那里。您的线路set location patch-here
正在使用代理集patch-here
而不是标识符。
看过你之前的问题如何让乌龟能够在 Netlogo 中保存其他乌龟 ID?,很明显,您以前曾被建议为此模型使用代理集。我添加了一个答案,向您展示如何执行此操作。您也只是简单地复制了那里提供的代码而不理解它,您之前问题的答案也指出了全局变量和海龟变量之间的区别。
推荐阅读
- angular - 如何在 TypeScript 中正确使用 GeolocationPosition?
- html - 使用 BeautifulSoup 抓取非内联样式的 html 元素的 css 属性
- python - 类型错误:只能将 str(不是“float”)连接到 str
- r - 如何在 sparklyr 包中运行 FPGrowth
- python - 我无法显示 Django 表单
- jquery - jQuery validate submitHandler 不会触发
- spring - 在 Spring Boot 显示中请求无效或未知 URL 时如何重定向到错误页面
- javascript - 如何使轮播的上一个和下一个按钮工作?
- c++ - 难忘的工厂:不适用于默认的可构造对象
- sql-server - SQL Server 图表以获取连接到节点的多个节点类型