gpt4 book ai didi

constraints - NetLogo:询问有限数量的海龟,按变量的值排序

转载 作者:行者123 更新时间:2023-12-01 09:16:21 25 4
gpt4 key购买 nike

我正在尝试在 NetLogo(5.3.1,Mac Sierra 上)中对容量限制和优先级进行建模。它归结为要求有限数量的海龟(例如 n )做某些事情,并选择这些海龟,以便(1)它们满足特定条件和(2)它们是 n变量 my-variable 的最大值的海龟.

我正在尝试这样做:

let subset-of-turtles turtles with [ condition-variable = some-value ]
ask max-n-of n subset-of-turtles [ my-variable ] [< do something >]

但它有多个问题。

首先,如果没有海龟满足条件[ condition-variable = some-value ] , NetLogo 报错

Requested n random agents from a set of only 0 agents.

我尝试通过在 ask 之前插入一行来解决命令:

let subset-of-turtles turtles with [ condition-variable = some-value ]
if subset-of-turtles != nobody [
ask max-n-of n subset-of-turtles [ my-variable ] [< do something >]
]

但它不起作用:

observer> show turtles with [ condition-variable = some-value ]
observer: (agentset, 0 turtles)
observer> let subset-of-turtles turtles with [ condition-variable = some-value ] show subset-of-turtles != nobody
observer: true

NetLogo 认为空代理集仍然是代理集,因此它会通过与 nobody 不同的测试。 .

其次,即使有一些海龟满足条件,如果它们小于n,NetLogo 也会抛出同样的错误。 .我的模型是一个增长模型,其中容量意味着一开始就足够,然后达到约束。因此,这将在模型的每一次运行中发生。

我希望 NetLogo 执行 ask 中的命令最多阻止 n次。假设有m满足条件的海龟: 1.如果m <= n ,对所有m执行命令海龟 2. If m > n ,执行n的命令最高值为 my-variable 的海龟.有人可以建议吗?

最佳答案

一般来说,我不建议测试 count <agentset> = 0因为 NetLogo 仍然需要构建代理集来计算它。不过有一个很方便的any?记者为这个任务。因此,请尝试对您的原始代码进行以下修改:

let subset-of-turtles turtles with [ condition-variable = some-value ]
if any? subset-of-turtles [
ask max-n-of n subset-of-turtles [ my-variable ] [< do something >]
]

关于constraints - NetLogo:询问有限数量的海龟,按变量的值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43724387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com