【问题标题】:How to sort a queue with different agent types by agent comparison in Anylogic?如何在 Anylogic 中通过代理比较对具有不同代理类型的队列进行排序?
【发布时间】:2020-08-04 23:24:31
【问题描述】:

让我们有一个模型,其中两种类型的代理到达系统:狗和猫。这个代理有一个双倍类型的参数年龄。代理进入应按年龄排序的唯一队列,然后由单个服务器提供服务并退出系统,如以下示例 Proposed model 所示。

我的第一个问题是:如何使用年龄属性通过代理比较对队列进行排序?

我面临的主要问题是队列块(与几乎所有块一样)需要在高级属性中定义单个代理类型。首先,我尝试使用代理类型“代理”直接在队列中执行此操作,因为两种实体类型的属性名称相同(queue example1),但随后出现错误“无法解决年龄或不是field”作为一般代理类型“代理”没有这样的属性。然后,我尝试将 agent1 和 agent2 转换为 dog 和 cat,如 (queue example2) 中所示,但当然在运行时我得到错误 dog can't be cast to cat 或反之亦然,因为我们不知道 agent1在给定时间将是猫或狗的类型。

考虑到我通过退出/输入块路由代理的版本,我遇到了同样的问题,我可以在输入块中使用的唯一代理类型来合并不同的代理类型是“代理”,但是随后不能使用不同坐席类型的属性年龄对队列进行排序。

我的第二个问题是:如何将 n 个代理类型路由到 x 个不同的位置,以便之后可以使用各个参数或变量而无需转换代理类型(因为我们不知道哪个会进入块) ?

【问题讨论】:

    标签: simulation anylogic


    【解决方案1】:

    您需要创建另一种称为 Animal 的代理类型,您将在其中存储年龄变量...然后 cat 和 dog 将从该代理扩展...您可以在代理的高级属性中执行此操作:

    这样,将在您的流程中使用的代理将是动物类型...因此不再需要您的第二个问题。

    【讨论】:

      猜你喜欢
      • 2022-08-20
      • 2018-03-16
      • 2015-10-15
      • 2017-11-12
      • 2020-09-12
      • 2021-10-25
      • 2020-01-01
      • 1970-01-01
      • 2018-07-09
      相关资源
      最近更新 更多