【问题标题】:How to stop or suspend and restart “service delay" or the "delay" blocks from the agent based diagram?如何从基于代理的图表中停止或暂停和重新启动“服务延迟”或“延迟”块?
【发布时间】:2021-07-12 04:25:44
【问题描述】:

按照您的建议,我正在构建小型模型来学习如何使用 AnyLogic 并构建我的仿真。 我需要与基于代理交互的离散事件图,其中基于代理将表示基于先前建议的“服务流程”,它直接触发基于代理的活动,但我无法停止或暂停或延迟“延迟”块,我尝试使用“直到 stopDelay 被调用”功能,但我无法使其工作,我决定在离散事件代理中使用和循环事件进行测试,但这是不可能的。我正在考虑我的方法可能不正确,我需要在基于代理的进程运行时使用不同的策略来停止离散事件进程,但是由于基于代理的试图模拟一些人类行为,我很感兴趣在时间变化中,这可能导致离散事件过程。 所以我的问题是如何停止或暂停“服务延迟或延迟块并从基于代理的图表重新启动它们?

【问题讨论】:

    标签: anylogic hybrid suspend agent-based-modeling discrete


    【解决方案1】:

    如果您只需要在某处存储实体直到代理进程完成,那么我建议使用“等待”块而不是“延迟”。延迟的全部意义在于有一个定时退出,因此暂停它与预期的用例不符。你可以阅读更多关于“等待”块here的信息。

    【讨论】:

    • 感谢您的评论,我已经能够停止并重新启动进程,但是,我需要“延迟”或“服务”块来表示由基于代理的状态图管理的进程,在我正在考虑暂停/恢复功能将允许我模拟我试图反映的过程,但我需要弄清楚如何告诉“延迟”块“延迟时间”是总时间基于代理的模型中的状态图转换。
    • 澄清一下,您是说当实体进入延迟块时不知道延迟某事所需的时间,而是当实体进入时它会在某些状态图中触发动作并且不能离开,直到该状态图进入另一个状态。那是对的吗?如果是这样,您能否解释一下是什么要求促使您选择“延迟”或“服务”块而不是“等待”?
    【解决方案2】:

    我找到了 Job Shop 模型示例,一些块使用 stopDelayForAll(),带有一个“if”代码块,所以我注意到它使用了一个参数,所以我做了一些更改和我正在使用的代码工作是这样的:
    如果 ( 排队 >= queCap ) delay.stopDelayForAll();
    “inqueue”是一个从延迟块中捕获数据的变量,queCap是一个告诉队列块容量的参数。

    【讨论】:

      猜你喜欢
      • 2021-10-22
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多