【发布时间】:2020-12-18 06:22:08
【问题描述】:
我有一个不太典型的情况,我不知道如何进行:
- 有两个站点位于两个不同的位置。
- 两个站点需要相同的资源。
- 一旦释放,资源就会从一个站点移动到另一个站点。所以它不断地从 1 号站到 2 号站再到 1 号站,以此类推,直到再次被扣押。这是通过从发布块的资源进程端口添加一个链接来建模的。因此,除非有条件,否则它不会完全释放。条件是有代理在同一资源的占用块队列中等待。所以它应该继续移动,直到再次需要它。棘手的部分是该资源有两个占用块,每个站点一个。代理可能已准备好并在两个站点的资源占用元素中等待。我在发布时添加了资源进程的图像。所以在“selectOuput4”它检查站 1 的占用元素是否有代理等待,如果有,资源被释放并且可以被占用。否则,它移动到站 2 并检查相同的站,但站 2。
我担心的是,可能会出现两个站点都有特工在各自的抢占区等待的情况。如何确保资源将被站点 1 的占用元素而不是站点 2 占用,反之亦然。在两个占用元素正在等待它的情况下,有没有办法控制资源的去向?还是总是随机的?
我为这篇冗长的帖子道歉,我希望我能够正确地表达我的想法。
【问题讨论】:
-
另一种提问方式如下:能否以资源位置为条件获取元素行为?我正在考虑的一个潜在解决方案是在抓住元素之前使用“等待”块。
-
所以解决方案如下:在每个占用元素之前添加一个队列块,后跟一个容量为 1 的等待块。如果等待块包含 1 个代理,则“selectOutput4”处的条件为真,因此资源将被释放,相关站之前的等待块将被释放代理。这种方式将控制哪个抓取元素正在抓取。这有意义吗?
标签: anylogic