机械优化设计课本中编程实例

合集下载

机械优化设计实验c语言程序

机械优化设计实验c语言程序

二次插值法#include "stdio.h"#include "math.h"#include "conio.h"void main(){float *area(float a1,float p,float a[3]);float f(float x);float ar,fr;float a2,a3;float f1,f2,f3;float a1=10,p=0.01,e=0.00001;float pa[3];area(a1,p,pa);a1=pa[0];a2=pa[1];a3=pa[2];f1=f(a1);f2=f(a2);f3=f(a3);do{ar=((a3*a3-a2*a2)*f1+(a1*a1-a3*a3)*f2+(a2*a2-a1*a1)*f3); ar=ar/2/((a3-a2)*f1+(a1-a3)*f2+(a2-a1)*f3);fr=f(ar);if(ar>a2){if(fr>f2){a3=ar;f3=fr;}else if(fr<f2){a1=a2;f1=f2;a2=ar;f2=fr;}else{a3=ar;a1=a2;a2=(a1+a3)/2;f1=f2;f3=fr;f2=f(a2);}}else if(ar<a2){if(fr>f2){a1=ar;f1=fr;}else if(fr<f2){a3=a2;f3=f2;a2=ar;f2=fr;}else{a1=ar;a3=a2;a2=(a1+a3)/2;f1=fr;f3=f2;f2=f(a2);}}if(fabs(a1-a3)<=e) break;}while(1);if(f2<fr){ar=a2;fr=f2;}printf("\nx*=%f\nf(x*)=%f",ar,fr);}float *area(float a1,float p,float a[3]){float f(float x);float a2,f2,a3,f3,temp;float acc=0.01;float f1=f(a1);float p;while(1){a2=a1+p;f2=f(a2);if(f2>=f1){if(fabs(f2-f1)<acc)p=p/2;elsep=-p;}else break;}while(1){a3=a2+p;f3=f(a3);if(f2<=f3) break;p=2*p;a1=a2;f1=f2;a2=a3;f2=f3;}if(a1>a3){temp=a1;a1=a3;a3=temp;}a[0]=a1;a[1]=a2;a[2]=a3;return a;}float f(float x){float y=pow(x,4)-4*pow(x,3)-6*pow(x,2)-16*x+4;return y;}变尺度法计算f(x1,x2)=x1^2+2*x2^2-4*x1-2*x1*x2 的无约束极值,初始点x0=[1,1]。

第八章机械优化设计应用实例

第八章机械优化设计应用实例
给定初始步长 三,计算结果 最优点
最优值 上面的最优解是连续性的,需进一步离散化处理,从略。
1,确定设计变量
铰链四杆机构按主从动连架杆给定的角度对应关系进行 设计时,各杆长度按同一比例缩放并不影响主,从动杆转 角的对应关系。因此可把曲柄长度作为单位长度,即令 L1=1,其余三杆表示为曲柄长度的倍数,用其相对长度l2, L3,l4作为变量。一般考虑,本问题与初始角 , 也有 关系,所以变量本应为l2,l3,l4, 和 五个。但是两 转角变量并不是独立变量,而是杆长的函数。写出如下式
D:
二,选择优化方法及结果分析
该题维数较低,用哪一种优化方法都适宜。这里选用约束 坐标轮换法。
计算时,曾用若干组不同的初始数据进行计算,从中选出 其中三组。见课本表8.1
由其中的计算结果可以看出,第二次计算结果应为最优解。
, 为相对杆长。最后,根据机构的结构设计需要按一定 的比例尺求出机构实际杆长L1,L2,L3,L4。
由余弦定理a图
整理得约束条件 同理由上页b图传动角最小位置写出 整理得约束条件
⑵按曲柄存在条件建立约束条件 写成约束条件有
用全部约束条件画成次下图所示的平面曲线,则可见, g3(x)~g7(x)均是消极约束。而可行域D实际上只是由g1(x) 与g2(x)两个约束条件围成的。综合上述分析,本题的优 化数学模型如下
输 出 角 函 数 图
对于该机构设计问题,可以取机构输出角的平方偏差 最小为原则建立目标函数。为此,将曲柄转角为
的区间分成n等分,从动摇杆输出角也有相对
应的分点。若各分点标号记作i,以各分点输出角的偏差 平方和作为目标函数,则有
式中的有关参数按如下步骤及公式计算 ①曲柄各等分点的转角
②期望输出角 ③实际输出角

机械优化设计_经典实例

机械优化设计_经典实例

1.5 f max
1

1 321
x1 x22
1

0
g5 (x) x1 0
g6 (x) x2 0
盖板优化实例
f (x) 2 60t 2 0.5h 120 x1 x2
盖板优化实例
g1 ( x)

1
1 4
x2

0
7 g2 (x) 1 45 x1x2 0
目标函数:
f (x) 2 60t 2 0.5h 120 x1 x2
约束:
g1 ( x)

[ ] max
1

1 4
x2
1
0
g2 (x)

[ ] max
1
7 45
x1 x2
1

0
g3 (x)

c max
1

7 45
x13 x2
1
0
g4 (x)
第2部分 优化计算工具
2.1 线性规划优化函数 2.2 无约束非线性优化函数 2.3 约束优化函数
MATLAB解决的线性规划问题的标准形式为:
min cT x s.t. Ax b, x 0
A (aij )mn , x (x1, x2, x3,...xn )T c (c1, c2, )T ,b (b1,b2,...bm )T ,且b 0
a2

1 b2

an

1 bn

(a、b维数必须相同)
1.4 源文件(M-文件)
分为两类: 函数文件和非函数文件 都用扩展名.M
1.4.1 函数文件(相当于子程序)

机械优化设计c语言程序

机械优化设计c语言程序

计算f(x1,x2)=x0^2+x1^2-x0*x1-10*x0-4*x1+60#include "stdio.h"#include "stdlib.h"#include "math.h"double objf(double x[]){double ff;ff=x[0]*x[0]+x[1]*x[1]-x[0]*x[1]-10*x[0]-4*x[1]+60;return(ff);}void jtf(double x0[],double h0,double s[],int n,double a[],double b[]) {int i;double *x[3],h,f1,f2,f3;for(i=0;i<3;i++)x[i]=(double *)malloc(n*sizeof(double));h=h0;for(i=0;i<n;i++)*(x[0]+i)=x0[i];f1=objf(x[0]);for(i=0;i<n;i++)*(x[1]+i)=*(x[0]+i)+h*s[i];f2=objf(x[1]);if(f2>=f1){h=-h0;for(i=0;i<n;i++)*(x[2]+i)=*(x[0]+i);f3=f1;for(i=0;i<n;i++){*(x[0]+i)=*(x[1]+i);*(x[1]+i)=*(x[2]+i);}f1=f2;f2=f3;}for(;;){h=2*h;for(i=0;i<n;i++)*(x[2]+i)=*(x[1]+i)+h*s[i];f3=objf(x[2]);if(f2<f3) break;else{ for(i=0;i<n;i++){*(x[0]+i)=*(x[1]+i);*(x[1]+i)=*(x[2]+i);}f1=f2;f2=f3;}}if(h<0)for(i=0;i<n;i++){a[i]=*(x[2]+i);b[i]=*(x[0]+i);}elsefor(i=0;i<n;i++){a[i]=*(x[0]+i);b[i]=*(x[2]+i);}for(i=0;i<3;i++)free(x[i]);}double gold(double a[],double b[],double eps,int n,double xx[]) {int i;double f1,f2,*x[2],ff,q,w;for(i=0;i<2;i++)x[i]=(double *)malloc(n*sizeof(double));for(i=0;i<n;i++){*(x[0]+i)=a[i]+0.618*(b[i]-a[i]);*(x[1]+i)=a[i]+0.382*(b[i]-a[i]);}f1=objf(x[0]);f2=objf(x[1]);do{if(f1>f2){for(i=0;i<n;i++){b[i]=*(x[0]+i);*(x[0]+i)=*(x[1]+i);}f1=f2;for(i=0;i<n;i++)*(x[1]+i)=a[i]+0.382*(b[i]-a[i]);f2=objf(x[1]);}else{ for(i=0;i<n;i++){a[i]=*(x[1]+i);*(x[1]+i)=*(x[0]+i);}f2=f1;for(i=0;i<n;i++)*(x[0]+i)=a[i]+0.618*(b[i]-a[i]);f1=objf(x[0]);}q=0;for(i=0;i<n;i++)q=q+(b[i]-a[i])*(b[i]-a[i]);w=sqrt(q);}while(w>eps);for(i=0;i<n;i++)xx[i]=0.5*(a[i]+b[i]);ff=objf(xx);for(i=0;i<2;i++)free(x[i]);return(ff);}double oneoptim(double x0[],double s[],double h0,double epsg,int n,double x[]) {double *a,*b,ff;a=(double *)malloc(n*sizeof(double));b=(double *)malloc(n*sizeof(double));jtf(x0,h0,s,n,a,b);ff=gold(a,b,epsg,n,x);free(a);free(b);return (ff);}double powell(double p[],double h0,double eps,double epsg,int n,double x[]) {int i,j,m;double *xx[4],*ss,*s;double f,f0,f1,f2,f3,fx,dlt,df,sdx,q,d;ss=(double *)malloc(n*(n+1)*sizeof(double)); s=(double *)malloc(n*sizeof(double));for(i=0;i<n;i++){for(j=0;j<=n;j++)*(ss+i*(n+1)+j)=0;*(ss+i*(n+1)+i)=1;}for(i=0;i<4;i++)xx[i]=(double *)malloc(n*sizeof(double));for(i=0;i<n;i++)*(xx[0]+i)=p[i];for(;;){for(i=0;i<n;i++){*(xx[1]+i)=*(xx[0]+i);x[i]=*(xx[1]+i);}f0=f1=objf(x);dlt=-1;for(j=0;j<n;j++){for(i=0;i<n;i++){*(xx[0]+i)=x[i];*(s+i)=*(ss+i*(n+1)+j);}f=oneoptim(xx[0],s,h0,epsg,n,x);df=f0-f;if(df>dlt){dlt=df;m=j;}}sdx=0;for(i=0;i<n;i++)sdx=sdx+fabs(x[i]-(*(xx[1]+i)));if(sdx<eps){free(ss);free(s);for(i=0;i<4;i++)free(xx[i]);return(f);}for(i=0;i<n;i++)*(xx[2]+i)=x[i];f2=f;for(i=0;i<n;i++){*(xx[3]+i)=2*(*(xx[2]+i)-(*(xx[1]+i)));x[i]=*(xx[3]+i);}fx=objf(x);f3=fx;q=(f1-2*f2+f3)*(f1-f2-dlt)*(f1-f2-dlt);d=0.5*dlt*(f1-f3)*(f1-f3);if((f3<f1)||(q<d)){if(f2<=f3)for(i=0;i<n;i++)*(xx[0]+i)=*(xx[2]+i);elsefor(i=0;i<n;i++)*(xx[0]+i)=*(xx[3]+i);}else{for(i=0;i<n;i++){*(ss+(i+1)*(n+1))=x[i]-(*(xx[1]+i));*(s+i)=*(ss+(i+1)*(n+1));}f=oneoptim(xx[0],s,h0,epsg,n,x);for(i=0;i<n;i++)*(xx[0]+i)=x[i];for(j=m+1;j<=n;j++)for(i=0;i<n;i++)*(ss+i*(n+1)+j-1)=*(ss+i*(n+1)+j);}}}void main(){double p[]={1,2};double ff,x[2];ff=powell(p,0.3,0.001,0.0001,2,x);printf("x[0]=%f,x[1]=%f,ff=%f\n",x[0],x[1],ff); getchar();}。

机械优化设计经典实例

机械优化设计经典实例

机械优化设计经典实例机械优化设计是指通过对机械结构和工艺的改进,提高机械产品的性能和技术指标的一种设计方法。

机械优化设计可以在保持原产品功能和形式不变的前提下,提高产品的可靠性、工作效率、耐久性和经济性。

本文将介绍几个经典的机械优化设计实例。

第一个实例是汽车发动机的优化设计。

汽车发动机是汽车的核心部件,其性能的提升对汽车整体性能有着重要影响。

一种常见的汽车发动机优化设计方法是通过提高燃烧效率来提高功率和燃油经济性。

例如,通过优化进气和排气系统设计,改善燃烧室结构,提高燃烧效率和燃油的利用率。

此外,采用新材料和制造工艺,减轻发动机重量,提高动力性能和燃油经济性也是重要的优化方向。

第二个实例是飞机机翼的优化设计。

飞机机翼是飞机气动设计中的关键部件,直接影响飞机的飞行性能、起降性能和燃油经济性。

机翼的优化设计中,常采用的方法是通过减小机翼的阻力和提高升力来提高飞机性能。

例如,优化机翼的气动外形,减小阻力和气动失速的风险;采用新材料和结构设计,降低机翼重量,提高飞机的载重能力和燃油经济性;优化翼尖设计,减小湍流损失,提高升力系数。

第三个实例是电机的优化设计。

电机是广泛应用于各种机械设备和电子产品中的核心动力装置。

电机的性能优化设计可以通过提高效率、减小体积、降低噪音等方面来实现。

例如,采用优化电磁设计和轴承设计,减小电机的损耗和噪音,提高效率;通过采用新材料和工艺,减小电机的尺寸和重量,实现体积紧凑和轻量化设计。

总之,机械优化设计在提高机械产品性能和技术指标方面有着重要应用。

通过针对不同机械产品的特点和需求,优化设计可以提高机械产品的可靠性、工作效率、耐久性和经济性。

这些经典实例为我们提供了有效的设计思路和方法,帮助我们在实际设计中充分发挥机械优化设计的优势和潜力。

机械优化设计三个案例

机械优化设计三个案例

机械优化设计案例11. 题目对一对单级圆柱齿轮减速器,以体积最小为目标进行优化设计。

2。

已知条件已知数输入功p=58kw ,输入转速n 1=1000r/min ,齿数比u=5,齿轮的许用应力[δ]H =550Mpa ,许用弯曲应力[δ]F =400Mpa 。

3.建立优化模型3。

1问题分析及设计变量的确定由已知条件得求在满足零件刚度和强度条件下,使减速器体积最小的各项设计参数。

由于齿轮和轴的尺寸(即壳体内的零件)是决定减速器体积的依据,故可按它们的体积之和最小的原则建立目标函数.单机圆柱齿轮减速器的齿轮和轴的体积可近似的表示为:]3228)6.110(05.005.2)10(8.0[25.087)(25.0))((25.0)(25.0)(25.0222122212221222212212122221222120222222222121z z z z z z z z z z z g g z z d d l d d m u mz b bd m u mz b b d b u z m b d b z m d d d d l c d d D c b d d b d d b v +++---+---+-=++++-----+-=πππππππ 式中符号意义由结构图给出,其计算公式为b c d m umz d d d mumz D mz d mz d z z g g 2.0)6.110(25.0,6.110,21022122211=--==-===由上式知,齿数比给定之后,体积取决于b 、z 1 、m 、l 、d z1 和d z2 六个参数,则设计变量可取为T z z T d d l m z b x x x x x x x ][][211654321== 3。

2目标函数为min )32286.18.092.0858575.4(785398.0)(2625262425246316321251261231232123221→++++-+-+-+=x x x x x x x x x x x x x x x x x x x x x x x x x x f3.3约束条件的建立1)为避免发生根切,应有min z z ≥17=,得017)(21≤-=x x g2 )齿宽应满足max min ϕϕ≤≤d b ,min ϕ和max ϕ为齿宽系数d ϕ的最大值和最小值,一般取min ϕ=0。

机械优化设计课本中编程实例

机械优化设计课本中编程实例

燕山大学机械优化设计论文专业:12机械工程班级: 工学部1班学号:姓名:2012年12月05日摘 要:机械优化设计是将最优化原理和计算技术应用于设计领域,为工程设计提供一种重要的科学设计方法。

机械优化设计包括建立优化设计问题的数学模型和选择恰当的优化方法与程序两方面的内容.由于机械优化设计是应用数学方法寻求机械设计的最优方案,所以首先要根据实际的机械设计问题建立相应的数学模型,即用数学形式来描述实际设计问题.在建立数学模型时,需要用专业知识确定设计的限制条件和所追求的目标,确立各设计变量之间的相互关系等。

机械优化设计问题的数学模型可以是解析式,实验数据或经验公式。

虽然它们给出的形式不同,但都是反应设计变量之间的数量关系的。

MATLAB 是目前国际上最流行的科学与工程计算的软件工具, 它具有强大的数值分析、矩阵运算、信号处理、图形显示、模拟仿真和最优化设计等功能.本文用MATLAB 来解决机械设计中的几个常见的问题。

关键词:MATLAB ;优化;机械设计;软件1 引 言近年来发展起来的计算机辅助设计,在引入优化设计方法后,使得在设计过程中既能够不断选择设计参数并评选出最优设计方案,又可以加快设计速度,缩短设计周期。

在科学技术发展要求机械产品更新日益缩短的今天,把优化设计方法与计算机辅助设计结合起来,使设计过程完全自动化,已成为设计方法的一个重要趋势.2 采用MATLAB 软件进行优化设计2.1.问题描述:求3682+-=t t f 的最优解2。

1。

1规划模型的建立:目标函数36102+-=t t f约束条件无约束2.1.2对应的程序:clcclearsyms tf=t^2-10*t+36;x1=0;h=2;f1=subs (f ,x1);x2=x1+h;f2=subs(f,x2);f3=f2—1;t=1;if (f1—f2)>0while f3〈f2f3=subs(f,x2+t*h);t=t+1;endx3=x2+(t-1)*h;elsef3=f2;f2=f1;t=1;f1=f2—1;x3=x2;x2=x1;while f1〈f2f1=subs(f,x2-t*h);t=t+1;endx1=x2-(t—1)*h;enda=x1;b=x3;e=1e—05;k=0.618;a1=b-k*(b-a);a2=a+k*(b-a);f1=subs(f,a1);f2=subs(f,a2);c=(b-a)/2;while c>eif f1〉f2a=a1;a1=a2;a2=a+k*(b-a);f1=f2;f2=subs(f,a2);t_min=a2;f_min=f2;elseb=a2;a2=a1;a1=b—k*(b-a);f2=f1;f1=subs(f,a1);t_min=a1;f_min=f1;endc=(b—a)/2;endt_minf_min2。

机械优化设计matlab编程指导201_...

机械优化设计matlab编程指导201_...

(一)matlab基本用法介绍5. 循环、结束命令¾break是直接跳出该层循环¾continue是直接进入该层循环的下一次迭代¾return是直接退出程序或函数返回大概的等级关系如下¾return>break>continue(二)matlab语法应用实例1. 循环的用法(用于优化迭代)%%%%%%%%%%%%%%%%%% while 循环i=0;while(i<10)i=i+1;end%%%%%%%%%%%%%%%%%% for 循环i=0;for j=1:10i=i+1;end%%%%%%%%%%%%%%%%%% break终止本层循环for i=1:2ik=0;for j=1:10k=k+1if k==5;break;endendend%%%%%%%%%%%%%%%%%% continue直接进入下一次循环变量的迭代k=0;for j=1:10k=k+1;if k==5;continue;endkend %注意,k=5时,后面的循环体未被执行,即k=5不显示在输出窗口中2 函数调用(利用外部m文件定义函数)(用于定义目标函数、约束函数、优化子程序等)建立wad2.m文件:function F1=wad2(x)F1=x(1)^2+x(2)^2;在主程序m文件中或者matlab的commond window中输入x0=[3 5]';fx0= wad2(x0)运行结果如下:fx0 = 34 ,得到了函数的值※另外函数中的F1也可以定义成向量。

3 全局变量(可用于优化过程中的重要参数定义,在程序任意部位都可以访问)建立wad3.m文件:function F1=wad3(x)global ac bcF1=ac*x(1)^2+bc*x(2)^2;在主程序m文件中定义x0=[3 5]';ac=0.2; bc=0.8;fx0= wad3(x0)结果:fx0 = 14.60004 判断语句(例如可以用于优化计算收敛的终止条件判断)k=2if k>3'yes k>3'else'no ,k<3'endif k==2'yes k=2'end5 数组(例如可以用于优化计算收敛的终止条件判断)% 1. 数组:matlab 程序以矩阵为运算单位,任何变量都是矩阵(数组)% 数组不需要声明,直接定义、使用即可a=[1 2 3]b=[ 1 2 34 5 6]c=b'; %求矩阵的转置矩阵b23=b(2,3) %取出矩阵b中第2行第3列元素x=[123]Hk=eye(4);% 生成4维的单位阵6 清屏clcclear7 二维绘图x=1:0.1:10;y1=sin(x);y2=cos(x);figure;plot(x,y1,'r');hold on;plot(x,y2,'b');grid on;xlabel('x axis'),ylabel('y axis');8 三维绘图x=1:0.1:10;y1=sin(x);y2=cos(x);z=x+cos(y1);figure;plot3(x,y1,z,'b');hold on;grid on;xlabel('x axis'),ylabel('y axis'),zlabel('z axis');9 二维等值线图%%对函数: F=(xk(1)-2)^4+(xk(1)-2*xk(2))^2; [x3,y3]=meshgrid(-5:0.2:10,-10:0.2:10);z3=(x3-2).^4+(x3-2*y3).^2;contour(x3,y3,z3,40);%目标函数的等值线hold on;axis equal;xlabel('自变量x1','FontSize',12);ylabel('自变量x2','FontSize',12);title('×××××××方法', 'FontSize',15);。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

燕山大学机械优化设计论文专业:12机械工程班级:工学部1班学号:姓名:2012年12月05日摘 要:机械优化设计是将最优化原理和计算技术应用于设计领域,为工程设计提供一种重要的科学设计方法。

机械优化设计包括建立优化设计问题的数学模型和选择恰当的优化方法与程序两方面的内容。

由于机械优化设计是应用数学方法寻求机械设计的最优方案,所以首先要根据实际的机械设计问题建立相应的数学模型,即用数学形式来描述实际设计问题。

在建立数学模型时,需要用专业知识确定设计的限制条件和所追求的目标,确立各设计变量之间的相互关系等。

机械优化设计问题的数学模型可以是解析式,实验数据或经验公式。

虽然它们给出的形式不同,但都是反应设计变量之间的数量关系的。

MATLAB 是目前国际上最流行的科学与工程计算的软件工具, 它具有强大的数值分析、矩阵运算、信号处理、图形显示、模拟仿真和最优化设计等功能。

本文用MATLAB 来解决机械设计中的几个常见的问题。

关键词:MATLAB ;优化;机械设计;软件1 引 言近年来发展起来的计算机辅助设计,在引入优化设计方法后,使得在设计过程中既能够不断选择设计参数并评选出最优设计方案,又可以加快设计速度,缩短设计周期。

在科学技术发展要求机械产品更新日益缩短的今天,把优化设计方法与计算机辅助设计结合起来,使设计过程完全自动化,已成为设计方法的一个重要趋势。

2 采用MATLAB 软件进行优化设计2.1.问题描述:求3682+-=t t f 的最优解2.1.1规划模型的建立:目标函数36102+-=t t f约束条件无约束2.1.2对应的程序:clcclearsyms tf=t^2-10*t+36;x1=0;h=2;f1=subs(f,x1);x2=x1+h;f2=subs(f,x2);f3=f2-1;t=1;if (f1-f2)>0while f3<f2f3=subs(f,x2+t*h);t=t+1;endx3=x2+(t-1)*h;elsef3=f2;f2=f1;t=1;f1=f2-1;x3=x2;x2=x1;while f1<f2f1=subs(f,x2-t*h);t=t+1;endx1=x2-(t-1)*h;enda=x1;b=x3;e=1e-05;k=0.618;a1=b-k*(b-a);a2=a+k*(b-a);f1=subs(f,a1);f2=subs(f,a2);c=(b-a)/2;while c>eif f1>f2a=a1;a1=a2;a2=a+k*(b-a);f1=f2;f2=subs(f,a2);t_min=a2;f_min=f2;elseb=a2;a2=a1;a1=b-k*(b-a);f2=f1;f1=subs(f,a1);t_min=a1;f_min=f1;endc=(b-a)/2;endt_minf_min2.1.3运行结果2.1.4 程序基本原理此程序运用的是黄金分割法,黄金分割法适用于〔a ,b 〕区间上的任何单谷函数求极小值问题。

黄金分割法是建立在区间消去法原理基础上的试探方法,即在搜索区间〔a ,b 〕内插入两点并计算其函数值,将区间分成三段。

应用函数的单谷性质,通过函数值大小的比较,删去其中一段,使搜索区间无限缩小,从而得到极小点的数值近似解。

2.1.5 结 论黄金分割法可以通过最少的试验次数,找到“最佳点”。

它是一个一维的搜索方法,并且比较精确,配合计算机MATLAB 软件更能实现求解的快速性和准确性。

2.2.问题描述:求221212221)6182324844949()112()(min -++++-+=x x x x x x x f 的最优解2.2.1规划模型的建立:目标函数221212221)6182324844949()112()(min -++++-+=x x x x x x x f初始条件:[]Tx 1,10= ()33307690=x f 约束条件无约束2.2.2对应的程序:syms t1 t2f=(t1^2+12*t2-1)^2+(49*t1+49*t2+84*t1+2324*t2-681)^2;x0=[1;1]b=symvar(f);n=size(b,2);g=cell(n,1);G=cell(n,n);H0=eye(n,n);for i=1:ng{i,1}=diff(f,b(i));endfor i=1:n %产生海塞矩阵for j=1:nG{j,i}=diff(g{i},b(j));endendg0=subs(g,b,x0); %产生在x0点的梯度d0=H0*g0;a=buchang(x0,d0,f);x1=x0-a*d0; %产生第一个点xcha=x1-x0; %计算两点之间的距离dis=mo(xcha);k=0;while dis>1e-5 %收敛条件g1=subs(g,b,x1); %判断在迭代点是否梯度为0if g1==0Gy=subs(G,b,x1); %观察海赛矩阵breakendy0=g1-g0;s0=x1-x0;H1=H0+(s0*s0')/(s0'*y0)-(H0*y0*y0'*H0)/(y0'*H0*y0);d1=H1*g1;a=buchang(x1,d1,f);x2=x1-a*d1;g0=g1;x0=x1;x1=x2;H0=H1;xcha=x1-x0;dis=mo(xcha);x1 %输出每次的迭代点subs(f,b,x1) %迭代点的函数值k=k+1 %显示迭代次数end2.2.3运行结果2.1.4 程序基本原理 变量的尺度变换是放大或缩小各个坐标。

通过尺度变换可以把函数的偏心程度降低到最低到最低限制。

尺度变换技巧能显著地改进几乎所有极小化方法的收敛性质。

用最速下降法求22212125),(x x x x f +=的极小值时,需要进行10次迭代才能达到最小值点[]T x 0,0*=。

但是,若变换 11x y =225x y =即把2x 的尺度放大5倍,就可以将等值线为椭圆的函数),(21x x f 变换成等值线为圆的函数222121),(y y y y +=ψ,从而消除了函数的偏心,用最速下降法只需一次迭代即可求得最小值点。

在Newton 法中,基本迭代公式k k k k P t X X +=+1, 其中,1=k t ,)()]([12k k k X f X f P ∇∇-=-,于是有2,1,0,11=-=-+k g G X X k k k k (1)其中0X 是初始点,k g 和k G 分别是目标函数)(X f 在点k X 的梯度和Hesse 矩阵.为了消除这个迭代公式中的Hesse 逆矩阵1-k G ,可用某种近似矩阵)(k k X H H =来替换它,即构造一个矩阵序列}{k H 去逼近Hesse 逆矩阵序列}{1-k G此时式(1)变为k k k k g H X X -=+1事实上,式中k k k g H P -=无非是确定了第k 次迭代的搜索方向,为了取得更大的灵活性,我们考虑更一般的的迭代公式k k k k k g H t X X -=+1 (2)其中步长因子k t 通过从k X 出发沿k k k g H P -=作直线搜索来确定.式(2)是代表很长的一类迭代公式.例如,当I H k ≡(单位矩阵)时,它变为最速下降法的迭代公式.为使k H 确实与1-k G 近似并且有容易计算的特点,必须对k H 附加某些条件:第一,为保证迭代公式具有下降性质,要求}{k H 中的每一个矩阵都是对称 正定的.理由是,为使搜索方向k k k g H P -=是下降方向,只要0<-=-k k T k k T k g H g P g成立即可,即0>k k T k g H g成立.当k H 对称正定时,此公式必然成立,从而保证式(2)具有下降性质.第二,要求k H 之间的迭代具有简单形式.显然,k k k E H H +=+1 (3)是最简单的形式了.其中k E 称为校正矩阵,式(3)称为校正公式.第三,必须满足拟Newton 条件.即:)()(111k k k k k X X g g H -=-+++ (4)为了书写方便也记k k k g g y -=+1k k k X X S -=+1于是拟Newton 条件可写为k k k S y H =+1 (5)有式(3)和(5)知,k E 必须满足k k k k S y E H =+)(或k k k k k y H S y E == (6)2.2.5 结 论通过对本题的求解结果[]Tx 2681.0,3363.0*= 4318.5)(*=x f 与精确解[]Tx 27936.0,28581.0*= 9225.5)(*=x f 的比较虽然DFP 变尺度法具有综合了梯度法、牛顿法的优点而又避弃它们各自的缺点,只需计算一阶偏导数,无需计算二阶偏导数及其逆矩阵,对目标函数的初始点选择均无严格要求,收敛速度快的特点,但是还是会有一定的误差。

2.3.问题描述:求2221)1()2()(min -+-=x x x f 的最优解2.3.1规划模型的建立:目标函数2221)1()2()(m i n -+-=x x x f约束条件02211≤-=x x g022211≤-+=x x g初始条件[]T x 3,30= ()50=x f2.3.2对应的程序:function y=fun1(x)y=(x(1)-2).^2+(x(2)-1).^2;endfunction [c,ceq]=gt1(x)c=x(1).^2-x(2);ceq=[];endA=[1,1];b=2;x0=[1;2];lb=[];ub=[]; [x,fval,exitflag,output,lambda,grad,hessian]=fmincon(@fun1,x0,A,b,[],[],lb,ub,@gt1);2.3.3运行结果2.3.4 程序基本原理fmincon运行首先检查有无梯度表达提供,如有则选则大规模算法(subspace trust region),由此涉及到Hessian阵的近似计算,由于已提供了梯度的公式,则Hessian阵可以直接通过有限差分计算。

但是如果用户直接提供了Hessian计算公式,则直接计算。

如果没有梯度表达式提供,fmincon选则SQP算法,算法中Hessian阵可以通过BFGS迭代,初始Hessian阵任给。

注意BFGS公式中q项是需要计算目标函数梯度得到的。

所以Hessian矩阵的近似计算是需要用到有限差分法。

2.3.5 结论由以上实例可知,采用基于MATLAB软件的计算方法解决优化设计问题,求解程序简单、编程量小、求解效率高,能满足求解离散优化问题的要求,保证得到符合工程要求的最优解,从而可以获得很好的优化结果。

相关文档
最新文档