主要内容

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

概述

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

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

模型结构

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

生产过程中的共享资源

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

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

例如,当用水量达到满负荷时,水压太低,另一个间歇反应堆无法进入。在这种情况下,反应堆的生产会暂停,直到水供应恢复正常。在Execute Chemical Process Recipe子系统中,示例使用标记的Queue块对这样的资源共享过程建模等待供水和实体服务器块标记加水在加水子系统中。的能力实体服务器块的参数表示供水能力。在模拟过程中,Queue块中的实体数量表示等待水的批反应器数量。服务器块中的实体数量表示访问水的批处理反应堆数量。

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模型,以找到该系统的最佳资源容量。遗传算法通过反复修改单个点的总体来解决优化问题。由于其随机性,遗传算法提高了您找到全局解决方案的机会。它不要求函数是可微的或连续的。

本次优化的决策变量为:

  • 批式反应器数量

  • 水箱数量

  • 加热器数量

  • 排水渠数目

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

cellfun (@ (x) close_system (x)范围);disp ('优化前的资源容量=');disp (ResourceCapacity);close_system ([modelname“/数据分析/订单积压”]);ResourceCapacity = seRunOptimizationForBatchProductionProcess();disp ('优化后的资源容量=');disp (ResourceCapacity);
优化前的ResourceCapacity = 2 2 2 2 2使用“local”配置文件启动并行池(parpool)…连接到并行池(工人数:6)。优化终止:惩罚适应度值的平均变化小于选项。FunctionTolerance和constraint违例要小于options. constraintolerance。运行时间为112.822855秒。使用“本地”配置文件的并行池正在关闭。优化后的ResourceCapacity = 13 2 4 2 .单击“确定”

应用优化结果

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

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

%的清理bdclose (modelname);清晰的模型作用域

另请参阅

|||||

相关的话题