《Matlab和机械优化设计(5.优化工具箱).ppt》由会员分享,可在线阅读,更多相关《Matlab和机械优化设计(5.优化工具箱).ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MATLABMATLAB优化工具箱优化工具箱能求解的优化模型能求解的优化模型优化工具箱优化工具箱3.0 (MATLAB 7.0 R14)连续优化连续优化离散优化离散优化无约束优化无约束优化非线性非线性极小极小fminunc非光滑非光滑(不可不可微微)优化优化fminsearch非线性非线性方程方程(组组)fzerofsolve全局全局优化优化暂缺暂缺非线性非线性最小二乘最小二乘lsqnonlinlsqcurvefit线性规划线性规划linprog0-1规划规划 bitprog一般一般(暂缺暂缺)非线性规划非线性规划fminconfseminf上下界约束上下界约束fminbndfminconls
2、qnonlinlsqcurvefit约束线性约束线性最小二乘最小二乘lsqnonneglsqlin约束优化约束优化二次规划二次规划quadprog多 目 标 优 化多 目 标 优 化fgoalattain fminimax无约束优化问题min( )fxxn数学模型:nMatlab函数:n对于连续(处处光滑)的函数,使用fminuncn对于不连续的函数,使用fminsearchn一般而言一般而言fminunc比fminsearch有更高的寻优效率,因有更高的寻优效率,因为它利用了梯度信息为它利用了梯度信息n两者都不是解决最小化平方和的问题首选方法两者都不是解决最小化平方和的问题首选方法,对这类问
3、对这类问题,推荐使用(题,推荐使用(lsqnonlin )。)。无约束优化问题vx,fval,exitflag,output,grad,hessian = fminunc(fun,x0,options)v输入参数: fun: 目标函数,以函数句柄的形式给出。函数句柄的构造:函数首先用m文件定义好,然后采用下列方式构造函数句柄: fhandle= function_name 如: f_h=sin; f_h=cos匿名函数的形式(Anonymous function),函数的表达式直接给出: fhandle= (var_list) expression(var_list),如: f_h=(x) s
4、in(x); f_h=(x) cos(x);采用函数句柄的方式调用函数:把函数的名称用函数句柄直接替换。比如定义: f_h=sin, 则使用sin函数的时候有两种方式: sin(10), f_h(10),返回同样的结果。无约束优化问题vx,fval,exitflag,output,grad,hessian = fminunc(fun,x0,options)v输入参数: x0: 初始点的值。Options: 提供和函数本身有关的一些细节控制,如采用的算法,是否采用梯度等信息。本身是一个结构数组,其中每一个属性值的改变或设定可用函数optimset完成,如: options = optimset(
5、Display,iter,TolFun,1e-8); options = optimset(optimfun): 返回优化函数“optimfun”所有的options属性的名称和属性值。如: options = optimset(fminunc): 观察结果。Options各个属性的含义请参考帮助文件。 无约束优化问题vx,fval,exitflag,output,grad,hessian = fminunc(fun,x0,options)v输出参数: X, fval: 算法终止时函数的最优解和最优值。exitflag: 整数标志,算法终止的原因,返回值大于0表示找到局部最优点,否则没有找到局
6、部最优点。具体的返回请参照函数“fminunc”的帮助。Output:Structure containing information about the optimization. The fields of the structure are:v iterations: Number of iterations taken;v funcCount:Number of function evaluations;v algorithm:Algorithm used;vCgiterations:Number of PCG iterations (large-scale algorithm onl
7、y);stepsize:Final step size taken (medium-scale algorithm only);grad,hessian:最优解X点处的剃度和Hessian矩阵无约束优化问题vx,fval,exitflag,output,grad,hessian = fminunc(fun,x0,options)v例子: 求目标函数 mypeaks的局部最小值。v mypeaks=3*(1-x(:,1).2.*exp(-(x(:,1).2) - (x(:,2)+1).2) . v - 10*(x(:,1)/5 - x(:,1).3 - x(:,2).5).*exp(-x(:,1
8、).2-x(:,2).2) . v - 1/3*exp(-(x(:,1)+1).2 - x(:,2).2); vfminsearch与fminunc有相同的输入和输出参数,但是它使用单纯形法来找到局部最优。v分别用fminsearch和fminunc函数求上述目标函数的极小值点,可发现在利用了梯度信息的时候,迭代的次数大大减小。约束优化问题v1。单变量(标量)、上下界约束优化问题。vx,fval,exitflag,output = fminbnd(fun,x1,x2,options)v目标函数必须是连续的,只能求出局部最优值,所用算法:黄金分割和二次插值方法。v例子: 求函数 f(x)=x(2
9、/3)-(x2+1)(1/3), 约束优化问题v2。线性规划问题。vx,fval,exitflag,output,lambda = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)它的输出只是最终结果,没有迭代过程。v例:约束优化问题v数学模型:设计变量: 各个方案切割的套数:x=x1,x2,x3,x4,x5;目标函数: min f(x)=0.1*x2+0.2*x3+0.3*x4+0.8*x5约束条件: v总套数限制: x1+2*x2+x4=100 v 2* x3+2*x4+x5=100v 3* x1+x2+2*x3+3*x5=100v 0 2 % nonlcon
10、 called with 4 outputs GC = . % Gradients of the inequalities GCeq = . % Gradients of the equalitiesendT1230123123123*( )10,10,10 ,02227.:2202227: 1, 2, 2;1,2,2,0;27f xx x xxxxxxxxxxxxA xbAb 计算使函数取最小值时的 值,约束条件为分析将约束条件化为两个不等式:从而可将它们写成矩阵不等式的形式其中实例分析 4. fmincon函数MATLAB代码:%首先编写目标函数的.m文件:function f = myf
11、un (x)f = -x(1)*x(2)*x(3);x0=10; 10; 10 %起始点x, fval = fmincon (myfun, x0, A, b)12212122121212121212( )(421)-1.5, 10:1.50, 100 xf xexxx xxxx xxxx xx xxxx x 计算使函数+2+4+ 取最小值时的 值,约束条件为分析将非线性约束条件化为标准的不等式形式:+实例分析 4. fmincon函数MATLAB代码:%首先编写目标函数的.m文件:function f = objfun(x)f = exp(x(1)*(4*x(1)2 + 2*x(2)2 + 4
12、*x(1)*x(2) + 2*x(2) + 1);%编写非线性约束函数的.m文件: function c, ceq = confun(x)c = 1.5 + x(1)*x(2) - x(1) - x(2); -x(1)*x(2) - 10;ceq = ; %求解优化问题:x0 = -1,1; options = optimset(LargeScale,off);x, fval = fmincon(objfun,x0,confun,options)4. fmincon函数v目标函数: H4. fmincon函数vStep1:建立数学模型v 设计变量和目标函数:管直径D和支架高度Hv约束条件:4.
13、 fmincon函数vStep1:建立数学模型v 约束条件:4. fmincon函数vStep2:编制程序v目标函数function f=objfun1(x)f=1.225e-4*x(1)*sqrt(577600.0+x(2)*x(2);v 约束函数function c,ceq=confun1(x)c=19098.59*sqrt(577600.0+x(2)*x(2)/(x(1)*x(2)-700.0; 19098.59*sqrt(577600.0+x(2)*x(2)/(x(1)*x(2)-2.6e5*(x(1)*x(1)+6.25)/(577600.0+x(2)*x(2);ceq=; x0=1
14、,1 lb=zeros(2,1); ub=Inf*ones(2,1); %ub= x,fval,exitflag,output,lambda,grad,hessian = fmincon(objfun1,x0,lb,ub,confun1) 多目标优化问题v1.目标规划法vx,fval,attainfactor,exitflag = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub);v函数fun以函数句柄的形式或匿名函数的形式给出,它多个目标函数构成的向量;vgoal:每个目标函数想要达到的目标,和fun具有相同的维数。vWeight:每个目标函
15、数在优化过程中重要性的体现。当某个目标函数的Weight为正值时,允许函数值大于目标值;当它为负值时,允许函数值小于目标值;如果希望某个目标值尽量接近目标值,在Options中设置“GoalsExactAchieve ”,并让该目标函数作为Fun中的第一个函数。如果希望每一个函数值从目标值有相同百分比的偏差,则设置每一个函数的weight(i)=abs(goal(i); , ,A( )( ); ( )( )( )( )x weight b beq lb ubc xceq xf xc xceq xf x其中 均是向量和Aeq是矩阵; 和是返回值为向量的函数是一个返回值为标量的和函数; 而且,和可
16、以是非线性函数.多目标优化问题v1。目标规划法v返回值:vAttainfactor:优化点处函数值超过和小于目标函数的个数统计,如果为负,则大部分函数被过估计;否则,大部分函数值小于目标值。v例1:某工厂生产I、II两种产品,有关数据见表1,在原材料有严格限制的条件下,要求产品II的产量不低于产品I,其次是充分利用设备,不加班;再者是利润不小于56元。vStep1:建模:v设计变量:产品I和II的产量 x(1),x(2)v目标函数: 利润:g1=8*x(1)+10*x(2) 56 ()产量:g2=x(2)x(1) 0 ()工时:g3= x(1)+2*x(2) 10 ()III拥有量原材料(kg
17、)2111设备(hr)1210利润(元/件)810多目标优化问题v1。目标规划法v约束条件:原材料限制:2*x(1)+x(2)=0vStep2:对目标函数指定权值:根据目标函数大于或小于目标的值,确定g1,g2权值大于0, g3权值小于0,权值绝对值的大小应该体现了各个目标函数的重要性。给定: w= 1,0.8,-1;Step3:编程求解:分析结果可以看出,增加某一个目标的权值,将使得我们得该目标函数朝着我们期望的方向取得最大值(远离goal)。如将目标函数1(利润)得权值从0增加到5000, 目标函数1得值从56变化到大约60, 而同时其他两个目标函数得值朝向期望值靠得越近。即靠近goal.
18、 这一点从规划问题得数学表达式中也可以看出,随着Weight得增加,目标函数被松弛得越多,也就是它越偏离目标值;同时,优化又是最小化gama, gama得减小,必将导致其他目标函数得松弛量得减少(其他目标函数得Weight没变),所以其他目标函数更靠近目标值。 多目标优化问题v2。极大极小法vx,fval,maxfval,exitflag,output,lambda = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)v通过在options设置“MinAbsMax”属性,可控制同时需要最小化的目标函数的个数(目标函数的绝对值最小)。此时这几个
19、需要同时最小化的函数必须在定义目标函数时放在其他函数前面。多目标优化问题v2。极大极小法vx,fval,maxfval,exitflag,output,lambda = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)v通过在options设置“MinAbsMax”属性,可控制同时需要最小化的目标函数的个数(目标函数的绝对值最小)。此时这几个需要同时最小化的函数必须在定义目标函数时放在其他函数前面。5.fminmax函数12345221121222212312412512( ),( ),( ),( ),( )( )24840304( )3(
20、)318( )( )8fxfxfxfxfxxfxxxxxfxxxfxxxfxxxfxxx 实例分析求函数族取极大极小值时的 值.其中:Matlab代码:%首先编写函数簇 fi(x) 的.m文件 function f = myfun (x) f(1)=2*x(1)2+x(2)2-48*x(1)-40*x(2)+304; f(2)=-x(1)2-3*x(2)2; f(3)=x(1)+3*x(2)-18; f(4)=-x(1)-x(2); f(5)=x(1)+x(2)-8;%然后调用函数fminimax x0=0.1, 0.1; %起始点 x, fval =fminimax(myfun, x0);结束语v优化设计部分的内容到此结束。v作业:1。每小组完成一个机械优化设计课题。2。每个人用Matlab编写本课程提到的优化算法一个,并用一个优化问题来检验该算法,绘出迭代收敛的过程,即迭代停止准则函数随迭代次数的变化曲线。