【问题标题】:Netlogo: move turtles to different agent setsNetlogo:将海龟移动到不同的代理集
【发布时间】:2020-08-15 07:31:15
【问题描述】:

我正在尝试模拟一个汽车生产工厂,并尝试分别列出正在工作和不在工作的海龟。

我有一个海龟自己的变量:is-on-job?

我想要代理一组没有工作的海龟not-working-turtles

我想在工作上有一组代理海龟working-turtles

每当一只乌龟在工作时,有没有办法从not-working-turtles 代理集中移除该特定乌龟并将其添加到working-turtles 代理集中?

还有一个不同的主题,有没有一种方法可以根据到特定补丁的距离对海龟进行排序,然后如果最近的海龟正在工作,然后转到第二个海龟,依此类推?

【问题讨论】:

    标签: list variables netlogo agent


    【解决方案1】:

    您可以将两个代理集创建为:

    let not-working-turtles turtles with [not is-on-job?]
    let working-turtles turtles with [is-on-job?]
    

    要将乌龟从一个移动到另一个,您需要以下代码:

    to make-me-work
      let free one-of not-working-turtles
      ask free
      [ set is-on-job? true
        set not-working-turtles other not-working-turtles
      ]
      set working-turtles (turtle-set working-turtles free)
    end
    

    在这里,我使用了非常方便的other 原语来移除正在询问的海龟。您更有可能希望将其作为一个接受参数并将海龟传递给该过程的过程来执行此操作,而不是在过程中随机选择一个,但代码将是相似的。

    关于选择最接近的问题,您不需要排序。相反,请查看 NetLogo 字典中的min-one-of。如果无法解决,请使用相关代码做一个新问题(StackOverflow 应该每个问题只有一个问题)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      相关资源
      最近更新 更多