Netlogo:如何同时指定最小ID的海龟和第二小ID的海龟?
如何同时指定最小ID的海龟和第二小ID的海龟?下面是一个示例程序,但它不能很好地工作。特别是“询问min-one-of turtles[who+1]”我认为这个语法可能是错误的,但我不太理解。还有别的办法吗?我可能需要你的建议。多谢各位Netlogo:如何同时指定最小ID的海龟和第二小ID的海龟?,netlogo,Netlogo,如何同时指定最小ID的海龟和第二小ID的海龟?下面是一个示例程序,但它不能很好地工作。特别是“询问min-one-of turtles[who+1]”我认为这个语法可能是错误的,但我不太理解。还有别的办法吗?我可能需要你的建议。多谢各位 globals [ nb-white nb-red ] to setup clear-all reset-ticks end to go ask patch 0 0 [sprout 1] ask min-one-of turtles [wh
globals [ nb-white nb-red ]
to setup
clear-all
reset-ticks
end
to go
ask patch 0 0 [sprout 1]
ask min-one-of turtles [who] [set color white]
ask min-one-of turtles [who + 1] [set color red]
ask (turtles-on patch 0 0) [
set nb-white count turtles-here with [color = white]
set nb-red count turtles-here with [color = red]
]
end
使用
[who+1]
作为报告者将使每只海龟报告其who
数字加1-因此who
为0的海龟将报告1,而who
为1的海龟将报告2,依此类推-因此海龟的最小值不会改变
如果您必须使用不推荐的who
号码,您可以尝试:
globals [ nb-white nb-red ]
to setup
clear-all
crt 2
ask first sort turtles [ set color white ]
ask item 1 sort turtles [ set color red ]
set nb-white count turtles with [color = white]
set nb-red count turtles with [color = red]
reset-ticks
end
对海龟进行排序
返回一个按升序排列的代理列表-第一个
将返回最低的谁
(与最小一只海龟[who]
相同),第1项
第二低
编辑:
globals [ nb-white nb-red ]
to setup
clear-all
reset-ticks
end
to go
ask patch 0 0 [sprout 1]
ask first sort turtles [ set color white ]
if count turtles > 1 [
ask item 1 sort turtles [ set color red ]
]
set nb-white count turtles with [color = white]
set nb-red count turtles with [color = red]
end
重申(正如尼古拉斯所言),你应该明确地考虑,如果你真的需要使用<代码>谁<代码>数字,这通常是不需要的,这不是很好的实践,并且会引起问题。
< P>使用<代码> [WH+1 ]
作为一名报告员,将让每只海龟报告其who
数字加1-因此who
为0的海龟将报告1,而who
为1的海龟将报告2,依此类推-因此海龟的最小值不会改变
如果您必须使用不推荐的who
号码,您可以尝试:
globals [ nb-white nb-red ]
to setup
clear-all
crt 2
ask first sort turtles [ set color white ]
ask item 1 sort turtles [ set color red ]
set nb-white count turtles with [color = white]
set nb-red count turtles with [color = red]
reset-ticks
end
对海龟进行排序
返回一个按升序排列的代理列表-第一个
将返回最低的谁
(与最小一只海龟[who]
相同),第1项
第二低
编辑:
globals [ nb-white nb-red ]
to setup
clear-all
reset-ticks
end
to go
ask patch 0 0 [sprout 1]
ask first sort turtles [ set color white ]
if count turtles > 1 [
ask item 1 sort turtles [ set color red ]
]
set nb-white count turtles with [color = white]
set nb-red count turtles with [color = red]
end
重申(正如尼古拉斯所言),你应该明确地考虑,如果你真的需要使用<代码>谁<代码>数字,这通常是不需要的,这不是很好的练习,并且会引起问题。
卢克的答案是正确的,但是他特别指出,你不应该使用<代码>谁<代码>数字。如果你发现自己想用who
做任何事情,来这里问另一个问题。卢克的回答是正确的,但他特别正确地指出,你不应该使用who
数字。如果你发现自己想用who
做任何事情,来这里问另一个问题。有人很可能会建议一个更好的方法来做事情。谢谢你的回复。这是一个很棒的语法。我在我的实际模型上写下并测试了它。但是,“item”语法中有一个问题规范,同时出现以下运行错误消息。“由于列表[(turtle 0)]的长度只有1,因此没有第一个元素。”也许这个问题是因为我的模型使用了“sprout 1”,而我一直在运行,就像在示例代码中询问它一样)。在这种情况下我该怎么办?谢谢。@goodgest-你说得对,这是因为你一开始只有一只乌龟在第一次叫go
的时候。如何处理可能取决于您实际希望发生的事情,但最简单的方法可能是将项
行包装在if
语句中,以便仅当有多个海龟时才调用它。请参见编辑以获取快速示例谢谢您的回复。这是一个很棒的语法。我在我的实际模型上写下并测试了它。但是,“item”语法中有一个问题规范,同时出现以下运行错误消息。“由于列表[(turtle 0)]的长度只有1,因此没有第一个元素。”也许这个问题是因为我的模型使用了“sprout 1”,而我一直在运行,就像在示例代码中询问它一样)。在这种情况下我该怎么办?谢谢。@goodgest-你说得对,这是因为你一开始只有一只乌龟在第一次叫go
的时候。如何处理可能取决于您实际希望发生的事情,但最简单的方法可能是将项
行包装在if
语句中,以便仅当有多个海龟时才调用它。有关快速示例,请参见编辑