欢迎来到天天文库
浏览记录
ID:18490911
大小:353.00 KB
页数:9页
时间:2018-09-18
《现代机械优化设计matlab编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《现代机械优化设计方法》程序指导老师:学生:学号:机电工程学院2011年12月8一、一维优化问题练习题1、黄金分割法黄金分割法的基本思想:黄金分割法是通过不断单峰区间的长度来搜索极小点的一种有效方法,它是搜索区间比例缩小,通过计算比较函数值,以确定取舍区间。黄金分割法程序框图黄金分割法matlab程序:clcsymst;f=t^2-10*t+36;a=2;b=10;c=a+0.382*(b-a);d=a+0.618*(b-a);f1=subs(f,c);f2=subs(f,d);while(abs(b-a)>=0.01)if(f1>f2)a=c;c=d;f
2、1=f2;d=a+0.618*(b-a);f2=subs(f,d);elseif(f13、向是函数值下降最快的方向,此方法是沿着负梯度方向进行搜索的无约束方法。梯度法程序框图8梯度法在matlab程序:(1)functiony=fun(x1,x2)y=4*(x1-5)^2+(x2-6)^2;%此定义子函数,并保存为fun.m文件。(2)clcsymsx1x2d;f=4*(x1-5)^2+(x2-6)^2;fx1=diff(f,'x1');fx2=diff(f,'x2');x1=8;x2=9;forn=1:100f0=subs(f);f1=subs(fx1);f2=subs(fx2);if(double(sqrt(f1^2+f2^2))<=0.04、00000001)nx1=vpa(x1)x2=vpa(x2)f0=vpa(f0)break;else8D=fun(x1-d*f1,x2-d*f2);Dd=diff(D,'d');dd=solve(Dd);x1=x1-dd*f1;x2=x2-dd*f2;endend%此为梯度法的主函数,并保存为tdf.m文件。经matlab运行结果如下:(2)牛顿法与一维搜索讲的牛顿法公式推导一样,只不过推广到n维。牛顿法收敛速度快。牛顿法程序框图8牛顿法在matlab中的程序如下:clcsymsx1x2;f=4*(x1-5)^2+(x2-6)^2;fx1=diff(f,'5、x1');fx2=diff(f,'x2');fx1x1=diff(fx1,'x1');fx1x2=diff(fx1,'x2');fx2x1=diff(fx2,'x1');fx2x2=diff(fx2,'x2');x1=8;x2=9;forn=1:100f0=subs(f);f1=subs(fx1);f2=subs(fx2);if(double(sqrt(f1^2+f2^2))<=0.000000001)nx1=vpa(x1)x2=vpa(x2)f0=vpa(f0)break;else8X=[x1x2]'-inv([fx1x1fx1x2;fx2x1fx2x26、])*[f1f2]';x1=X(1,1);x2=X(2,1);endend经matlab运行结果如下:三、约束优化方法内点法基本思想这种方法是将新目标函数定义于可行域内,迭代过程均在可行域内进行,逐步逼近最优点。内点法只能用来求解具有不等式约束的优化问题。1)在可行域内选一个初始点内点X0,初始点应选择一个离约束边界较远的可行点。2)选取适当的罚因子初值r0,降低系数c(07、g==0)&&(count8、dx1=x0(1)x2=x0(2)f=subs(f)count程序
3、向是函数值下降最快的方向,此方法是沿着负梯度方向进行搜索的无约束方法。梯度法程序框图8梯度法在matlab程序:(1)functiony=fun(x1,x2)y=4*(x1-5)^2+(x2-6)^2;%此定义子函数,并保存为fun.m文件。(2)clcsymsx1x2d;f=4*(x1-5)^2+(x2-6)^2;fx1=diff(f,'x1');fx2=diff(f,'x2');x1=8;x2=9;forn=1:100f0=subs(f);f1=subs(fx1);f2=subs(fx2);if(double(sqrt(f1^2+f2^2))<=0.0
4、00000001)nx1=vpa(x1)x2=vpa(x2)f0=vpa(f0)break;else8D=fun(x1-d*f1,x2-d*f2);Dd=diff(D,'d');dd=solve(Dd);x1=x1-dd*f1;x2=x2-dd*f2;endend%此为梯度法的主函数,并保存为tdf.m文件。经matlab运行结果如下:(2)牛顿法与一维搜索讲的牛顿法公式推导一样,只不过推广到n维。牛顿法收敛速度快。牛顿法程序框图8牛顿法在matlab中的程序如下:clcsymsx1x2;f=4*(x1-5)^2+(x2-6)^2;fx1=diff(f,'
5、x1');fx2=diff(f,'x2');fx1x1=diff(fx1,'x1');fx1x2=diff(fx1,'x2');fx2x1=diff(fx2,'x1');fx2x2=diff(fx2,'x2');x1=8;x2=9;forn=1:100f0=subs(f);f1=subs(fx1);f2=subs(fx2);if(double(sqrt(f1^2+f2^2))<=0.000000001)nx1=vpa(x1)x2=vpa(x2)f0=vpa(f0)break;else8X=[x1x2]'-inv([fx1x1fx1x2;fx2x1fx2x2
6、])*[f1f2]';x1=X(1,1);x2=X(2,1);endend经matlab运行结果如下:三、约束优化方法内点法基本思想这种方法是将新目标函数定义于可行域内,迭代过程均在可行域内进行,逐步逼近最优点。内点法只能用来求解具有不等式约束的优化问题。1)在可行域内选一个初始点内点X0,初始点应选择一个离约束边界较远的可行点。2)选取适当的罚因子初值r0,降低系数c(07、g==0)&&(count8、dx1=x0(1)x2=x0(2)f=subs(f)count程序
7、g==0)&&(count8、dx1=x0(1)x2=x0(2)f=subs(f)count程序
8、dx1=x0(1)x2=x0(2)f=subs(f)count程序
此文档下载收益归作者所有