如何使用Main中的(randomWhere)选择座席

时间:2019-01-19 17:53:05

标签: anylogic

我想要的是根据代理商从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遍历agentslist,以从新列表中[ ]之间的内容获取每个agent的索引。根据此示例,此新列表将具有这些值[1,5,17]

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

有更好的方法吗?

预先感谢

1 个答案:

答案 0 :(得分:0)

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

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

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