. 总费用Zk?1000?(每个产品的成本+平均每个产品损失的期望)记:
zk?Ck?Ek,k=1,2,?,108
其中:
k=1,2,?,108 zk?第k种情况下平均每个产品的费用,Ck=第k种情况下每个产品的成本, k=1,2,?,108 Ek=第k种情况下平均每个产品损失的期望, k=1,2,?,108
优化的关键在于,要使这种情况下的总费用Zk取得最小,即使得平均每个产品的费用zk取得最小。
由此,可建立以下模型:
?min??s.t.zk?Ck?Ek;.?i?xki??i
第k种情况下,每件产品的零件成本为7个零件的成本之和,所以:
7 Ck??ci?1ki,i?1,2,?,7
其中cki为第k种情况下第i个零件的成本。
若记第k种情况下,Y~N(?'k,?'k),且Y的概率密度为fk(Y),则:
fk(Y)?12??'k?(Y??'k)2?'k222e,
,? ?.??其中:
??'k?Y(xk*)??27?????Y22??'?????ki?k???xi?i?1k???上式中???Y??为第k中情况下Y(x)对xi的偏导。 ?x?i?k又上式中?ki为第k中情况下,第i个零件参数的标准差。根据题意容差为均方差的3倍,所以:
?ki?13?Dn?xi*
其中,上式中的Dn是指在第k种情况下,第i个零件选取容差等级为n时
(n?1,2,3分别对应容差等级A,B,C),最大偏移量与标定值的相对值,题目中
已给出:D1?1%,D2?5%,D3?10%。
那么,第k种情况下平均每个产品损失的期望Ek为:
Ek=9000??y0?0.3??fk(Y)dY?1000??y0?0.1y0?0.3fk(Y)dY?1000??y0?0.3y0?0.1fk(Y)dY?9000????y0?0.3fk(Y)dY化简得:
Ek?9000??1????y0?0.3y0?0.3y0?0.1??fk(Y)dY?1000??fk(Y)dY?????y0?0.3?y0?0.3y0?0.1fk(Y)dY???.
于是,我们就得到了Ck,Ek的表达式。
综上所述,在综合考虑y偏离y0造成的损失和零件成本后,构建总费用Z的目标函数:
Z?min{Z1,Z2,?,Zk}, k=1,2,?,108
此目标函数表明,我们求出这108种容差等级组合以及相应零件参数标定值所对应的产品费用Zk(k=1,2,?,108)后,取Zk(k=1,2,?,108)中的最小值为要求的总费用Z,那么这个Z所对应的零件参数标定值和容差等级组合即为所求的
最优解。
六、 模型的求解
对于原设计方案,由于其容差等级组合是确定的,我们可求得参数y的概率密度函数,从而求得原设计方案中每个零件损失的期望,进而可以算得每个产品的成本,求得如下结果(如表一):
表一 总费用/万元 正品率 次品率 废品率 307.6915 12.63% 62.33% 25.04% 因为原方案中,参数y的期望是1.7256,偏离1.5较大;而方差为0.012,较小。所以大部分产品对应的y集中在1.7256附近,这样次品率很大,所以总费用很大。这与模型求解的结果是相符的。从这些数据可以看出,原方案存在明
显的缺陷。
针对我们建立的模型,对于每一种容差等级组合,可以用matlab工具中求解
非线性规划的方法解出一组解,因为有108种容差等级组合,所以就有108组解,再在这108组解中比较出总费用最小的解,即为最优解。
在用matlab工具中fmincon命令的时候容易给出局部最优解,但这与初始值的选取有关。为了尽可能的给出全局最优解,可取不同的初始值解出不同的局部最优解,再取其中总费用最小的解为最优解。
结果如下(如表二,表三):
表二 总费用/万元 正品率 次品率 废品率 42.2073 82.6% 17.4% 0%
表三 标定值 容差等级 零件一 0.0750 B 零件二 0.3750 B 零件三 0.1143 B 零件四 0.1200 C 零件五 1.2903 C 零件六 13.4292 B 零件七 0.5791 B
新的参数设计比原设计的费用降低了265.4842万元。
七、 模型的检验
7.1 用正态分布近似产品参数y分布的可靠性检验
在模型的建立中,我们把产品参数y的经验公式作了线性化处理,用正态分布近似参数y的分布,下面验证其可靠性。
一方面,对于蒙特卡洛随机数法得到的y的分布:根据假设——各个零件的参数服从正态分布且相互独立,取表三7个零件的标定值和容差等级,运用蒙特卡洛随机数法,可随机产生1000组零件参数的数据,由此可计算出1000个产品的参数y的模拟值,统计直方图如图一所示:
图一
由图形初步判断数据服从正态分布。利用统计绘图函数normplot(x)进行正态分布检验,如图二:
图二
上图说明参数y近似服从正态分布。
用matlab中的lillietest函数对参数y是否服从正态分布做灵敏度为0.01的检测,返回值h?0,故参数y确实服从正态分布。
最后对参数y进行参数估计:利用matlab软件里的命令normfit(x)估计出参数y的均值为1.4999,标准差为0.0663,均值的置信度为0.95的置信区间为
[1.4958,1.5040],标准差的置信度为0.95
的置信区间为[0.0635, 0.0693]。
所以,运用蒙特卡洛随机数法得到的参数y服从正态分布。
另一方面,对于线性化时得到的参数y的正态分布:其均值为1.4968,标准差为0.0688,它的结果和蒙特卡洛随机数法得到的参数y的均值和方差基本接近。所以假设参数y服从正态分布是可靠的。
7.2对最优解的检验
用我们建立的模型计算出来的最优解的总费用实际上是一个期望值,实际成批生产每1000个产品时的损失费都会不同。现在用蒙特卡洛随机数法,在最优解情况下,得到20个成批生产1000个产品的损失费,如表四所示:
表四
单位:万元 第1次 第2次 第3次 第4次 第5次 42100 414000 417000 443000 425000 第6次 第7次 第8次 第9次 第10次 428000 432000 404000 417000 437000 第11次 第12次 第13次 第14次 第15次 458000 417000 428000 400000 418000 第16次 第17次 第18次 第19次 第20次 421000 400000 410000 4290000 4240000 这20个数据的平均值为42.2150万元,与模型求出来的42.2073万元相差不到0.02%,所以模型较好。
八、 模型的分析
8.1 误差分析
(1)由于对产品参数y的经验函数进行了线性化近似处理,才使它服从正态分
7?(布,但是我们略去了余项
?(xi?1i?xi))*2,这里引起了一定的误差。
(2)计算机实现模拟的时候,不可避免的引起了一些误差。尤其在运用matlab软
件中的命令fmincon时,随着选取初始点的改变,最优解会有所不同,只能做到局部最优,不能解出参数y在其可行域的最优解,这里引起了一定误差。此误差可以通过多次选取不同的初始点,求取最优解之后,选取其中的最优
的一组解来减小误差。其实,这一问题可以通过偏导,取驻点讨论,从而求到x在其可行域的最优解,但是计算十分繁琐。 8.2灵敏度分析:
我们已经求解得到了零件标定值的最优解,这组最优解是在综合考虑7个零件对产品总费用的影响后得出的结果。现在,我们需评价每个零件参数对产品总