【问题标题】:How do I prevent service block from starting如何防止服务块启动
【发布时间】:2019-11-14 22:33:54
【问题描述】:

我是 Anylogic 的新手,我想知道如果进程已经开始,是否可以在轮班结束前夕保持延迟进程。

我正在尝试在服务操作中编写一些代码,但找不到正确的代码行。

我希望流程应该停止,直到下一个资源转移开始。

【问题讨论】:

  • 欢迎来到 SO。请澄清您的具体问题或添加其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。请参阅“如何提问”页面以获得澄清此问题的帮助。
  • 嗨@Nave,请分享您正在尝试解决特定问题的更多详细信息和代码。
  • 我的进程包含一个需要一种资源的服务块。资源的可用性由轮班时间表定义。
  • 我的进程包含一个需要一种资源的服务块。资源的可用性由轮班时间表定义。我想确保在轮班结束时间(当资源可用时)之前在需要资源的服务块中启动的进程将停止,如果直到轮班结束的时间更短,甚至不会开始服务延迟时间

标签: java anylogic


【解决方案1】:

您可以使用服务块中的自定义资源选择来做到这一点:

self.delayTime(agent)<schedule.getTimeoutToNextValue()

这意味着只有当该代理的延迟时间小于下一个计划事件的时间时,才能选择该资源。

如果您对时间单位在模型上的工作方式有疑问,您可以放心,如果延迟时间以小时为单位,则可以像这样明确定义时间单位。

self.delayTime(agent, HOUR)<schedule.getTimeoutToNextValue()

确保您的模型时间以小时为单位,因为函数 getTimeoutToNextValue 将根据您在模型中使用的时间单位进行定义。

【讨论】:

  • 好的,但是现在当下一个班次开始时,该代理会留在队列中并且不会进入延迟过程。我需要定义什么,以便在下一个班次中代理将取得进展?
  • false..当轮班开始时...会进步...试试看
  • 如果你的模型没有进展,那么你做错了,我没有关于你的模型的信息来知道什么是错的......
  • 我的模型很简单。它仅包括一个延迟时间为 2 小时的服务块。资源可用性由轮班时间表定义(每天上午 8 点到下午 5 点之间)。如果我运行我的模型,从下午 4 点开始,我希望代理在第二天早上 8 点之前不会进展,但实际上它甚至在第二天也不会进展。
  • 我自己对此进行了测试,它可以工作...在这里检查我的模型:ufile.io/56oepqkd 并尝试找出有什么区别,也许你会发现你的错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多