首页 理论教育 解决非线性规划问题的方法

解决非线性规划问题的方法

时间:2023-06-24 理论教育 版权反馈
【摘要】:MATLAB代码:f=‘4^2+^2’;[x,reshorm]=lsqnonlin结果:x=3.9987 3.9987reshorm=3.2187e-0123.有约束非线性规划问题有约束非线性规划数学模型为minFs.t.Gi≤0 (i=1,…在有约束非线性规划问题中,通常要将该问题转换为更简单的子问题,这些子问题可以求并作为迭代过程的基础。

解决非线性规划问题的方法

1.无约束非线性规划问题

对于无约束优化问题,如果函数连续的话,一般使用fminunc函数,如果函数不连续则使用fminsearch函数,对于二次以上的问题fminsearch比fminunc函数具有更好的寻优效果。

(1)fminunc函数

1)语法:

x=fminunc(fun,x0)

x=fminunc(fun,x0,options)

x=fminunc(fun,x0,options,P1,P2)

[x,fval]=fminunc(…)

[x,fval,exitflag]=fminunc(…)

[x,fval,exitflag,output]=fminunc(…)

[x,fval,exitflag,output,grad] =fminunc(…)

[x,fval,exitflag,output,grad,hessian] =fminunc(…)

2)说明:fun为需最小化的目标函数;x0为给定的搜索的初始点;options指定优化参数。返回的x为最优解向量;fval为x处的目标函数值;exitflag描述函数的输出条件;out-put返回优化信息;grad返回目标函数在x处的梯度;hessian返回在x处目标函数的海赛矩阵信息。

例4-7 求minf=4x2+5xy+2y2

需要先编辑myfun.m文件:

function f=myfun(x)

f=4∗x(1)^2+5∗x(1)∗x(2)+2∗x(2)^2;

取初始点:x0=(1,1),在Command Window输入:

x0=[1,1];

[x,fval,exitflag]=fminunc(@myfun,x0)

运算结果:

x=

1.0e-005∗

0.2490 -0.4397

fval=

8.7241e-012

exitflag= 1

(2)fminsearch函数

语法:

x=fminsearch(fun,x0)

x=fminsearch(fun,x0,options)

x=fminsearch(fun,x0,options,P1,P2)

[x,fval]=fminsearch(…)

[x,fval,exitflag]=fminsearch(…)

[x,fval,exitflag,output]=fminsearch(…)

[x,fval,exitflag,output,grad]=fminsearch(…)

[x,fval,exitflag,output,grad,hessian]=fminsearch(…)

参数及返回变量与fminunc函数相同。

2.多元非线性最小二乘问题

多元非线性二乘问题的数学模型

1)语法:

x=lsqnonlin(fun,x0)

x=lsqnonlin(fun,x9,lb,ub)

x=lsqnonlin(fun,x0,options)

x=lsqnonlin(fun,x0,options,P1,P2) ′

[x,resnorm]=lsqnonlin(…)

[x,resnorm,residual,exitflag]=lsqnonlin(…)

[x,resnorm,residual,exitflag,output]=lsqnonlin(…)

[x,resnorm,residual,exitflag,output,lambda]=lsqnonlin(…)

[x,resnorm,residual,exitflag,output,lambda,jacobianl=lsqnonlin(…)

2)说明:x返回解向量;resnorm返回x处残差的平方范数值sum(fun(x).^2);re-sidual返回x处的残差值fun(x);lambda返回包含x处拉格朗日乘子的结构参数;jacobian返回解x处的fun函数的雅可比矩阵

lsqnonlin默认时选择大型优化算法。Lsqnonlin通过将optidns.LargeScale设置为“off”来作中型优化算法,其采用一维搜索法。

例4-8 求minf=4(x2-x12+(x2-4)2,选择初始点x0(1,1)。

MATLAB代码:

f=‘4∗(x(2)-x(1))^2+(x(2)-4)^2’;(www.xing528.com)

[x,reshorm]=lsqnonlin(f,[1,1])

结果:

x=

3.9987 3.9987

reshorm=

3.2187e-012

3.有约束非线性规划问题

有约束非线性规划数学模型为

minFX

s.t.GiX)≤0 (i=1,…,m

GjX)=0 (j=m+1,…,n

XlXXu

式中,fX)为多元实值函数;GX)为向量值函数。

在有约束非线性规划问题中,通常要将该问题转换为更简单的子问题,这些子问题可以求并作为迭代过程的基础。其基于K-T方程解的方法的K-T方程可表达为

978-7-111-49719-6-Chapter05-56.jpgGiX)=0 (i=1,…,m

λi≥0 (i=m+1,…,n

方程第一行描述了目标函数和约束条件在解处梯度的取消。由于梯度取消,需要用La-grange乘子λi来平衡目标函数与约束梯度间大小的差异。

有约束非线性问题一般用fmincon函数求解。

1)语法:

x=fmincon(f,x0,A,b)

x=fmincon(f,x0,A,b,Aeq,beq)

x=fmincon(f,x0,A,b,Aeq,beq,lb,ub)

x=fmincon(f,x0,A,b,Aeq,beq,lb,ub,nonlcon)

x=fmincon(f,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

[x,fval]=fmincon(…)

[x,fval,exitflag]=fmincon(…)

[x,fval,exitflag,output]=fmincon(…)

[x,fval,exitflag,output,lambda]=fmincon(…)

2)说明:

x=fmincon(f,x0,A,b)返回值x为最优解向量。其中,x0为初始点;A、b为不等式约束的系数矩阵和右端列向量。

x=fmincon(f,x0,A,b,Aeq,beq)作有等式约束的问题。若没有不等式约束,则令A=[],b=[]。

x=fmincon(f,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)中lb、ub为变量x的下界和上界;nonlcon=@fun,由M文件fun.m给定非线性不等式约束c(x)≤0和等式约束g(x)=0;options为指定优化参数进行最小化。

例4-9 求解

minfX)=-x1x2x3

s.t.0≤x1+2x2+2x3≤72

首先建立目标函数文件myfun.m文件:

Function f=ff7(x)

f=-x(1)∗x(2)∗x(3)

然后将约束条件改写成如下不等式

-x1-2x2-2x3≤0

x1+2x2+2x3≤72

在Command Window键入程序:

A=[-1-2-2;1 2 2];

b=[0;72];

x0=[10;10;10];

[x,fval]=fmincon(@myfun,x0,A,b)

结果:

x=

24.0000

12.0000

12.0000

fval=

-3456

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈