[PlantSimulation]GAWizard遗传算法的应用(二)

来源:互联网 发布:mac有风扇声音很大 编辑:程序博客网 时间:2024/06/06 08:55

在阈值设置问题中,需要给目标值设定合适的变化范围,换句话说,就是找到一个最大值和最小值,使其在其区间内变化,从而是系统稳定、高效运行。在PlantSimulation中常见的就是优化暂存区的容量。

此次案例模型如下图所示:


各实体设置如下:M1、M2、M4的作业时间均为1min,可靠性为90%,MTTR为25min;M3作业时间为4min,可靠性为60%,MTTR为1h;模型仿真时间为50天。

本模型的目的是在每小时稳定输出40-45个产品的同时确定B1、B2、B3三个暂存区的容量。一种方法可以运用实验设计的方法,你需要将暂存区的容量从1增加至100,为了避免偶然性,每次实验假设运行10次,三个暂存区的话,意味着需要运行100*100*100*10次模型,运算量巨大。

因此,PlantSimulation提供了另一种有效的方法:遗传算法。

有关遗传算法的基本概念请看上一篇文章《遗传算法》。

1.适应度函数

在本次试验中,每小时输出小于40或者大于45均视为不合法结果(not valid)。

在这个模型的具体实现过程中,通过增加暂存区容量直至100,挑选出最合适的值,也就是保证目标输出的前提下最小的暂存区容量。

适应度函数的计算通过编写EndSim方法来实现,程序如下:

if drain.statThroughputPerHour < 40 ordrain.statThroughputPerHour > 45 then

       fitnessValue:=1000

else

       fitnessValue:=b1.capacity+b2.capacity+b3.capacity

end

2.下一步,按住shift键的同时,将B1、B2、B3拖到GAWizard图标上,此为设置需要优化的参数,设置capacity为具体的优化参数。

3. 按住shift键的同时,将全局变量fitnessValue拖到GAWizard图标上。

4.打开GAWizard,打开优化参数,进行下图设置:


5.检查适应度函数,优化目标为最小值。

6.设置每代个体数为10.

点击重置-运行,运算结果如下图所示:


原创粉丝点击