主要内容

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

概述

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

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

结构的模型

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

生产过程中的共享资源

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

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

例如,当用水量达到满负荷时,水压太低,另一批反应堆无法进入。在这种情况下,该反应堆的生产将暂停,直到水供应恢复正常。在Execute Chemical Process Recipe子系统中,该示例使用标记为Queue的块建模这样的资源共享过程等待供水和一个标有加水在加水子系统中。的能力实体服务器块的参数用于模拟供水容量。在模拟过程中,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模型中,为该系统找到最优的资源容量。遗传算法通过反复修改个体点的总体来解决优化问题。由于它的随机性,遗传算法提高了你找到全局解的机会。它不要求函数是可微的或连续的。

本次优化的决策变量为:

  • 批式反应器数量

  • 水箱数量

  • 数量的加热器

  • 数量的下水道

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

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

应用优化结果

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

sim (modelname);open_system ([modelname/数据分析/订单的]);

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

另请参阅

|||||

相关的话题

Baidu
map