【发布时间】: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