无约束极值问题的Matlab求解(0.5学时)有约束极值问题的Matlab求解(0.5学时)应用案例分析(1学时)第9讲非线性规划软件求解及应用案例重点:Matlab求解非线性规划,案例分析。难点:应用建模及求解。基本要求:掌握无约束极值和有约束极值的Matlab求解,看懂教材中4.7,5.6的应用案例,结合实际问题用学的非线性规划求解方法建立模型并求解。无约束极值问题的Matlab求解优化工具箱是Matlab的关键部分,它是Matlab强大功能得以实现的载体和手段.也是对Matlab基本功能的重要扩充.其中,优化工具箱涉及函数的最小化或最大化问题,即函数的极值问题.本节主要介绍求无约束非线性极值的主要函数格式。一、用Matlab解一元函数的无约束优化问题设一元函数元约束优化问题为min()..fxstaxb 常用格式如下:x=fminband(‘fun’,a,b);x=fminbnd(‘fun’,a,b,options);[x,fval]=fminbnd(…);[x,fval,exitflag]=fminbnd(…);[x,fval,exitflag,output]=fminbnd(…);其中(3)、(4)、(5)的等式右边可选用(1)或(2)的等式右边.函数fminbnd的算法基于0.618法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解。控制参数option的设置(1)Display:显示水平,取值为“off”时,不显示输出;取值为“iter”时,显示每次迭代的信息;取值为“final”时,显示最终结果。默认值为“final”。(2)MaxFunEvals:允许进行函数评价的最大次数,取值为整数。(3)MaxIter:允许进行迭代的最大次数,取值为正整数。控制参数options可以通过函数optimset创建或修改。命令格式如下:①options=optimset(‘optimfun’),创建一个含所有参数名,并与优化函数optimfun相关的默认值的选项结构options。②options=optimset(‘param1’,value1,‘param2’,value2,…),创建一个名称为options的优化选项参数,其中指定的参数具有指定值,所有未指定的的参数取默认值。③options=optimset(oldops,‘param1’,value1,‘param2’,value2,…),创建名称为oldops的参数的拷贝,用指定的参数修改oldops中相应的参数。例4-8对边长为3m的正方形铁板,在4个角剪去相等的正方形以制成方形无盖水箱,问如何剪法使水箱的容积最大?Matlab命令窗口输入:二、用MATLAB解无约束优化问题设无约束优化问题(一元或多元函数)标准形为min()fx常用格式如下:x=fminunc(‘fun’,x0);或x=fminsearch(‘fun’,x0);x=fminunc(‘fun’,x0,options);或x=fminsearch(‘fun’,x0,options);[x,fval]=fminunc(…);或[x,fval]=fminsearch(…)[x,fval,exitflag]=fminunc(…);或[x,fval,exitflag]=fminsearch(…);[x,fval,exitflag,output]=fminunc(…);或[x,fval,exitflag,output]=fminsearch(…);说明:fminsearch是用单纯形法寻优。而对于fminunc的算法:(1)fminunc为无约束优化提供了大型优化和中型优化算法,由于options中的参数LargeScale控制;LargeScale=’on’(默认值),使用大型算法;LargeScale=’off(默认值),使用中型算法。(2)fminunc为中型优化算法的搜索方向提供了4种算法,由options中的参数HessUpdate控制:HessUpdate=’bfgs’(默认值),拟牛顿法的BFGS公式;HessUpdate=’dfp’,拟牛顿法的DFP公式;HessUpdate=’steepdesc’,最速下降法;(3)fminunc为中型优化算法的步长以为搜索提供了两种算法,由options中的参数LineSearchType控制:LineSearchType=’quadcubic’(默认值),混合的二次和三次多项式插值;LineSearchType=’cubicpoly’,三次多项式插值。例4-9用MATLAB解一元约束优化问题2minxefx例4-10用Matlab解多元约束优化问题212122214102minxxxxxxf有约束极值问题的Matlab求解一、一般非线性规划一般非线性规划标准形为:其中:均为非线性函数组成的向量.VUBxVLBxCeqxCBeqxAeqbAxxf0)(0)()(min)(),(xCeqxC用Matlab求解上述向题,基本步骤为:(1)首先建立M文件fun.m,定义目标函数f(x):functionf=fun(x);f=f(x);若约束条件中有非线性约束:,则建立M文件nonlcon.m)(),(xCeqxC(2)定义函数:function[C,Ceq]=nonlcon(x)C=…Ceq=…(3)建立主程序,非线性规划求解的函数是fmincon,命令的基本格式如下:①x=fmincon(fun,x0,A,b);②x=fmincon(fun,x0,A,b,Aeq,Beq,VLB,VUB,nonlcon,options);③[x,fval]=fmincon(…);④[x,fval,exitflag,output,Lagrange]=fmincon(…);其中:x为最优解,fval为目标函数在解x处得值。exitflag:描述程序运行情况。exitflag大于0。则程序收敛于解x。exitflag等于0则程序停止于最大次数。Exitflag小于0则问题无可行解。Output:输出程序运行的某些信息。Lambda:解x处的Lagrange乘子。例5-9求下列非线性规划.0,x02x-0x8)(min212212212221xxxxxxf解:方法一、转化成无约束极值问题方法二、直接调用约束极值求解函数(2)在Matlab命令窗口输入zcx59,即可求得解(1)建立M文件例5-10用Matlab求解下面问题二、二次规划Matlab中二次规划的数学模型可表述如下:bAxxfHxxTTs.t.,21min这里是实对称矩阵,是列向量,是相应维数的矩阵。Matlab中求解二次规划的命令格式;[x,fval]=quadprog(H,f,A,b,Aeq,beq,LB,UB,x0,OPTIONS)x的返回值是向量,fval的返回值是目标函数在x处的值。(具体细节可以参看在Matlab指令中运行helpquadprog后的帮助)。例5-11求解二次规划应用案例分析1生产安排问题(无约束极值问题)2选址问题(有约束极值问题)3港口起重机工作机构优化设计(有约束极值问题)(内容包括:背景资料,建立数学模型,软件求解及结果分析建立数学模型)作业:习题43,5(3),6,习题58,用Matlab求解习题52-5