Matlab和机械优化设计(5.优化工具箱).ppt_第1页
Matlab和机械优化设计(5.优化工具箱).ppt_第2页
Matlab和机械优化设计(5.优化工具箱).ppt_第3页
Matlab和机械优化设计(5.优化工具箱).ppt_第4页
Matlab和机械优化设计(5.优化工具箱).ppt_第5页
免费预览已结束,剩余21页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Matlab优化工具箱的使用,MATLAB优化工具箱能求解的优化模型,优化工具箱3.0(MATLAB7.0R14),连续优化,离散优化,无约束优化,非线性极小fminunc,非光滑(不可微)优化fminsearch,非线性方程(组)fzerofsolve,全局优化暂缺,非线性最小二乘lsqnonlinlsqcurvefit,线性规划linprog,0-1规划bitprog一般(暂缺),非线性规划fminconfseminf,上下界约束fminbndfminconlsqnonlinlsqcurvefit,约束线性最小二乘lsqnonneglsqlin,约束优化,二次规划quadprog,多目标优化fgoalattainfminimax,无约束优化问题,数学模型:Matlab函数:对于连续(处处光滑)的函数,使用fminunc对于不连续的函数,使用fminsearch一般而言fminunc比fminsearch有更高的寻优效率,因为它利用了梯度信息两者都不是解决最小化平方和的问题首选方法,对这类问题,推荐使用(lsqnonlin)。,无约束优化问题,x,fval,exitflag,output,grad,hessian=fminunc(fun,x0,options)输入参数:fun:目标函数,以函数句柄的形式给出。函数句柄的构造:函数首先用m文件定义好,然后采用下列方式构造函数句柄:fhandle=function_name如:f_h=sin;f_h=cos匿名函数的形式(Anonymousfunction),函数的表达式直接给出:fhandle=(var_list)expression(var_list),如:f_h=(x)sin(x);f_h=(x)cos(x);采用函数句柄的方式调用函数:把函数的名称用函数句柄直接替换。比如定义:f_h=sin,则使用sin函数的时候有两种方式:sin(10),f_h(10),返回同样的结果。,无约束优化问题,x,fval,exitflag,output,grad,hessian=fminunc(fun,x0,options)输入参数:x0:初始点的值。Options:提供和函数本身有关的一些细节控制,如采用的算法,是否采用梯度等信息。本身是一个结构数组,其中每一个属性值的改变或设定可用函数optimset完成,如:options=optimset(Display,iter,TolFun,1e-8);options=optimset(optimfun):返回优化函数“optimfun”所有的options属性的名称和属性值。如:options=optimset(fminunc):观察结果。Options各个属性的含义请参考帮助文件。,无约束优化问题,x,fval,exitflag,output,grad,hessian=fminunc(fun,x0,options)输出参数:X,fval:算法终止时函数的最优解和最优值。exitflag:整数标志,算法终止的原因,返回值大于0表示找到局部最优点,否则没有找到局部最优点。具体的返回请参照函数“fminunc”的帮助。Output:Structurecontaininginformationabouttheoptimization.Thefieldsofthestructureare:iterations:Numberofiterationstaken;funcCount:Numberoffunctionevaluations;algorithm:Algorithmused;Cgiterations:NumberofPCGiterations(large-scalealgorithmonly);stepsize:Finalstepsizetaken(medium-scalealgorithmonly);grad,hessian:最优解X点处的剃度和Hessian矩阵,无约束优化问题,x,fval,exitflag,output,grad,hessian=fminunc(fun,x0,options)例子:求目标函数mypeaks的局部最小值。mypeaks=3*(1-x(:,1).2.*exp(-(x(:,1).2)-(x(:,2)+1).2).-10*(x(:,1)/5-x(:,1).3-x(:,2).5).*exp(-x(:,1).2-x(:,2).2).-1/3*exp(-(x(:,1)+1).2-x(:,2).2);fminsearch与fminunc有相同的输入和输出参数,但是它使用单纯形法来找到局部最优。分别用fminsearch和fminunc函数求上述目标函数的极小值点,可发现在利用了梯度信息的时候,迭代的次数大大减小。,约束优化问题,1。单变量(标量)、上下界约束优化问题。x,fval,exitflag,output=fminbnd(fun,x1,x2,options)目标函数必须是连续的,只能求出局部最优值,所用算法:黄金分割和二次插值方法。例子:求函数f(x)=x(2/3)-(x2+1)(1/3),约束优化问题,2。线性规划问题。x,fval,exitflag,output,lambda=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)它的输出只是最终结果,没有迭代过程。例:,约束优化问题,数学模型:设计变量:各个方案切割的套数:x=x1,x2,x3,x4,x5;目标函数:minf(x)=0.1*x2+0.2*x3+0.3*x4+0.8*x5约束条件:总套数限制:x1+2*x2+x4=1002*x3+2*x4+x5=1003*x1+x2+2*x3+3*x5=10002%nonlconcalledwith4outputsGC=.%GradientsoftheinequalitiesGCeq=.%Gradientsoftheequalitiesend,4.fmincon函数,MATLAB代码:%首先编写目标函数的.m文件:functionf=myfun(x)f=-x(1)*x(2)*x(3);x0=10;10;10%起始点x,fval=fmincon(myfun,x0,A,b),4.fmincon函数,MATLAB代码:%首先编写目标函数的.m文件:functionf=objfun(x)f=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);%编写非线性约束函数的.m文件:functionc,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函数,目标函数:,H,4.fmincon函数,Step1:建立数学模型设计变量和目标函数:管直径D和支架高度H约束条件:,4.fmincon函数,Step1:建立数学模型约束条件:,4.fmincon函数,Step2:编制程序目标函数functionf=objfun1(x)f=1.225e-4*x(1)*sqrt(577600.0+x(2)*x(2);约束函数functionc,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,1lb=zeros(2,1);ub=Inf*ones(2,1);%ub=x,fval,exitflag,output,lambda,grad,hessian=fmincon(objfun1,x0,lb,ub,confun1),多目标优化问题,1.目标规划法x,fval,attainfactor,exitflag=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub);函数fun以函数句柄的形式或匿名函数的形式给出,它多个目标函数构成的向量;goal:每个目标函数想要达到的目标,和fun具有相同的维数。Weight:每个目标函数在优化过程中重要性的体现。当某个目标函数的Weight为正值时,允许函数值大于目标值;当它为负值时,允许函数值小于目标值;如果希望某个目标值尽量接近目标值,在Options中设置“GoalsExactAchieve”,并让该目标函数作为Fun中的第一个函数。如果希望每一个函数值从目标值有相同百分比的偏差,则设置每一个函数的weight(i)=abs(goal(i);,多目标优化问题,1。目标规划法返回值:Attainfactor:优化点处函数值超过和小于目标函数的个数统计,如果为负,则大部分函数被过估计;否则,大部分函数值小于目标值。例1:某工厂生产I、II两种产品,有关数据见表1,在原材料有严格限制的条件下,要求产品II的产量不低于产品I,其次是充分利用设备,不加班;再者是利润不小于56元。Step1:建模:设计变量:产品I和II的产量x(1),x(2)目标函数:利润:g1=8*x(1)+10*x(2)56()产量:g2=x(2)x(1)0()工时:g3=x(1)+2*x(2)10(),多目标优化问题,1。目标规划法约束条件:原材料限制:2*x(1)+x(2)=0Step2:对目标函数指定权值:根据目标函数大于或小于目标的值,确定g1,g2权值大于0,g3权值小于0,权值绝对值的大小应该体现了各个目标函数的重要性。给定:w=1,0.8,-1;Step3:编程求解:分析结果可以看出,增加某一个目标的权值,将使得我们得该目标函数朝着我们期望的方向取得最大值(远离goal)。如将目标函数1(利润)得权值从0增加到5000,目标函数1得值从56变化到大约60,而同时其他两个目标函数得值朝向期望值靠得越近。即靠近goal.这一点从规划问题得数学表达式中也可以看出,随着Weight得增加,目标函数被松弛得越多,也就是它越偏离目标值;同时,优化又是最小化gama,gama得减小,必将导致其他目标函数得松弛量得减少(其他目标函数得Weight没变),所以其他目标函数更靠近目标值。,多目标优化问题,2。极大极小法x,fval,maxfval,exitflag,output,lambda=fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)通过在options设置“MinAbsMax”属性,可控制同时需要最小化的目标函数的个数(目标函数的绝对值最小)。此时这几个需要同时最小化的函数必须在定义目标函数时放在其他函数前面。,多目标优化问题,2。极大极小法x,fval,maxfval,exitflag,output,lambda=fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)通过在options设置“MinAbsMax”属性,可控制同时需要最小化的目标函数的个数(目标函数的绝对值最小)。此时这几个需要同时最小化的函数必须在定义目标函数时放在其他函数前面。,5.fminmax函数,Matlab代码:%首先编写函数簇fi(x)的.m文件functionf=myfun(x)f(1)=2*x(1)2+x(2)2-48*x(1)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论