【问题标题】:Anylogic, how to change the size of production batches dynamically?Anylogic,如何动态更改生产批次的大小?
【发布时间】:2020-09-24 20:48:53
【问题描述】:

我有一条生产线,其中一些资源可以生产成批的零件。 “源”块创建的件数批次数是参数。例如,如果您设置创建 48 件和 4 个批次,则每个批次在资源完成 12 件时关闭。例如,当我有 51 件和 4 个批次时,问题就出现了,在这种情况下,我应该有不同尺寸的批次,如 12、12、12 和最后一个有 15 件。有没有办法解决这个问题? 感谢您的建议

【问题讨论】:

    标签: simulation anylogic event-simulation


    【解决方案1】:

    关注此Sample Model。假设您的所有部件同时到达,您只需要在源块中更新 batchSize “退出时”:

    batchSize = numberOfParts/numberOfBatches;
    batchparts.set_batchSize(batchSize);
    

    然后,在批处理块上“退出时”再次更新它:

    if(queue.size()<2*batchSize){
    batchSize=batchSize+(queue.size()%batchSize);
    }
    batchparts.set_batchSize(batchSize);
    

    注意 (queue.size()%batchSize) 是 MOD 函数,它为您提供最后一批需要批处理的额外零件数量。

    如果零件没有同时到达,您可以创建一个变量 batchNumber,让您知道接下来要执行的批次数量(1 到 numberOfBatches,初始化为 1)。

    然后,您只需要在批处理块的“退出时”更新它,如下所示:

    //If the next batch is the last one, batch all the 
    //remaining quantity until completing the total number of parts
    if(batchNumber+1=numberOfBatches){
        batchSize=batchSize+(numberOfParts%batchSize);
        batchparts.set_batchSize(batchSize);
        batchNumber=1;
    }
    batchNumber=batchNumber+1;
    

    我希望这会有所帮助。

    【讨论】:

    • 谢谢 Miguel Roberto 非常感谢您的建议,但它不起作用。对不起,我是新手,我无法理解问题出在哪里,可能是因为到达的不是都在同一时刻,而是每隔 X 分钟到达
    • 如果他们没有同时到达,有一个简单的修复方法,我更新了解决方案,以便您可以实施它。让我知道它是如何工作的。
    猜你喜欢
    • 2020-09-27
    • 2020-08-05
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    相关资源
    最近更新 更多