【问题标题】:How to select agents using (randomWhere) from Main如何使用 Main 中的 (randomWhere) 选择代理
【发布时间】:2019-01-20 02:38:53
【问题描述】:

我想要的是根据 Main 中的参数随机选择代理。因此,我不想通过索引选择代理 - agent.get(i) - 我想通过其属性随机选择代理。

如果有这样的可能,我会很高兴:

agent.get(randomWhere(agent, a -> a.age > 50 && a.health == "good" && ...));

我知道randomWhere 函数将返回代理,而不是它的索引。那么有没有可以直接执行此操作的函数?

我想到的解决方法是:

1- 使用过滤功能列出所有代理:

List agentslist = filter( agent, p -> p.p_gender == false && ...);

这将返回类似:

[root.agent[1]( p_gender = false,...),root.agent[5]( p_gender = false,...),root.agent[17]( p_gender = false,...)]

2- 我使用Regex 遍历代理列表,以从新列表中[ ] 之间的内容获取每个代理的索引。根据此示例,此新列表将具有这些值 [1,5,17]

3- 最后,我从新列表中随机选择,并直接在agent.get(i) 中输入它的值。

有没有更好的方法来做到这一点?

提前致谢,

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    要获取索引,只需使用getIndex() 函数。

    int index=randomWhere(yourAgents,a->a.age>50 && a.health.equals("good")).getIndex();
    agent.get(index);
    

    请记住在比较字符串时使用 equals()...“==”仅对基元有效。

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 1970-01-01
      • 2021-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多