首页 > 解决方案 > 如何在 Netlogo 中的 foreach 命令中关闭多个链接后更新链接列表

问题描述

我有一个链接列表“最大链接”:

set max-links sort-on [(- label)] link-set [max-one-of my-out-links [label]] of turtles

我将这个列表一分为二,并将 end1 的所有海龟设置在一个列表“max-turtles1”中,并将 end2 的所有海龟设置在另一个列表“max-turtles2”中。现在,我用 max-turtles1 和 max-turtles2 定义了一个 foreach:

foreach max-turtles1 max-turtles2
[
  [a b] ->
  ask a 
  [
    ask my-out-links with [not member? self keep] [die]
    set max-links sort-on [(- label)] link-set [max-one-of my-out-links [label]] of turtles
    set max-turtles1 map [k -> [end1] of k] max-links
  ]
  ask b 
  [
    ask my-in-links with [not member? self keep2] [die]
    set max-links sort-on [(- label)] link-set [max-one-of my-out-links [label]] of turtles
    set max-turtles2 map [k -> [end2] of k] max-links
  ]
]

如此处所示,“使用 [not member? self keep] [die] 询问我的链接”是为 max-turtles1 执行的,“使用 [not member?self keep2] [die] 询问我的链接”是为 max-turtles2 执行。但是,在两个列表的每次迭代之后,必须更新 max-links 列表和 max-turtles1 和 2 列表,然后 foreach 才能移动到下一个项目。我试图通过再次设置(定义)列表来管理此列表更新。但这并没有达到我的预期。

标签: netlogo

解决方案


推荐阅读