主要内容

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

概述

此示例显示如何模拟和优化系统中共享资源的使用,以识别资源缺陷并提高容量规划。该示例基于批量生产过程,其中仅根据批量反应器的可用性处理生产订单。在该示例中,Simevents®实体代表了制造过程的生产订单,以及处理它们所需的批量电抗器。在该示例中,我们将通过应用MATLAB全局优化工具箱的遗传算法求解器找到系统的最佳资源容量。

modelname =.'sebatchproduction';Open_System(ModelName);scopes = find_system(modelname,'看起来很疯狂''在''blocktype''范围');cellfun (@ (x) close_system (x)范围);set_param(modelname,'simulationcommand'“更新”);

模型结构

在模型的顶层,实体生成器通过生成表示生产订单的实体来模拟生产订单的生成和待定。当一个新实体生成时,Obtain Reactor块请求一个批处理反应器来处理订单。在Execute Chemical Process Recipe子系统根据指定的化学工艺配方完成订单之后,标签为Release Reactor的块将批处理反应器释放回资源池,现在可以在那里处理新订单。数据分析子系统分析与生产订单完成相关的数据。

在生产过程中共享资源

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

Open_System([ModelName'/执行化学工艺配方']);

例如,当水的使用达到全部容量时,水的压力太低,另一个批处理反应器无法使用。在这种情况下,反应堆的生产暂停,直到供水再次可用。在Execute Chemical Process Recipe子系统中,示例使用标记为Queue的块对这样的资源共享进程进行建模等待供水标记为一个实体服务器块加水在添加水子系统中。这容量实体服务器块的参数模拟供水的容量。在仿真期间,队列块中的实体数量表示等待水的批量反应器的数量。服务器块中的实体数表示访问水的批量反应器的数量。

Open_System([ModelName'/执行化学过程配方/添加水']);

模型中的批生产过程能够生产两种类型的批次:A型和b型。尽管生产这两种批次所需的主要步骤是相同的,但化学工艺配方是不同的。例如,生产B型血的配方需要更多的水,所以加水的步骤需要更多的时间来完成。

并显示结果

在仿真过程中,数据分析子系统显示了几个结果来显示生产过程的性能。

这里最具说明性的结果是第一个,积压中的平均订单数,这代表了订单的等待时间,因为系统努力跟上流入。

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

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

  • 等待水的平均批次数

  • 等待加热的平均批次数

  • 等待排水的平均批数

  • 间歇式反应器的利用

  • 供水利用

  • 供热的利用

  • 排水设施的使用

  • 批量吞吐量

  • 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'/数据分析/吞吐机']);Open_System([ModelName'/数据分析/吞吐量]);

优化资源能力

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

此优化中的决策变量是:

  • 分批反应器数

  • 水箱数量

  • 数量的加热器

  • 数量的下水道

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

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

应用优化结果

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

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

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

也可以看看

|||||

相关的话题