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

Posted

技术标签:

【中文标题】在 anylogic 中为 50% 的代理分配优先级【英文标题】:Assign priority to 50% agents in anylogic 【发布时间】:2021-07-23 20:28:58 【问题描述】:

我想为我的代理分配优先级,然后基于此将它们排队。我有一个代理 Container,它有两个参数 carrier(可以是卡车或火车)和 优先级 strong> (将被分配一些值)。承运人=卡车的 50% 代理和承运人=火车的 50% 代理应分配优先级 1,休息应为零。我该怎么做?

这是我的模型。 []。我想优先将上述代理从 storage1 移动到 rackPick 块。

提前致谢。

【问题讨论】:

【参考方案1】:

这可以通过在代理中创建一个整数“优先级”字段,然后根据原始来源on at exit操作中的随机(0.5)值将其设置为0或1来实现然后检查 Queue 中的该字段以获得优先级。这不会是 50%,但对于足够多的代理来说非常接近。

【讨论】:

我没听懂你。我想选择 agent.carrier=truck 的 50% 代理和 agent.carrier=train 的 50% 代理,然后为这些选定的代理分配 agent.priority=1。能否请您详细说明如何在这里使用 random(0.5)? 您能否澄清一下您是要在创建代理时(即在 Source 组件中)还是所有代理同时创建,也许是在开始时执行此操作模拟,你想从 2 个不同的人群中选择 50%? 所以,我有一组称为 Container 的代理,其中一次生成 10 个代理。此 Container 代理具有参数载体(值:卡车、火车)。我想选择 50% 的代理,其中 agent.carrier=Truck & agent.carrier=Train 并为他们分配优先级 1。理想情况下,我希望在退出 storage1 块之前执行此操作。 在这种情况下,最简单的做法是在 RackStore 对象 'storage1' 的 on Enter 操作中使用三元运算符,如下所示:agent.priority = randomTrue(0.5) ? 1 : 0; for each类型(卡车或火车)。

以上是关于在 anylogic 中为 50% 的代理分配优先级的主要内容,如果未能解决你的问题,请参考以下文章

AnyLogic - 为代理分配编号并将其用于计算

日期参数随时间更新 Anylogic

在 AnyLogic 中为代理创建文本文件时出现 NullPointerExection 错误

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

Anylogic 将代理从代理群体分配到流体源批次

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