主要内容

批量生产过程中共享资源的优化

概述

这个例子展示了如何建模和优化系统中共享资源的使用,以识别资源不足和改进容量规划。该示例基于批量生产过程,其中生产订单仅根据批量反应器的可用性进行处理。在本例中,SimEvents®实体代表了制造过程的生产订单,以及处理这些订单所需的批处理反应器。在后面的例子中,我们将运用MATLAB全局优化工具箱中的遗传算法求解器来求解系统的最优资源容量。

modelname =“seBatchProduction”;open_system (modelname);范围= find_system (modelname,“LookUnderMasks”“上”“BlockType”“范围”);cellfun (@ (x) close_system (x)范围);set_param (modelname“SimulationCommand”“更新”);

结构的模型

在模型的顶层,实体生成器通过生成表示生产订单的实体来模拟生产订单的生成和积压。生成新实体时,获取反应器块请求批式反应器处理订单。在执行化学工艺配方子系统完成订单一致后根据指定的化学工艺配方,标有“释放反应器”的区块将批式反应器释放回资源池,现在可用于处理新订单。数据分析子系统分析与生产订单完成相关的数据。

生产过程中的共享资源

执行化学过程配方子系统模拟产生溶胶(一种胶体)的化学过程。六步配方模拟溶胶生产中的主要操作。执行这些步骤需要不同的资源。间歇式反应器提供内置功能,以执行添加颜色、添加颗粒和搅拌等步骤。因此,这些步骤所需的资源不需要单独建模。另一方面,加水、加热和排水的步骤需要额外的资源。这些资源由所有间歇反应器共享,并受到生产系统容量的限制。

open_system ([modelname“/执行化学工艺配方”]);

例如,当用水达到满负荷时,水压过低,另一个间歇式反应器无法进入。在这种情况下,该反应器中的生产暂停,直到供水再次可用。在“执行化学工艺配方”子系统中,该示例使用标记为等待供水和一个实体服务器块标记加水在加水子系统中。的容量Entity Server块的参数表示供水容量。在模拟过程中,Queue块中的实体数量表示等待进水的批处理反应器的数量。Server块中的实体数量表示访问水的批处理反应堆的数量。

open_system ([modelname“/执行化学工艺配方/加水”]);

模拟的批量生产工艺能够生产两种类型的批次:A型和B型。尽管生产任一批次所需的主要步骤相同,但化学工艺配方不同。例如,生产B型的配方需要更多的水,因此加水步骤需要更多的时间才能完成。

结果和显示

在模拟过程中,数据分析子系统显示多个结果,以显示生产过程的性能。

最能说明问题的结果是第一个,积压订单的平均数量,表示订单的等待时间,因为系统努力跟上流入。

sim (modelname);open_system ([modelname“/数据分析/订单积压”]);

系统的其他结果包括以下内容,可在数据分析子系统中看到:

  • 等待水的平均批次数

  • 等待加热的平均批次数

  • 等待排放的平均批次数

  • 间歇式反应器的利用

  • 供水利用

  • 供热利用

  • 排水设施的利用

  • A型批的吞吐量

  • B型批的生产量

open_system ([modelname“/数据分析/等待供水”]);open_system ([modelname“/数据分析/等待热量”]);open_system ([modelname“/数据分析/等待排放”]);open_system ([modelname/数据分析利用反应堆的]);open_system ([modelname/数据分析利用水的]);open_system ([modelname“/数据分析/利用率”]);open_system ([modelname“/数据分析/利用率”]);open_system ([modelname“数据分析/ ThroughputA”]);open_system ([modelname“数据分析/ ThroughputB”]);

优化资源的能力

现在,我们将MATLAB全局优化工具箱中的遗传算法求解器应用于该SimEvents模型,以找到该系统的最佳资源容量。遗传算法通过反复修改单个点的总体来解决优化问题。由于其随机性,遗传算法提高了您找到全局解决方案的机会。它不要求函数是可微的或连续的。

此优化中的决策变量为:

  • 间歇反应器的数量

  • 水箱数量

  • 加热器数量

  • 排水沟数量

遗传算法在通过变量resourceccapacity运行模型的多次模拟时设置这些变量。资源容量的起始值如下所示:

cellfun(@(x)关闭系统(x),范围;显示('优化前的资源容量='); disp(资源能力);关闭系统([modelname“/数据分析/订单积压”]);ResourceCapacity = seRunOptimizationForBatchProductionProcess ();disp ('优化后的资源容量=');disp (ResourceCapacity);
使用'local'配置文件启动并行池(parpool)…连接到并行池(worker的数量:6)。优化终止:惩罚适应度值的平均变化小于选项。函数容忍度和约束违背小于options. constraintolerance。运行时间为112.822855秒。使用“本地”配置文件的并行池正在关闭。优化后的资源容量= 13 2 4 2

应用优化结果

我们现在可以在将优化过程的结果应用回模型后重新模拟,以看到这显著减少了订单积压。

sim (modelname);open_system ([modelname“/数据分析/订单积压”]);

%的清理bdclose (modelname);清晰的模型范围

另请参阅

|||||

相关话题