用Matlab求解非线性规划 下载本文

用Matlab求解非线性规划

1.无约束优化问题

minf(x),其中向量x的n个分量xi都是决策变量,称f(x)目标函数。 nx?R 用Matlab求解:先建立函数文件mbhs.m,内容是f(x)的表达式;再回到Matlab命令区输入决策变量初值数据x0,再命令[x,fmin]=fminunc(@mbhs,x0)

如:min(2x12?3x22)的最优解是x?(0,0)T. 用Matlab计算,函数文件为

x?R2function f=mbhs(x) f=2*x(1)^2+3*x(2)^2;

再输入初值 x0=[1;1]; 并执行上述命令,结果输出为 x =? fmin =? 略。 2.约束优化问题

minf(x)nx?Rs.t.gi(x)?0,(i?1,2,...,p),hi(x)?0,(i?1,2,...,m),L?x?U.

其中:向量x的n个分量xi都是决策变量,称f(x)目标函数、gi(x)等式约束函数、hi(x)不等式约束函数、L下界、U上界。

用Matlab求解:先把模型写成适用于Matlab的标准形式

minf(x)nx?Rs.t.Ax?b,Aeqx?beq,

g(x)?0,h(x)?0,L?x?U.约束条件中:把线性的式子提炼出来得前两个式子;后三个式子都是列向量。

?g1(x)???(如:A2?6,b2?1,Aeq?[],beq?[],g(x)???? ) ?gp(x)???再建立两个函数文件:目标函数mbhs.m;约束函数yshs.m

再回到Matlab命令区,输入各项数据及决策变量初值数据x0,执行命令 [x,fmin]=fmincon(@mbhs,x0,A,b,Aeq,beq,L,U,@yshs)

例:单位球x2?y2?z2?1内,曲面z?x2?y2?0.5?0.1xy的上方,平面

,满足上述三个条件的区域记为D,求函数x?y?z?0.08?0之上(不是上面)

exyzsin(x?y?z)?e?xycos(z2?1)在D上的最大值、最大值点。

解:(1)目标函数文件mbhs.m

function f=mbhs(x)

f=-exp(x(1)*x(2)*x(3))*sin(x(1)+x(2)-x(3))-exp(-x(1)*x(2))*cos(x(3)^2-1); (2)约束函数文件yshs.m function [g,h]=yshs(x)

g=[x(1)^2+x(2)^2+x(3)^2-1;x(1)^2+x(2)^2-0.5-0.1*x(x)*x(2)-x(3)]; h=[];

(3)数据准备

x0=[0.0;0.02;0.02];A=[];b=[];Aeq=[1,1,1];beq=0.08; L=[-1;-1;-1];U=[1;1;1]; (4)执行命令

[x,fmin]=fmincon(@mbhs,x0,A,b,Aeq,beq,L,U,@yshs) (5)结果 ???