Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 分拣代理';在NetLogo中使用数组进行坐标_Arrays_Coordinates_Netlogo - Fatal编程技术网

Arrays 分拣代理';在NetLogo中使用数组进行坐标

Arrays 分拣代理';在NetLogo中使用数组进行坐标,arrays,coordinates,netlogo,Arrays,Coordinates,Netlogo,我需要在NetLogo中创建一个模拟代码,其中来自nest的代理在世界各地寻找食物。巢穴中将有10名特工 我现在面临的问题是,我需要安排这些代理在巢穴中的位置,这样它们就不会相互重叠。因此,我计划使用数组对它们的位置进行排序 但我在使用数组指定它们的位置时遇到了问题,因为我仍然在努力理解TSAND NetLogo 下面的代码是我尝试编写数组的代码,但没有成功 to setup ca create-turtles 10 [ set size 2 ] setup-patch

我需要在NetLogo中创建一个模拟代码,其中来自nest的代理在世界各地寻找食物。巢穴中将有10名特工

我现在面临的问题是,我需要安排这些代理在巢穴中的位置,这样它们就不会相互重叠。因此,我计划使用数组对它们的位置进行排序

但我在使用数组指定它们的位置时遇到了问题,因为我仍然在努力理解TSAND NetLogo

下面的代码是我尝试编写数组的代码,但没有成功

to setup
  ca
  create-turtles 10
  [
    set size 2
 ]
  setup-patches
  sort-agent  
end

to sort-agent
  let n turtles
foreach sort turtles [ setup-nest
  ask turtles
  [
    set plabel n
    set n n + 1
  ]
]
end

to setup-patches                                          
  ask patches
  [ setup-nest]
end

to setup-nest
   set nest? (distancexy 0 0) < 6
end
设置
ca
创造海龟10
[
2号套餐
]
安装补丁
分拣代理
结束
分类代理
让我们来看看乌龟
foreach分拣海龟[设置巢穴]
问海龟
[
设置plabel n
集合n+1
]
]
结束
设置修补程序
询问补丁
[设置嵌套]
结束
筑巢
安家?(距离XY 0)<6
结束

有人能帮我吗?非常感谢。

我想你说的是
让n只海龟
,你的意思可能是
让n只海龟
。通过
set plabel n
,我想你的意思可能是
set label n
(你想给海龟贴标签,而不是给它们站的地方贴标签,对吧?)

不清楚为什么要在
排序代理
内部调用
设置嵌套
。我想你只是想把它去掉

同样不清楚的是,为什么要在
foreach
循环中调用
ask turtles
<代码>询问海龟始终询问所有海龟;我猜你是想问某只乌龟,这里

我怀疑你是否需要在这里使用列表。(NetLogo称之为列表,而不是数组。)如果我能更好地理解您试图解决的问题,也许我会认为涉及列表是有意义的,但就目前而言,我持怀疑态度

如果您只是想根据海龟的创建顺序给它们贴上标签,您只需执行以下操作:

ask turtles [ set label who ]
或者,即使在创建标签时:

create-turtles 10 [ set label who ]
但是,如果出于某种原因这不适合,那么使用与您提供的代码类似的代码来完成同样的事情的方法是:

let n 0
foreach sort turtles [
  ask ? [
    set label n
    set n n + 1
  ]
]
你不能说你使用的是NetLogo 5还是NetLogo 6。我已经使用了NetLogo 5语法,但如果您需要,我可以将其更改为6


一般来说,在我看来,您试图一次编写太多代码。因此,您正在编写的代码有太多错误,以至于您在尝试同时修复所有错误时会遇到很多麻烦。我建议从工作代码开始,然后尝试对其进行非常小的改进,一次一个,让每一个改进都在进行中。任何时候你必须一次编写一堆代码,这意味着你正在处理一个太大的问题,你应该先找到一个较小的版本来处理。

如果你想创建分散的海龟,请选择随机补丁并使用
sprout
(假设需要的海龟比可用补丁少)。根据你对赛斯回答的评论,我认为这是你想要的。我想重申他的评论,即你试图一下子做得太多了。这里一个明显的突破是在考虑在巢穴内建造海龟之前先建造巢穴(并检查是否可行)

globals [nest]

to setup
  clear-all
  setup-nest
  setup-turtles
end

to setup-nest
  set nest patches with [distancexy 0 0 < 6]
  ask nest [ set pcolor red ]
end

to setup-turtles
  ask n-of 10 nest
  [ sprout 1
    [ set label who
    ]
  ]
end
globals[nest]
设置
清除所有
设置嵌套
安置海龟
结束
筑巢
使用[distancexy 0<6]设置嵌套面片
询问nest[设置颜色为红色]
结束
安置海龟
问n-10个鸟巢
[萌芽1
[给谁贴标签
]
]
结束

这有帮助吗?你的问题对我来说是不清楚的。你能把它编辑得更具体、更准确地说明你想解决什么问题吗?@alan谢谢你建议的链接,但我认为这段代码不适合我的项目,谢谢你的建议。@SethTisue谢谢你的评论,我已经编辑了我的问题,如果你仍然不清楚,请告诉我,我会再编辑一次D@linda它看起来会满足您的需要。我正在使用NetLogo 5.2,是的,安装嵌套应该在排序代理中,现在我意识到。。。我写在这里是因为我想要求所有的海龟不要在巢穴中重叠。假设巢穴是一个教室,代理是学生,上课前,所有的学生都坐在自己的位置,他们知道自己的位置------->所以在这里,我想编码代理坐在巢穴中的特定位置,所以当我按下设置时,代理已经在他们的位置上------->我对如何使用列表/数组(现在我知道它叫列表,谢谢)来实现这一点的最佳猜测------->但如果除了列表之外还有其他方法,我愿意接受建议。我对NetLogo工作原理的了解非常有限。好的,下次遇到问题时,请打开一个新问题。谢谢,我会这样做的。非常感谢你花时间回答我的问题,赛斯先生。是的~!这就是我的计划,非常感谢。谢谢你的建议,下次我会一个接一个地做。