如何使用 Main 中的 (randomWhere) 选择代理

问题描述 投票:0回答:1

我想要的是根据 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个回答
0
投票

要获取索引,只需使用

getIndex()
函数。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.