Anylogic,如何动态更改生产批次的大小?
Posted
技术标签:
【中文标题】Anylogic,如何动态更改生产批次的大小?【英文标题】:Anylogic, how to change the size of production batches dynamically? 【发布时间】:2020-09-24 20:48:53 【问题描述】:我有一条生产线,其中一些资源可以生产成批的零件。 “源”块创建的件数和批次数是参数。例如,如果您设置创建 48 件和 4 个批次,则每个批次在资源完成 12 件时关闭。例如,当我有 51 件和 4 个批次时,问题就出现了,在这种情况下,我应该有不同尺寸的批次,如 12、12、12 和最后一个有 15 件。有没有办法解决这个问题? 感谢您的建议
【问题讨论】:
【参考方案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 分钟到达 如果他们没有同时到达,有一个简单的修复方法,我更新了解决方案,以便您可以实施它。让我知道它是如何工作的。以上是关于Anylogic,如何动态更改生产批次的大小?的主要内容,如果未能解决你的问题,请参考以下文章
anylogic中的Agent连接: 我在使用Anylogic建立Agent模型时,在系统开始动态运行时,加入Agent,想让新加