如何在 Anylogic 中通过代理比较对具有不同代理类型的队列进行排序?
How to sort a queue with different agent types by agent comparison in Anylogic?
让我们有一个模型,其中两种类型的代理到达系统:狗和猫。此代理有一个双精度类型的参数年龄。代理进入一个唯一的队列,该队列应按年龄排序,然后由单个服务器提供服务,然后离开系统,如以下示例所示 Proposed model.
我的第一个问题是:如何使用年龄属性通过代理比较对队列进行排序?
我面临的主要问题是队列块(几乎所有块)需要在高级属性中定义单个代理类型。首先,我尝试使用代理类型 "Agent" 直接在队列中执行此操作,因为两种实体类型 (queue example1), but then I get the error "age cannot be resolved or is not a field" as the general agent type "Agent" doesn't have such an attribute. Then, I tried casting the agent1 and agent2 to dog and cat as seen in (queue example2) 的属性名称相同,但当然在运行时我得到了错误狗不能转换为 cat 或反之亦然,因为我们无法知道 agent1 在给定时间是 cat 还是 dog 类型。
考虑到我通过 exit/enter 块路由代理的版本,我遇到了同样的问题,我可以在输入块中使用的唯一代理类型来合并不同的代理类型是 "Agent", 但不同座席类型的属性年龄不能用于对队列进行排序。
我的第二个问题是:如何将 n 个代理类型路由到 x 个不同的位置,以便之后可以使用各个参数或变量而无需强制转换代理类型(因为我们不知道哪个会进入块)?
您需要创建另一个名为 Animal 的代理类型,您将在其中存储年龄变量...然后 cat 和 dog 将从该代理扩展...您可以在代理的高级属性中执行此操作:
。
有了这个,将在您的过程中使用的代理将是动物类型...因此您的第二个问题不再需要。
让我们有一个模型,其中两种类型的代理到达系统:狗和猫。此代理有一个双精度类型的参数年龄。代理进入一个唯一的队列,该队列应按年龄排序,然后由单个服务器提供服务,然后离开系统,如以下示例所示 Proposed model.
我的第一个问题是:如何使用年龄属性通过代理比较对队列进行排序?
我面临的主要问题是队列块(几乎所有块)需要在高级属性中定义单个代理类型。首先,我尝试使用代理类型 "Agent" 直接在队列中执行此操作,因为两种实体类型 (queue example1), but then I get the error "age cannot be resolved or is not a field" as the general agent type "Agent" doesn't have such an attribute. Then, I tried casting the agent1 and agent2 to dog and cat as seen in (queue example2) 的属性名称相同,但当然在运行时我得到了错误狗不能转换为 cat 或反之亦然,因为我们无法知道 agent1 在给定时间是 cat 还是 dog 类型。
考虑到我通过 exit/enter 块路由代理的版本,我遇到了同样的问题,我可以在输入块中使用的唯一代理类型来合并不同的代理类型是 "Agent", 但不同座席类型的属性年龄不能用于对队列进行排序。
我的第二个问题是:如何将 n 个代理类型路由到 x 个不同的位置,以便之后可以使用各个参数或变量而无需强制转换代理类型(因为我们不知道哪个会进入块)?
您需要创建另一个名为 Animal 的代理类型,您将在其中存储年龄变量...然后 cat 和 dog 将从该代理扩展...您可以在代理的高级属性中执行此操作:
有了这个,将在您的过程中使用的代理将是动物类型...因此您的第二个问题不再需要。