数学建模通识第十讲优化.ppt
计算结果为:x=[3.00005.00000.07077.000000.9293003.929306.000010.07076.38754.39435.75117.1867]’fval=105.4626exitflag=1第45页,共45页,星期六,2024年,5月非线性规划基本概念如果目标函数或约束条件中至少有一个是非线性函数时的最优化问题就叫做非线性规划问题一般形式其中x为n维列向量,f,gi,hj为实值函数.第13页,共45页,星期六,2024年,5月把满足问题中条件的解称为可行解(或可行点),所有可行点的集合称为可行集(或可行域).记为D.即D={x|gi(x)=0,hj(x)=0,i=1,…,m,j=1,…,l}对于优化问题,有局部最有解和全局最有解之分.非线性规划的基本解法1.罚函数法2.近似规划法标准型为Minf(x)s.t.Ax=bAeqx=beqG(x)=0Ceq(x)=0VLB=x=VUB其中x为n维变元向量,G(x)与Ceq(x)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.第14页,共45页,星期六,2024年,5月用Matlab求解上述问题,基本步骤分三步:1.首先建立M文件fun.m,定义目标函数f(x):functionf=fun(X);f=f(x);2.若约束条件中有非线性约束:G(x)或Ceq(x),则建立M文件nonlcon.m定义函数G(x)与Ceq(x):function[G,Ceq]=nonlcon(X)G=...Ceq=...第15页,共45页,星期六,2024年,5月3.建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下:(1)x=fmincon(‘fun’,x0,A,b)(2)x=fmincon(‘fun’,x0,A,b,Aeq,beq)(3)x=fmincon(‘fun’,x0,A,b,Aeq,beq,VLB,VUB)(4)x=fmincon(‘fun’,x0,A,b,Aeq,beq,VLB,VUB,’nonlcon’)(5)x=fmincon(‘fun’,x0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options)(6)[x,fval]=fmincon(...)(7)[x,fval,exitflag]=fmincon(...)(8)[x,fval,exitflag,output]=fmincon(...)注意[1]fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options参数的GradObj设置为’on’),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。[2]fmincon函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。[3]fmincon函数可能会给出局部最优解,这与初值x0的选取有关第16页,共45页,星期六,2024年,5月先建立M文件fun2.m,functionf=fun2(x);f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);再建立M文件mycon.m定义非线性约束:function[g,ceq]=mycon(x)g=[x(1)+x(2);1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];ceq=[];第17页,共45页,星期六,2024年,5月非线性规划的网格搜索二元函数举例Minf(x1,x2)s.t.ax1bcx2d其中f(x1,x2)为连续函数。第18页,共45页,星期六,2024年,5月求解思路先建立目标函数的m函数文件,名字可记为fun。N1=1000;N2=1000;h1=(b-a)/N1;h2=(d-c)/N2;f0=inf;xo=[ac];fori=0:N1