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 - 从其他代理访问变量

AnyLogic - 在仿真时动态创建对象

AnyLogic - 系统动态:如何正确跟踪股票价值?

如何对 Anylogic 中的表进行动态引用?

anylogic中的Agent连接: 我在使用Anylogic建立Agent模型时,在系统开始动态运行时,加入Agent,想让新加

启动时在 Anylogic 中更改 GIS 路由