Netlogo中如何计算智能体变量与地图中心的距离
问题解决思路与代码修正
核心错误原因
你之前的代码报错是因为[economic] of turtles和[cultural] of turtles返回的是所有海龟变量值的列表,而patch x y或pxcor = ...需要的是单个数值,列表和数值无法匹配,导致逻辑失效。
修正方案:遍历单只海龟处理对应Patch
要处理所有智能体的变量,需要逐个遍历海龟,获取每只海龟的economic和cultural值,定位到对应的Patch后执行操作:
1. 计算对应Patch到地图中心的距离
ask turtles [ ; 获取当前海龟对应的Patch(因Patch坐标为整数,先对变量取整) let target-patch patch (round economic) (round cultural) ask target-patch [ ; 计算该Patch到(0,0)的距离并赋值 set distancia-agri distancexy 0 0 ] ]
2. 标记对应Patch为红色
ask turtles [ ; 直接定位到当前海龟变量对应的Patch并设置颜色 ask patch (round economic) (round cultural) [ set pcolor red ] ]
补充说明
- 如果多只海龟对应同一个Patch,重复设置
distancia-agri不会影响结果(距离是固定值);设置颜色时,最后一次操作会覆盖之前的,但红色标记效果不受影响。 - 若你的
economic和cultural变量本身就是整数,可以去掉round函数,直接用patch economic cultural。
内容的提问来源于stack exchange,提问作者bksnlow
相关产品推荐
相关产品推荐

