Anylogic - 记录资源池活动

Posted

技术标签:

【中文标题】Anylogic - 记录资源池活动【英文标题】:Anylogic - recording resource pool activity 【发布时间】:2021-09-15 12:27:54 【问题描述】:

我在 anylogic 中有一个作业车间调度模型,我想为资源池(机器)做一个甘特图。在资源池操作部分中存在一个名为 On unit state change 的部分,在资源池的帮助下,它说这个字段有一个与之关联的繁忙变量。

Here is the help of resource pool.

虽然我可以在这个字段中做一个while循环,这样当busy变量为真时,我将值1添加到我的数据集中,当busy为假时,我添加值0。但问题是当我运行我的使用该 while 循环的模型我没有收到任何错误,但我的模型不再运行。

Here is the while loop.

如果有人知道该怎么做,请帮忙。提前谢谢你。

【问题讨论】:

这是您的问题的后续帖子***.com/questions/68216923/… 吗?添加到数据集的解决方案不需要while循环吗? 【参考方案1】:

是的,如果条件保持为真,while 循环很容易杀死模型。

您需要了解,只要池中的任何资源更改其状态,就会执行代码。

所以你不应该使用 while 循环,而应该使用简单的 if 语句:

if (unit.equals(theUnitMyGanttChartCaresAbout) 
    if (busy) 
        // tell Gantt chart that "unit" started being busy
     else 
        // tell Gantt chart that "unit" started being idle
    
 

【讨论】:

嗯,关键是当资源改变状态时,“On unit state change”动作执行(一次),所以while循环不会感觉:在状态更改发生后,该代码不会“保持运行”。所以这更像是对库元素的操作方式的误解。

以上是关于Anylogic - 记录资源池活动的主要内容,如果未能解决你的问题,请参考以下文章

Anylogic 抢占块 如果其他资源池忙,则从资源池中抢占资源

Anylogic中资源池中资源的维护

模型运行时资源池块左侧的 anylogic-color

如何在anylogic中模拟期间动态更改资源池的班次组大小?

Anylogic:如何仅对同一资源池的某些工作人员执行停机

Anylogic - 创建资源并添加到 ResourcePool