资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
实验五详细解答与分析设零件参数x=x_i, i=1.7是相互独立的随机变量; 从而y=f(x)也是随机变量, 标定值等于x的期望值等于x的均值=x_0=x_i0,设质量损失函数为L(y)=0, abs(y-1.5)0.1; L(y)=1000(元),0.1=abs(y-1.5)=0.3; 设零件的标准差为_i, i=1.7;绝对容差按规定为r_i=3*_i, i=1.7;相对容差t_i=r_i/x_i0, i=1.7; t_i 的取值只有3种,0.01,0.05,0.1; 而且t_1=0.05, t_5=0.01只有一种选择. 记向量x_0=x_i0, t=t_i; 大量生产时平均每件产品的质量损失费应该是L(y)的期望值, 它是x_0与t的函数Q(x_0,t)=EL(y), 加工零件的总成本C(t)由相对容差t决定:C(t)=sum_i(c_i(ti); 所以要优化的目标函数为Z(x_0,t)=EL(y)+C(t);记概率P_1=Pr(0.1|y-1.5|0.3); 则EL(y)=1000*P_1+9000*P_2; 假定x_i服从正态分布N(x_i0,_i),则概率P_1,P_2的精确值要用无穷积分来计算,但困难在于y的表达式较复杂,不易积分,另外x的各分量应在正数集中取值,而正态分布的取值范围是实数集. 所以我们只能用近似求法; 在x_0点展开y=f(x_0)+f(x_0)*(x-x_0)+;忽略高阶项,y的方差2_ysum_i(f(x_0)2_i*2_i)sum_i(f(x_0)_i*x_i0*t_i)2)/9;其中是梯度算子,可以利用MATLAB的符号功能求出偏导数的表达式,也可以用差商来近似代替:f(x_0)_i*x_i0*t_i/3f(x_i0*(1+t_i/6)- f(x_i0*(1-t_i/6);求得=f(x_0)及_y后,我们就可以用数学软件计算概率P_1,P_2;在MATLAB中的正态分布函数是normcdf(x, , _y),在LINGO中标准正态分布(均值为0,标准差为1)函数是PSN(x); 用MATLAB时P_1= (normcdf(1.8,f(x_0), _y) -normcdf(1.2,f(x_0), _y) -(normcdf(1.6,f(x_0), _y) -normcdf(1.4,f(x_0), _y)P_2=1-normcdf(1.8,f(x_0), _y)+normcdf(1.2,f(x_0), _y);故EL(y)=1000*P_1+9000*P_2 t的取值是离散的,共有108种可能的取法。因此这个优化问题既有连续的部分又有离散的部分,在LINGO中虽然可以做这类问题,但0-1变量太多不一定能行,我们可以固定108种情况中的每种情况,按连续模型求最小值,比较所有情况得到最小值. 当然我们也可设计算法,避免一些不必要的情况. 当某个C(t)大于以前算得的最小值时,显然不必再计算这个C(t) 对应的EL(y)了。为了不让大多数产品为次品,对于标定值x_0的要求是abs(y-1.5)0.1, 或者更小. 但注意一般不可令y=1.5, 因为总成本中的零件成本和x_0也有关. 在题中给出了x_0的范围,在LINGO中可放在BND函数中以减少约束条件(对于本题LINGO好像不行)。在MATLAB中可作为LU,UB项输入.由于这个问题的自由度较大,所以最优解不是惟一的. 但最优值应是相同的. 程序如下:不用偏导数的费用函数function L=feiyong(x,t,vt)M=1;%为使偏导数的值更精确用的因子,可取为10,不可太大,太大反而不精确fx=lingjian(x);deltay=zeros(1,7);for I=1:7; x1=x; x2=x; x1(I)=x(I)*(1-t(I)/6/M); x2(I)=x(I)*(1+t(I)/6/M); deltay(I)=(lingjian(x2)-lingjian(x1);endsigma=norm(deltay)*M;L=9000-1000*(normcdf(1.6,fx,sigma)-normcdf(1.4,fx, sigma)-8000*(normcdf(1.8,fx,sigma)-normcdf(1.2,fx, sigma)+vt; 用偏导数的费用函数 function L=feiyongg(x,t,vt)fx=lingjian(x);sigma=norm(lingjiang(x).*(x.*t)/3);L=9000-1000*(normcdf(1.6,fx,sigma)-normcdf(1.4,fx, sigma)-8000*(normcdf(1.8,fx,sigma)-normcdf(1.2,fx, sigma)+vt; 经验公式函数为function y=lingjian(x)y=174.42*(x(1)/x(5)*(x(3)/(x(2)-x(1)0.85*(1-2.62*(1-0.36*(x(2)/x(4)0.56)1.5*(x(4)/x(2)1.16)/(x(6)*x(7)0.5;经验公式函数的梯度函数为function gy=lingjiang(x)gy=x;y= lingjian(x);p=-228.4902*(x(1)/x(5)*(x(3)/(x(2)-x(1)0.85*(1/(1-2.62*(1-0.36*(x(2)/x(4)0.56)1.5*(x(4)/x(2)1.16)/(x(6)*x(7)0.5*(1-0.36*(x(2)/x(4)0.56)0.5*(1.16*(x(4)/x(2)0.16-0.1152*(x(2)/x(4)0.4);gy(4)=p/x(2);gy(2)=-y*0.85/(x(2)-x(1)-p*x(4)/(x(2)2;gy(1)=y*(1/x(1)+0.85/(x(2)-x(1);gy(3)=y*0.85/x(3);gy(5)=-y/x(5);gy(6)=-y/(2*x(6);gy(7)=-y/(2*x(7);不用梯度的主程序function tm, ymin, fmin=shejia=.05 .1 .1 .1 .1 .1 .05;nan .05 .05 .05 nan .05 .01; nan nan .01 .01 nan .01 nan; 1 2 3 3 1 3 2;b=25 20 20 50 50 10 25;nan 50 50 100 nan 25 100; nan nan 200 500 nan 100 nan;1 2 3 3 1 3 2;J,n=size(a);x=ones(1,n);t=a(1,:); vt=b(1,:);y0=.10 .30, .10, .10, 1.5, 16, .75;options=optimset(MaxFunEvals,1000000,MaxIter,1000000,TolFun,1e-8,TolX,1e-8,TolCon,1e-8,LargeScale,off,Display,off);LB=.075,.225, .075, .075, 1.125,12, .5625;UB=.125,.375,.125,.125,1.875,20,.935;fmin=Inf;while 1 Valt=sum(vt); if ValtM,z,Fval=fmincon(y)feiyong(y,t,Valt),y0,LB,UB,(y)feiyongcon(y),options); if Fvalfmin, fmin=Fval; ymin=z; tm=t; y0=z; end; end k=1; while x(k)=a(J,k) x(k)=1; t(k)=a(1,k); vt(k)=b(1,k); if k=n return; end k=k+1; end x(k)=x(k)+1;t(k)=a(x(k),k); vt(k)=b(x(k),k);end如用梯度时,把上面的程序中费用函数feiyong改为feiyongg即可 条件函数为 function C,Ceq=feiyongcon(x)y=lingjian(x);C=y-1.6,1.4-y;Ceq=;用差分(取M=1)算得的解:tm = 0.05, 0.05, 0.05, 0.1, 0.1, 0.05, 0.05; 精度为BBBCCBB,加工费275元xm =0.075, 0.375, 0.125, 0.12, 1.2659,15.0842,0.6236;fmin = 421.4221ymin= 1.4968 %很接近1.5,但不等于1.5,符合约束条件,且约束条件不是紧约束,所以说明我们提出的约束是合理的,如得到的结果正好使某约束条件为紧约束,则该约束可能是不符合实际的。用偏导数求出的解为tm=0.05, 0.05, 0.05, 0.1, 0.1, 0.05, 0.05; 精度同上x =0.075, 0.375, 0.1237, 0.12, 1.2582, 15.0788, 0.6207; %标称值稍有不同,因最优值不惟一fmin= 421.3603 %与差分法的值比较接近ymin= 1.4968 %值同上3
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号