如果两种类型的代理满足条件,Java 代码选择两个资源池,一个池选择另一种类型的代理

Posted

技术标签:

【中文标题】如果两种类型的代理满足条件,Java 代码选择两个资源池,一个池选择另一种类型的代理【英文标题】:Java Code to select two pools of resources if condition is met for two types of agents, and one pool to another type of agent 【发布时间】:2021-07-26 01:05:26 【问题描述】:

我正在尝试设置以代理为条件的资源池选择。

我需要分配给类型 1 资源池 A 和其余 2 类型的其他资源。 (作为旁注,这是为了在剩下的两种类型的代理上,可以分配任何资源,并且它基于优先级参数)。

我需要这样的东西:

agent.type==1? resoursePool_A : (resoursePool_B , resoursePool_C );

  agent.type==1? resoursePool_A : resoursePool_B && resoursePool_C ;

我尝试了很多东西,但只有这段代码做的很接近:

agent.type==1? resoursePoolA : agent.type==2? resoursePoolB : nursesTypeMS;

但是,这不是我需要的,因为这将池 A 分配给类型 1,池 B 分配给类型 2,池 C 分配给类型

关于如何编码的任何提示?

【问题讨论】:

澄清一下,是打算让类型 2 和类型 3 代理随机获取资源池 B 或资源池 C,还是存在确定性条件? 优先选择类型 2,然后类型 3。(这已经通过资源选择/具有最高评级的单位/其中 rating=type 完成),它工作正常。但是,如果它是随机的,那么考虑模拟中的差异也会很有趣。 【参考方案1】:

也许这个功能可以使用两个 Seize 块来实现?当代理进入时,它们被 SelectOutput 块分隔成两个流:agent.type == 1 流到 Seize 块(我们称之为 seize1) 仅从 resourcePoolA 和所有其他代理(即 1、2)获取资源被发送到不同的 Seize 块(我们称之为 seize2) 从 resourcePoolBresourcePoolC 中选择。

您也可以使用三元表达式,如下所示:

agent.type==1? resoursePoolA : randomFrom(List.of(resoursePoolB, resourcePoolC));

上面将为类型 1 的代理选择 resourcePoolA,并为所有其他类型从 B 或 C 中随机选择。

【讨论】:

以上是关于如果两种类型的代理满足条件,Java 代码选择两个资源池,一个池选择另一种类型的代理的主要内容,如果未能解决你的问题,请参考以下文章

仅选择必须满足两个条件的记录

在 AnyLogic 中使用代理名称作为 selectOutput 的条件

java 单例模式

选择结构

9-分支选择

Java基础概述