参考文献:Matlab7.2优化设计实例指导教程褚洪生、杜增吉、阎金华等编著机械工业出版社,2007本讲内容多目标规划问题最大最小化问题半无限问题整数规划问题大规模最优化问题一、最优化理论概述二、Matlab优化工具箱简介三、无约束优化问题四、约束优化问题五、方程求解一、最优化理论概述最优化是一门研究如何科学、合理、迅速地确定可行方案并找到其中最优方案的学科。最优化方法就是专门研究如何从多个方案中科学合理地提出最佳方案的科学。(一)最优化问题基本模型最优化问题的一般形式:min(),nfxxXR:nfXRR称为目标函数,X称为问题的可行域。min(),.nfxxR无约束问题一般形式:约束问题一般形式:约束函数min()fx..()0,{1,,},()0,{1,,}.ieiestcxiEmcxiImm等式约束条件不等式约束条件可行域X为:{()0,;()0,,}.iiXcxiEcxiI线性规划二次规划凸规划此外还分成:整数规划、动态规划、网络规划、非光滑规划、随机规划、几何规划、多目标规划等。例数据拟合问题或无约束问题51(,)|()|iiifabyaxb2min(,),(,).TfababR521(,)[()]iiifabyaxb例食谱问题线性规划问题1minnjjjcx1..,1,,,0,1,,.nijjijjstaxbimxjn1minniiicxnixbxaxaxabxaxaxabxaxaxatsimnmnmmnnnn,,2,1,0..22112222212111212111线性规划问题的标准型:minTcx0..xbAxts记为。则线性规划标准型可记nmijTnTmTnaAxxxxbbbbcccc)(,),,,(,),,,(,),,,(212121目标函数:)1(:maxTcx原问题目标函数minTcx约束条件:)2(1122()iiinniiaxaxaxb原问题条件:02211iniinniniixbxxaxaxanix称为松弛变量1122()iiinniiiaxaxaxb原问题条件:02211iniinniniixbxxaxaxanix称为剩余变量()iiiix原问题:无非负约束,则令非标准型线性规划问题过渡到标准型线性规划问题的处理方法:iiiiix=u-vu,v0例二次规划问题1min2TTxHxgx11..,1,,,,1,,.nijjiejnijjiejstaxbimaxbimm通过逐步二次规划能使一般的非线性规划问题的求解过程得到简化,因此,二次规划迭代法也是目前求解最优化问题时常用的方法。由于二次规划问题本身也是一大类实际应用中经常碰到的问题,所以,二次规划问题在最优化理论和应用各方面都占有非常重要的地位。例最小二乘问题1()()()2minnTxRfxrxrx()0,1,,irxim如果r(x)是x的非线性函数,则问题称为非线性最小二乘问题;如果r(x)是x的线性函数,则问题称为线性最小二乘问题。非线性最小二乘问题在数据拟合、参数估计和函数逼近等方面有广泛应用。非线性最小二乘问题既可以看作为无约束极小化的特殊情形,又可以看作为解如下方程组:被称为残量函数(二)最优化问题的实现用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容:①建立数学模型。即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。②数学求解。数学模型建好以后,选择合理的最优化方法进行求解。Matlab实现由于最优化问题在近些年来得到了广泛的应用,Matlab工具箱函数也同时有了飞速的发展。利用Matlab的优化工具箱可以求解如下问题:线性、非线性最小化最大最小化二次规划半无限问题线性、非线性方程(组)的求解线性、非线性的最小二乘问题此外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。(1)目标函数最小化(2)约束非正(3)避免使用全局变量使用Matlab的优化工具箱时,由于优化函数要求目标函数和约束条件满足一定的格式,所以需要用户在进行模型输入时注意以下几个问题:优化函数fminbnd、fminsearch、fminunc、fminicon、fgoalattain、fminmax和lsqnonlin都要求目标函数最小化,如果优化问题要求目标函数最大化,可以通过使该目标函数的负值最小化即-f(x)最小化来实现。近似地,对于quadprog函数提供-H和-f,对于linprog函数提供-f。优化工具箱要求非线性不等式约束的形式为Ci(x)≤0,通过对不等式取负可以达到使大于零的约束形式变为小于零的不等式约束形式的目的,如Ci(x)≥0形式的约束等价于-Ci(x)≤0;Ci(x)≥b形式的约束等价于-Ci(x)+b≤0。二、Matlab优化工具箱简介(一)优化工具箱中的函数优化工具箱中的函数包括下面几类:函数描述fminsearch,fminunc无约束非线性最小化fminbnd有边界的标量非线性最小化fmincon有约束的非线性最小化linprog线性规划quadprog二次规划fgoalattain多目标规划fminimax最大最小化fseminf半无限问题1.最小化函数2.最小二乘问题函数描述\线性最小二乘lsqnonlin非线性最小二乘lsqnonneg非负线性最小二乘lsqlin有约束线性最小二乘lsqcurvefit非线性曲线拟合3.方程求解函数函数描述\线性方程求解fzero标量非线性方程求解fsolve非线性方程求解中型问题方法演示函数4.演示函数函数描述tutdemo教程演示optdemo演示过程菜单officeassign求解整数规划goaldemo目标达到举例dfildemo过滤器设计的有限精度大型问题方法演示函数函数描述molecule用无约束非线性最小化进行分子组成求解circustent马戏团帐篷问题——二次规划问题optdeblur用有边界线性最小二乘法进行图形处理(二)优化函数的变量在Matlab的优化工具箱中,定义了一系列的标准变量,通过使用这些标准变量,用户可以使用Matlab来求解在工作中碰到的问题。主要有如下三类:1.输入变量调用Matlab优化工具箱,需要首先给出一些输入变量,优化工具箱函数通过对这些输入变量的处理得到用户需要的结果。输入变量大体上分成输入系数和输入参数两类:变量名作用和含义主要的调用函数A,bA矩阵和b向量分别为线性不等式约束的系数矩阵和右端项fgoalattain,fmincon,fminimax,fseminf,linprog,lsqlin,quadprogAeq,beqAeq矩阵和beq向量分别为线性方程约束的系数矩阵和右端项fgoalattain,fmincon,fminimax,fseminf,linprog,lsqlin,quadprogC,d矩阵C和向量d分别为超定或不定线性系统方程组的系数矩阵和进行求解的右端项lsqlin,lsqnonnegf线性方程或二次方程中线性项的系数向量linprog,quadprogH二次方程中二次项的系数quadprogub,lb变量的上下界fgoalattain,fmincon,fminimax,fseminf,linprog,lsqlin,quadprog,lsqcurvefit,lsqnonlinfun待优化的函数fgoalattain,fminbnd,fmincon,fminimax,fminsearch,fminunc,fseminf,fzero,fsolve,lsqcurvefit,lsqnonlinnonlcon计算非线性不等式和等式fgoalattain,fmincon,fminimaxseminfcon计算非线性不等式约束、等式约束和半无限约束的函数fseminf输入系数表变量名作用和含义主要的调用函数goal目标试图达到的值fgoalattainntheta半无限约束的个数fseminfoptions优化选项参数结构所有P1,P2,…传给函数fun,变量nonlcon,变量seminfcon的其它变量fgoalattain,fminbnd,fmincon,fminimax,fsearch,fminunc,fseminf,fzero,fsolve,lsqcurvefit,lsqnonlinweight控制对象未达到或超过的加权向量fgoalattainxdata,ydata拟合方程的输入数据和测量数据lsqcurvefitx0初始点除fminbnd所有x1,x2函数最小化的区间fminbnd输入参数表2.输出变量变量名作用和含义x由优化函数求得的解fval解x处的目标函数值exitflag退出条件output包含优化结果信息的输出结构lambda解x处的Lagrange乘子grad解x处函数fun的梯度值hessian解x处函数fun的Hessian矩阵jacobian解x处函数fun的Jacobian矩阵maxfval解x处函数的最大值attainfactor解x处的达到因子residual解x处的残差值resnorm解x处残差的平方范数调用Matlab优化工具箱函数后,给出一系列输出变量,提供给用户相应的输出信息。3.优化参数参数名含义Derivativecheck对自定义的解析导数与有限差分导数进行比较Diagnostics打印进行最小化或求解的诊断信息DiffMaxChange有限差分求导的变量最大变化DiffMinChange有限差分求导的变量最小变化Display值为off时,不显示输出;为iter时,显示迭代信息;为final时,只显示结果在新版本中,notify,当函数不收敛时输出GoalsExactAchieve精确达到的目标个数GradConstr用户定义的非线性约束的梯度GradObj用户定义的目标函数的梯度Hessian用户定义的目标函数的Hessian矩阵HessPattern有限差分的Hessian矩阵的稀疏模式HessUpdateHessian矩阵修正结构参数名含义Jacobian用户定义的目标函数的Jacobian矩阵JacobPattern有限差分的Jacobian矩阵的稀疏模式LargeScale使用大型算法(如果可能的话)Levenberg-Marquardt用Levenberg-Marquardt方法代替Gauss-Newton方法LineSearchType一维搜索算法的选择MaxFunEvals允许进行函数评价的最大次数MaxIter允许进行迭代的最大次数MaxPCGIter允许进行PCG迭代的最大次数MeritFunction使用多目标函数MinAbsMax最小化最坏个案例绝对值的f(x)的个数PrecondBandWidthPCG前提的上带宽TolCon违背约束的终止容限TolFun函数值的终止容限TolPCGPCG迭代的终止容限TolXX处的终止容限TypicalX典型x值(三)参数设置对于优化控制,Matlab提供了18个参数。利用optimset函数,可以创建和编辑参数结构;利用optimget函数,可以获得options优化参数。这些参数的具体意义如下:参数名含义options(1)参数显示控制(默认值为0),等于1时显示一些结果options(2)优化点x的精度控制(默认值为1e-4)options(3)优化函数F的精度控制(默认值为1e-4)options(4)违反约束的结束标准(默认值为1e-6)options(5)算法选择,不常用options(6)优化程序方法选择,为0则为BFCG算法,为1则采用DF