您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > matlab优化实例课件
梁医南京理工大学机械工程学院基于Matlab的机械优化实例参考书目1.MATLAB原理与工程应用(AnEngineer’sGuidetoMATLAB),EdwardB.Magrad等,电子工业出版社2.MATLAB遗传算法工具箱及其应用,雷英杰等西安电子科大出版社第一节Matlab优化简介第二节无约束优化问题无约束线性优化,无约束非线性优化第三节约束优化问题单变量约束优化,多变量线性约束优化,多变量非线性约束优化多目标约束优化第四节遗传优化方法第五节《FiniteElementsinAnalysisandDesign》和《MechanismandMachineTheory》有关优化的一些论文1.MATLAB的优化工具箱中可以用于求解多变量约束优化问题的函数为(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)其语法格式中fun指,nonlcon指。第八章练习第八章重点内容1.无约束线性优化函数有哪些?2.无约束非线性优化函数有哪些?3.单变量约束优化函数有哪些?4.多变量约束优化函数有哪些?5.多目标约束优化函数有哪些?结束第八章基于Matlab的机械优化实例第一节Matlab简介第一节Matlab简介优化问题可以由MATLAB的作图功能以图形方式显示。如例1:图中是两个弹簧组成的系统。在A点施加一载荷后系统处于变形状态,经过一定时间后将停留在平衡状态。要研究的是系统的平衡状态,在图中实折线具体指出了A点的位置(x1,x2)。虚折线是施加载荷前弹簧未变形的情况实折线是施加一载荷后弹簧变形的情况系统的势能相对于设计变量x1和x2值求最优值由弹簧的弹性势能与拉力所作的功之差计算得出第一节Matlab简介221xkE第五节有关优化的一些论文程序Syntax(语法)[X,Y]=meshgrid(x,y)[X,Y]=meshgrid(x)[X,Y,Z]=meshgrid(x,y,z)Examples[X,Y]=meshgrid(1:3,10:14)[X,Y]=meshgrid(-2:.2:2,-2:.2:2);Z=X.*exp(-X.^2-Y.^2);surf(X,Y,Z)Meshgrid-GenerateXandYarraysfor3-DplotsLinspacey=linspace(a,b,n)generatesarowvectoryofnpointslinearlyspacedbetweenandincludingaandb.subplot(m,n,p)orsubplot(mnp)breaksthefigurewindowintoanm-by-nmatrixofsmallaxes,selectsthepthaxesobjectforthecurrentplotcontour(x,y,z,v,’k’)在数组v的元素指定的数值处绘制等高线图z,水平面的坐标值为x,y,‘k’表示线色为黑色。clabelContourplotelevationlabelsaxis([xminxmaxyminymax])AxisscalingandappearanceSurfc(x,y,z)3-Dshadedsurfaceplot右图是PE的三维图形,三维图形下面是等高线图,图中也标出了极小值/极大值所在点的近似位置,在该点PE目标函数取得极小值/极大值。左图是PE的等高线图,图上标出了每条等高线的数值,从图可可清楚地找到极小值/极大值的分布。第一节Matlab简介第二节无约束优化第二节无约束线性优化2.1无约束非线性优化minf(x)2)fminunc函数:用于求解单变量及多变量函数的最小值,fminunc函数是基于梯度的最优化算法。函数要求目标函数必须连续。函数有可能得到局部最优解。[x,fval,exitflag,output,lambda,grad,hessian]=fminunc(‘fun’,X0,options)1)fminsearch函数:函数用于求解多变量函数的极小值,而fminsearch是根据Nelder算法而编写的.函数有可能找到局部最优解。[x,fval,exitflag,output]=fminsearch(‘fun’,X0,options)fminunc函数的说明①函数为无约束优化提供了大、中型优化算法。options中LargeScale控制。②函数的中型算法里面有4种算法。options中HessUpdate控制③函数的中型算法步长一维搜索,有两种算法。LineSearchType控制。函数描述LargeScale=’on’使用大型算法LargeScale=’off’(默认值)使用中型算法HessUpdate=’bfgs’(默认值)拟牛顿法的BFGS公式HessUpdate=’dfp’拟牛顿法的DFP公式HessUpdate=’steepdesc’最速下降法LineSearchType=’quadcubic’(缺省)混合的二次和三次多项式插值LineSearchType=’cubicpoly’三次多项式插值第二节无约束线性优化例3:求解弹簧稳定问题运行结果x=[8.425,3.6331],f=PE=-35.30507第二节无约束线性优化运行结果x=[8.425,3.6331],f=PE=-35.30507,与图形所示的近似值相比,是一致的。第二节无约束线性优化3.1、单目标单变量约束优化例4工厂的管道费用问题若设计一化工厂,管道费用(包括配件及抽灌费用)是需要考虑的一项重要指标。假设设计一条L英尺长的管道,抽灌量为Qg/m,目标是求出管道直径D(单位in),使其年度抽灌费用最低。考虑采用标准的碳钢泵,其年度抽灌费用可表示为:0.50.9251.50.450.24532561.6102fDLLDhphp其中,32.688954.684.4101.9210LQLQhpDD管长和液体输送速度为常数,分别为1000英尺和20g/m时,求管道直径为多少才使其费用最低。625.0D管道直径的变化范围要求:第三节约束优化问题第三节约束优化问题单变量约束优化是对分布于固定区间上的单变量目标函数求最优解的一种方法。21as.t.)(minaxxfxMatlab命令为,......)2,1,,2,1,(min],[ppoptionsaaonUserFunctibndffxoptxoptf(X)的最优解X的最优值目标函数的函数文件名为由optimset中定义的参数赋值传递到UserFunction的参数执行结果为D=1.117in,fD=f(D)=1003$/年。第三节约束优化问题例5:求解),(1minxx第三节约束优化问题例2:有两产品A和B,需要在两个车间加工。每件产品A在第一车间的处理时间为1小时,在第二车间处理时间为1.25小时;每件产品B在第一车间的处理时间为1小时,在第二车间的处理时间为0.75小时。每个车间每月有200小时的时间可以利用,而且B产品的市场需求量最大为150件,假定A产品和B产品的利润每件分别为¥4和¥5。求出使生产商的利润最大时A产品和B产品的生产量。x1——A产品的生产数量;x2——B产品的生产数量12121122123212min,45s.t.::200:1.250.75200:150,0fxxxxgxxgxxgxxx第二节无约束线性优化3.2多变量约束线性优化12112001.250.7520001150xx12121122123212min,45s.t.::200:1.250.75200:150,0fxxxxgxxgxxgxxxboundboundeqeqUxLbxAbAxtscxz..minLinprog函数主要解决以下问题:],0,,,,,,,(],,,,[optionsxUBLBbeqAeqbAclinproglamdaoutputexitflagfvalx初始值f=[-4,-5]A=[1,1;1.25,0.75;0,1]b=[200,200,150]LBnd=[00]x=linprog(f,A,b,[],[],LBnd,[])]5,4[f理解程序第二节无约束线性优化输出宗量的[x,fval,exitflag,output,lambda]理解:x—输出的最优解xFval—当取最优解为x时的最优值exitflag—判断算法停止的原因Output—algorithm,cgiterations,iterations,messageLambda—lower,upper,ineqlin,eqlin],0,,,,,,,(],,,,[optionsxUBLBbeqAeqbAclinproglamdaoutputexitflagfvalx1:找到最优解,优化成功0:迭代次数已经达到最大,表示不能再继续寻找最优解x-2:可行解没有找到-3:问题没有定义边界-4:NaN的存在导致算法没法进行-5:原始对偶问题没有可行解-7:算法搜索方向存在问题输出宗量exitflag:exitflag0:表示优化失败第二节无约束线性优化输出宗量的output:algorithm:采用的算法cgiterations:设置变化梯度矩阵迭代次数(只用于大型优化算法)iterations:迭代次数message:退出的信息],0,,,,,,,(],,,,[optionsxUBLBbeqAeqbAclinproglamdaoutputexitflagfvalxlower:lagrange乘子的下限upper:lagrange乘子的上限ineqlin:线性不等式eqlin:线性等式输出宗量的lambda(最优解x处的Lagrange乘子):第二节无约束线性优化输入宗量options:largescale:是否用大型优化算法。LagreScale,MediumScale,Simplex:linprog输入了x0,即默认是用MediumScale,如果用LargeScale和Simplex则不需要输入初始点。diagnosyics:打印优化的诊断报告。display:显示水平.取值为’off’时,不显示输出;取值为’iter’时,显示每次迭代的信息;取值为’final’时,显示最终结果.默认值为’final’.maxiter:允许迭代的最大次数simplex:使用单纯形算法tolfun:允许误差],0,,,,,,,(],,,,[optionsxUBLBbeqAeqbAclinproglamdaoutputexitflagfvalx第二节无约束线性优化输入宗量的options的设置:(1)options=optimset(‘optimfun’)创建一个含有所有参数名,并与优化函数optimfun相关的默认值的选项结构options.(2)options=optimset(‘param1’,value1,‘param2’,value2,...)创建一个名称为options的优化选项参数,其中指定的参数具有指定值,所有未指定的参数取默认值.例:opts=optimset(‘Display’,‘iter’,‘TolFun’,1e-8)该语句创建一个称为opts的优化选项结构,其中显示参数设为‘iter’,TolFun参数设为1e-8.第二节无约束线性优化f=[-2;-1;1];A=[14-1;2-21];b=[4;12];Aeq=[112];beq=6;lb=zeros(3,1);x0=[0;0;0];options=optimset('LargeScale','on','Display','iter','TolFun',1e-3);[x,fval,exitflag,output,lambda]=linprog(f,A,b,Aeq,beq,lb,[],x0,options)lambda.lower%显示lambda算子题目:
本文标题:matlab优化实例课件
链接地址:https://www.777doc.com/doc-1434461 .html