【问题标题】:Unblock "Hold" with initially blocked在最初被阻止的情况下取消阻止“保留”
【发布时间】:2019-10-27 00:08:27
【问题描述】:

我需要把“Hold”一开始就屏蔽了。然后在队列中有座席连接到 Hold 时解除阻塞。

我尝试了两种方法: 方式1:使用属性中的选项将其设置为最初阻止,然后我在“操作”中写道:

if(queue.size() > 0 )
{ 
  hold.unblock();
}

但它没有t work. I thought that the function cant 改变选择。 因此,我尝试不选择“最初阻止”并在操作中写入:

hold.initiallyblocked = true;
if(queue.size() > 0 )
{ 
  hold.unblock();
}

但它也没有做任何事情并且被阻止。

此外,我尝试使用“获取连接号”将队列中的代理数量保存在一个变量中,然后使用 if (getconnectionnubmer >0) 取消阻止它。没用enter image description here

简而言之,我想告诉您:如果队列中有代理,请解除阻塞。如果队列为空,则阻止保持。并且必须首先被阻止

【问题讨论】:

    标签: java simulation anylogic


    【解决方案1】:

    如果您的唯一目标是至少在队列由代理填充时解除阻塞,您应该将代码放在队列块的 on enter 中......显然,如果代理进入队列,则意味着队列不为空:

    hold.unblock();
    

    如果队列为空,还可以在队列的退出部分阻止保留:

    if(self.size()==0)
        hold.block();
    

    【讨论】:

    • 谢谢你的回答,当我把 if(self.size()==0) hold.block();在“存在时”而不是“存在”中。再次感谢
    • 好吧..这取决于您是要在代理退出之前还是在代理退出之后阻止...您没有指定:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多