问题描述
我如何建模三个作业以始终在 Anylogic 中同时运行。使用代码对代理的路由和处理方式或服务块的编码方式进行建模。 谢谢
解决方法
几个选项(还有更多)
等待块
您可以在关键流元素之前使用 Wait
对象。
任何代理“落入”其中并永远等待......直到您手动释放它。
因此,当代理进入 Wait
块时,您可以编写一些代码来检查“我的其他 2 个所需的代理已经在这里了吗?”。
如果是这样,您可以使用 myWaitBlock.free(agent)
“释放”它们,并为需要同时离开的 3 个代理调用它。
批量
您可以将代理分批在一起,并将它们视为 1 个批次,直到您取消对它们的分批。检查 Batch
和 Unbatch
块。
如果您正在进行流程建模(您似乎是这样),这可能是对 Service 和 Delay 块如何工作的误解。如果
-
Service 块正在使用资源池(规范);将“同时”处理与可用资源一样多的代理(每个代理有 1 个资源)。
-
延迟块的容量 > 1(在这种情况下,它可以“同时”处理多少个)。
如果您想要其他东西(例如一组“同时”处理 X 个代理的资源),那么您可以使用 Ben 建议的技术:
-
批处理 --> 服务 --> 如果您总是想等待 X 个代理并一起处理它们,则取消批处理序列。
Wait 块(以及其他各种复杂性)如果您希望资源选择最多一起处理多少个代理(例如,在它们完成处理 Y 个代理后,处理下一个 Z 个代理,其中 Z
一般来说,您需要更清楚地定义您的“处理逻辑”需要什么,才能知道合适的解决方案是什么。
,