
matlab求解非线性优化问题.ppt
12页多元函数的无约束最小值问题,在多元函数的无约束最小值问题,在Matlab中有中有2个经常使用的函数:个经常使用的函数: 1、、fminsearch 2、、fminunc 注意注意:: ((1)在使用这两个函数时,必须首先用)在使用这两个函数时,必须首先用M文件文件的形式存储待求最值的函数,该函数需以向量函数的形式存储待求最值的函数,该函数需以向量函数的形式表达;的形式表达; (( 2)最大值问题需转化为最小值问题最大值问题需转化为最小值问题n多元函数极值的求法多元函数极值的求法非线性优化问题的求法非线性优化问题的求法u使用格式:使用格式:[x,fval]=fminsearch(@f,x0)u输入参数:输入参数:@f: 目标函数;目标函数;x0: 初始点初始点(向量向量).u输出参数:输出参数:x: 最优解;最优解;fval: 最优解对应的函数值最优解对应的函数值.例:例:fminsearch(@f,[1,2]) 含义为:从点含义为:从点[1,2]开始开始 搜寻函数搜寻函数f 的最小值的最小值 n fminsearch非线性无约束优化问题非线性无约束优化问题例:求函数例:求函数 在在x=1,y=2附近的最小附近的最小值点。
值点解决步骤:解决步骤:1、建立、建立M文件,保存函数文件,保存函数f;; M文件内容为:文件内容为: function f=fun(x) f=-(x(1)+x(2))+(x(1)^2+x(2)^2+1); 2、调用、调用fminsearch函数求最值函数求最值. 在命令窗口中,输入:在命令窗口中,输入: x0=[1,2]; [x,fval]=fminsearch(@fun,x0) 3、输出结果为:、输出结果为: X = 0.5000 0.5000 fval =0.5000非线性无约束优化问题非线性无约束优化问题u 使用格式与使用格式与fminsearch类似:类似: [x,fval]= fminunc(@f,x0) 其中其中f为待求最值的向量函数,为待求最值的向量函数,x0为搜索过程开始时自为搜索过程开始时自变量的初始值。
变量的初始值例例::fminunc(@f,[1,2])含义为:从点含义为:从点[1,2]开始开始搜寻函搜寻函数数f的最小值的最小值 n fminunc非线性无约束优化问题非线性无约束优化问题n Matlab默认的二次规划默认的二次规划n 用用MATLAB软件求解软件求解,其输入格式如下其输入格式如下:[x,fval]=quadprog(H,c,A,b);[x,fval]=quadprog(H,c,A,b,Aeq,beq);[x,fval]=quadprog(H,c,A,b,Aeq,beq,LB,UB); [x,fval]=quadprog(H,c,A,b,Aeq,beq,LB,UB,X0); 二次规划问题二次规划问题7例例①① 写成标准形式:写成标准形式:二次规划问题二次规划问题8H=[2 -2; -2 4]; c=[-2 ;-6];A=[1 1; -1 2];b=[2;2];Aeq=[];beq=[]; VLB=[0;0];VUB=[];[x,z]=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)③③ 运算结果为:运算结果为:x = 0.8000 1.2000z = -7.2000 ②② 输入命令:输入命令:二次规划问题二次规划问题n求解约束非线性优化问题求解约束非线性优化问题n Matlab 求解约束非线性优化问题求解约束非线性优化问题 fminconn调用格式如下:调用格式如下:n[x,fval] = fmincon(fun,x0,A,b,Ae,be,lb,ub,nonlcon)约束非线性优化问题约束非线性优化问题n[x,fval] =fmincon(fun,x0,A,b,Ae,be,lb,ub,nonlcon)n输入参数:输入参数:ufun 表示优化目标函数,表示优化目标函数,x0 表示优化的初始值表示优化的初始值uA,b 表示满足线性关系式表示满足线性关系式 的系数矩阵和右端项的系数矩阵和右端项uAe,be 表示线性等式约束表示线性等式约束 的系数矩阵和右端项的系数矩阵和右端项ulb,ub 表示取值范围表示取值范围 的上限和下限的上限和下限unonlcon 表示需要参数满足的非线性关系式表示需要参数满足的非线性关系式 和和 11例例 1) 先建立先建立 M 文件文件 fun3.m, 定义目标函数定义目标函数: function f=fun3(x); f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); 2) 再建立再建立 M 文件文件 mycon.m 定义非线性约束:定义非线性约束: function [c,ceq]=mycon(x) c=[ 1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10]; ceq=[];123) 主程序主程序youh.m为为: x0=[-1;1]; A=[];b=[]; Aeq=[1 1];beq=[0]; vlb=[];vub=[]; [x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,vlb,vub,'mycon')3. 运算结果为:运算结果为: x = -1.2247 1.2247 fval = 1.8951。












