【问题标题】:Method to create a list of taskings for resource to work on when resource becomes idle当资源空闲时为资源创建任务列表的方法
【发布时间】:2021-09-02 19:21:32
【问题描述】:

Image to illustrate point of freezing 上下文: 为生产线创建可扩展模型以提高人机优化率。将为操作员(资源)扩展模型以在多台机器(相同类型)上工作。在一台机器的工艺流程中,操作员将被多次占用和释放以执行不同的任务。

问题: 当操作员同时被多个占用块占用时,整个进程将冻结。

想法: 有没有办法创建一个列表,在当前占用资源的情况下添加任务。每当它空闲时,资源就会在任务列表上工作。也感谢任何其他解决此问题的方法!

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    如果这将成为一个复杂的模型,您可能需要考虑使用纯基于代理的方法。

    您的资源有一个JobRequest 代理的链接列表,这些代理在必要时由机器创建和发送。它们按某些优先级排序。

    然后该资源只需在下一个JobRequest 之后执行。

    不需要 ResourcePools 或 Seieze 元素。

    这通常是更强大和更灵活的方法,因为您不再受制于流程块。但显然,它需要您进行良好的控制和测试:)

    【讨论】:

    • 是否有更简单的方法或任何我可以参考的教程示例?我对 Anylogic 很陌生,提出的解决方案似乎超出了我目前的能力:)
    【解决方案2】:

    问题:当操作员正在运行时,整个过程冻结 同时在多个占用块中被占用。

    您需要更好地解释您的问题:不可能“同时在多个占用块中占用同一个操作员”(除非您使用资源选择条件或类似条件来尝试“强制”占用特定资源 - -- 即便如此,这更准确地表述为“我已经设置了资源选择条件,这意味着我最终没有可用的有效资源”。

    您的模型“冻结”代表什么?例如,这可能只是没有可用资源的自然结果,特别是如果您有很长的延迟时间或使用设置了“直到 stopDelay() 被调用”的延迟块 --- 即,您依赖于其他地方的事件您的模型从块中释放代理(并占用资源),不正确的模型设计可能意味着在某些情况下永远不会发生。 (如果您的模型由于没有可用资源而“冻结”,那么它应该在有资源时“解冻”。)

    在机器的工艺流程中,操作员将 为不同的任务多次扣押和释放。

    您可以通过将机器上的操作分解为具有不同特征的多个 Seize/Delay/Release 操作(或者根据需要围绕由某些数据驱动的一组这些操作循环的流程流)来做到这一点更加灵活/数据驱动)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 2012-06-12
      • 2015-03-24
      • 1970-01-01
      • 2021-03-16
      • 2019-01-14
      • 2019-07-15
      相关资源
      最近更新 更多