【问题标题】:How do i free a Waitblock in Anylogic我如何在 Anylogic 中释放等待块
【发布时间】:2021-08-15 18:58:36
【问题描述】:

我们是一群没有太多编程经验的学生。我们的任务是模拟一个循环过程,其中门在铣床上经历至少 3 个加工步骤。我们希望优先考虑产品,例如如果一扇厚度为 43mm 的门(门上方的红色数字)在传送带 1 处,那么上面不应该有另一个厚度的门。我们的想法是使用一个等待块,它应该只在以下情况下释放下一个代理: 厚度相同或传送带 1 为空 为此,我们在图片中使用了以下代码。

enter image description here

但是代码:wait.free(agent.door);当传送带 1 上的当前代理离开时不起作用。在进行模拟时,我们没有收到错误代码。欢迎其他想法。

最好的问候

【问题讨论】:

    标签: java anylogic


    【解决方案1】:

    当传送带 1 上的当前代理离开时,输入相同的代码 wait.free(agent)

    退出时添加代码

    if(wait.size()>0) {
        AgentType x=findFirst(wait,a->a.thickness==conveyorThickness);
        if(x!=null)
               wait.free(x);
    }
    

    【讨论】:

    • 嗨,Felipe,我们如何使用您提供的但有多个条件的代码?所以例如我需要根据厚度、宽度等找到代理以摆脱等待块。我所做的唯一方法是使用 findFirst(findAll()) 的嵌套方法,但这仅允许使用 if 条件。有没有更清洁的方法?还有一种允许或调节的方法?提前致谢!
    • AgentType x=findFirst(wait,a->a.thickness==conveyorThickness && a.width==conveyorWidht && a.other==conveyorOther && a.etc==conveyorEtc);
    猜你喜欢
    • 2018-11-08
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 2019-08-24
    • 2019-03-25
    • 1970-01-01
    相关资源
    最近更新 更多