基于两个参数的 AnyLogic 优先级队列作为 Java 代码

Posted

技术标签:

【中文标题】基于两个参数的 AnyLogic 优先级队列作为 Java 代码【英文标题】:AnyLogic priority queue based on two parameters as Java code 【发布时间】:2020-04-15 13:23:52 【问题描述】:

在 AnyLogic 中,我的代理具有整数参数 agent.size 和 agent.height

在队列中,我想选择具有特定大小的代理,即 agent.size == 5 而不是其他代理。在尺寸领带中,我想选择高度最大的领带。我该如何建模?

我认为我应该在队列模块的基于优先级的部分中定义它。但是,我只能说agent.size,更大的尺寸将具有更高的优先级。如何调整它以提供层次结构(不是来自数据库输入,而是在运行期间更改参数)?

【问题讨论】:

【参考方案1】:

您应该将排队规则设置为“代理比较”。

你必须或多或少这样写一个条件:

agent1.size == 5  && agent1.size == agent2.size ? 
    agent1.height > agent2.height : agent1.size == 5 ?
        true : agent1.size > agent2.size

【讨论】:

太好了。我认为它虽然丢失了。在这里,如果 agent1.size == 5 和 agent2.size == 6 那么这个块代码将选择代理 2,因为条件?不会保持,将选择具有较大尺寸的那个。我认为我需要将其扩展到另一个条件,我说:i)其中一个有 5 号,另一个有另一个尺寸,然后选择第一个; ii) 它们的大小都是 5,然后是你的代码

以上是关于基于两个参数的 AnyLogic 优先级队列作为 Java 代码的主要内容,如果未能解决你的问题,请参考以下文章

如何将代理关联到优先级范围 Anylogic

在 anylogic 中为 50% 的代理分配优先级

Anylogic getRemainingTime 和函数

日期参数随时间更新 Anylogic

基于代理的 Anylogic,滑块和事件错误

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