基于列表值创建代理集 NetLogo
Creating agentset based on list values NetLogo
我想根据列表中的值对代理进行子集化。在下面的代码中,我有一个值列表,称为“ActiveID”。我想创建一个包含所有海龟的代理集,这些海龟拥有与列表“ActiveID”中的数字相匹配的海龟自己的“ID”值。我希望不隐藏具有匹配值的海龟,而隐藏所有具有不在列表中的“ID”值的海龟。
最终,列表中的每个勾号都会改变。
下面的代码不起作用,因为我一次一个地循环遍历列表“ActiveID”,导致海龟暂时变得可见,但随着代码继续在列表中移动而再次隐藏。理想情况下,我希望“ID”值与列表中的海龟相匹配的海龟不被隐藏。
globals [ ActiveID ]
turtles-own[ ID]
to setup
ca
create-agents
create-list
reset-ticks
end
to go
Activate
tick
end
to create-agents
create-turtles 20 [
set ID random 10
set size 4
set color red
setxy random-xcor random-ycor
]
end
to create-list
set ActiveID [ 0 4 9]
end
to Activate
foreach ActiveID [ ?1 ->
ask turtles [
ifelse ID = ActiveID [
set hidden? false
] [hide-turtle]]]
end ```
按正确的顺序做事肯定会有所作为。想想谁对谁做了什么也很好。
比如,列表是否让海龟做某事? ......或者海龟正在阅读列表并做某事?
如果列表在控制之中……他们如何与海龟交谈以确保它们只更改一次?
您可以隐藏所有的海龟,然后使用列表显示需要显示的海龟。
但这意味着为列表中的每个项目与海龟对话一次,然后再对话一次!
一定有更好的方法!
您可以使用 POSITION
报告器。
Position 在列表中搜索一个值,并报告该值的索引,或者 FALSE
如果该值不在列表中。
所以你会这样做:
Ask turtles
[ set hidden?
((position ID ActiveID) = false)
]
您可以创建代理集,使用 WITH
:
Let Active-Agents turtles with
[ position ID ActiveID != false ]
我想根据列表中的值对代理进行子集化。在下面的代码中,我有一个值列表,称为“ActiveID”。我想创建一个包含所有海龟的代理集,这些海龟拥有与列表“ActiveID”中的数字相匹配的海龟自己的“ID”值。我希望不隐藏具有匹配值的海龟,而隐藏所有具有不在列表中的“ID”值的海龟。
最终,列表中的每个勾号都会改变。
下面的代码不起作用,因为我一次一个地循环遍历列表“ActiveID”,导致海龟暂时变得可见,但随着代码继续在列表中移动而再次隐藏。理想情况下,我希望“ID”值与列表中的海龟相匹配的海龟不被隐藏。
globals [ ActiveID ]
turtles-own[ ID]
to setup
ca
create-agents
create-list
reset-ticks
end
to go
Activate
tick
end
to create-agents
create-turtles 20 [
set ID random 10
set size 4
set color red
setxy random-xcor random-ycor
]
end
to create-list
set ActiveID [ 0 4 9]
end
to Activate
foreach ActiveID [ ?1 ->
ask turtles [
ifelse ID = ActiveID [
set hidden? false
] [hide-turtle]]]
end ```
按正确的顺序做事肯定会有所作为。想想谁对谁做了什么也很好。
比如,列表是否让海龟做某事? ......或者海龟正在阅读列表并做某事?
如果列表在控制之中……他们如何与海龟交谈以确保它们只更改一次?
您可以隐藏所有的海龟,然后使用列表显示需要显示的海龟。
但这意味着为列表中的每个项目与海龟对话一次,然后再对话一次!
一定有更好的方法!
您可以使用 POSITION
报告器。
Position 在列表中搜索一个值,并报告该值的索引,或者 FALSE
如果该值不在列表中。
所以你会这样做:
Ask turtles
[ set hidden?
((position ID ActiveID) = false)
]
您可以创建代理集,使用 WITH
:
Let Active-Agents turtles with
[ position ID ActiveID != false ]