Anylogic:释放特定资源

Anylogic: Release specific resource

AnyLogic 资源还有一个小问题。

我希望能够从资源池中释放特定资源 - 而不仅仅是池中的任何资源。原因是我偶尔会从资源池中获取多个资源(一次一个),然后希望一次一个地再次释放资源。但是我不想从池中释放“任何”资源,我希望能够指定要释放池的哪个特定资源。

这是可能的还是资源实施的限制之一?

我可以根据情况想出很多方法...第一个是在发布之前使用selectOutput 来确定发布与否。 selectOutput 将检查它是否是要释放的正确资源

另一种选择,如果你想用相同的释放块但按给定的顺序释放所有东西,你可以在释放块之前放一个等待块,等待合适的时间释放资源

还有一种,就是使用wrap-up动作,在wrap-up里面放一个wait block,等待其他资源到达那里再释放,这样就可以按顺序释放了

使用标准占用块释放特定资源的唯一方法是指定您要释放在特定占用块中占用的资源

这意味着您需要尽可能多的占用和释放块,因为您希望控制释放过程。即,如果您占用 5 个资源类型并希望在流程图过程中将它们 1 个释放 1 个,您将需要 5 个占用块和 5 个释放块。

以前对我们有用的一种方法是使用单独的代理来获取资源。例如:

  1. 假设有主WorkItem代理
  2. 当需要资源时,Split 块用于生成名为 ResourceHolder
  3. 的新代理
  4. 然后新的ResourceHolder使用正常的Seize
  5. 获取资源
  6. 之后 ResourceHolder 使用 Combine.
  7. 携带单位加入回 WorkItem

ResourceHolder 必须存储在 WorkItem 中的某个地方,并且应该构建它以能够分辨它携带的是哪个资源单元(即原始资源池、资源类型、何时被抓住等)。然后当只需要释放一个特定的资源单元时,模型需要通过ReleaseWorkItem和运行中找到合适的ResourceHolder堵塞。这有点麻烦,但绝对可以很好地控制发布逻辑。