第三章非线性规划.docx
- 文档编号:25068038
- 上传时间:2023-06-04
- 格式:DOCX
- 页数:29
- 大小:194.96KB
第三章非线性规划.docx
《第三章非线性规划.docx》由会员分享,可在线阅读,更多相关《第三章非线性规划.docx(29页珍藏版)》请在冰豆网上搜索。
第三章非线性规划
第三章非线性规划
§1非线性规划
1.1非线性规划的实例与定义
如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。
一般说来,解非线性规划要比解线性规划问题困难得多。
而且,也不象线性规划有单纯形法这一通用方法,非线性规划目前还没有适于各种问题的一般算法,各个方法都
有自己特定的适用范围。
下面通过实例归纳出非线性规划数学模型的一般形式,介绍有关非线性规划的基本
概念。
例1(投资决策问题)某企业有n个项目可供选择投资,并且至少要对其中一个
项目投资。
已知该企业拥有总资金A元,投资于第i(i1,,n)个项目需花资金ai元,
并预计可收益b元。
试选择最佳投资方案。
解设投资决策变量为
且总的投资金额不能超过总资金A,故有限制条件
n
0aixiA
i1
另外,由于xi(i1,,n)只取值0或1,所以还有
xi(1xi)0,i1,,n.
最佳投资方案应是投资额最小而总收益最大的方案,所以这个最佳投资决策问题归
结为总资金以及决策变量(取0或1)的限制条件下,极大化总收益和总投资之比。
因
此,其数学模型为:
n
i1maxQn
aiXi
i1
n
s.t.0aixiA
i1
Xi(1Xi)0,i1,,n.
上面例题是在一组等式或不等式的约束下,求一个函数的最大值(或最小值)问
题,其中目标函数或约束条件中至少有一个非线性函数,这类问题称之为非线性规划问
题,简记为(NP。
可概括为一般形式
minf(x)
s.t.hj(x)0,j1,,q(NP)
gi(x)0,i1,,p
其中x[XiXn]T称为模型(NF3)的决策变量,f称为目标函数,gi(i1,,p)
和hj(j1,,q)称为约束函数。
另外,gi(x)0(i1,,p)称为等式约束,
hj(x)0(j1,,q)称为不等式约束。
对于一个实际问题,在把它归结成非线性规划问题时,一般要注意如下几点:
(i)确定供选方案:
首先要收集同问题有关的资料和数据,在全面熟悉问题的基础上,确认什么是问题的可供选择的方案,并用一组变量来表示它们。
(ii)提出追求目标:
经过资料分析,根据实际需要和可能,提出要追求极小化或极大化的目标。
并且,运用各种科学和技术原理,把它表示成数学关系式。
(iii)给出价值标准:
在提出要追求的目标之后,要确立所考虑目标的“好”或“坏”的价值标准,并用某种数量形式来描述它。
(iv)寻求限制条件:
由于所追求的目标一般都要在一定的条件下取得极小化或极大化效果,因此还需要寻找出问题的所有限制条件,这些条件通常用变量之间的一些不等式或等式来表示。
1.2线性规划与非线性规划的区别
如果线性规划的最优解存在,其最优解只能在其可行域的边界上达到(特别是可行域的顶点上达到);而非线性规划的最优解(如果最优解存在)则可能在其可行域的任意一点达到。
1.3非线性规划的Matlab解法
Matlab中非线性规划的数学模型写成以下形式
minf(x)
AxB
AeqxBeq
C(x)0,
Ceq(x)0
其中f(x)是标量函数,A,B,Aeq,Beq是相应维数的矩阵和向量,C(x),Ceq(x)是非
线性向量函数。
Matlab中的命令是X=FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)它的返回值是向量x,其中FUN是用M文件定义的函数f(x);X0是x的初始值;
A,B,Aeq,Beq定义了线性约束A*XB,Aeq*XBeq,如果没有等式约束,则A=[],B=[],Aeq=[],Beq=[];LB和UB是变量x的下界和上界,如果上界和下界没有约
束,则LB=[],UB=[],如果x无下界,则LB=-inf,如果x无上界,则UB=inf;NONLCON是用M文件定义的非线性向量函数C(x),Ceq(x);OPTIONS定义了优化参数,可以使
用Matlab缺省的参数设置。
例2求下列非线性规划问题
22
minf(x)x1x28
2
x1x20
2
x1x220
x1,x20.
(i)编写M文件fun1.m
functionf=fun1(x);
f=x(1F2+x
(2)A2+8;
和M文件fun2.m
function[g,h]=fun2(x);
g=-x
(1)A2+x
(2);
h=-x
(1)-x
(2)A2+2;%等式约束
(ii)在Matlab的命令窗口依次输入
options=optimset;
[x,y]=fmincon('fun1',rand(2,1),[],[],[],[],zeros(2,1),[],...
'fun2',options)
就可以求得当x,1,x21时,最小值y10。
1.4求解非线性规划的基本迭代格式
记(NP)的可行域为K。
若x*K,并且
f(x)f(x),xK
则称x*是(NP)的整体最优解,f(X*)是(NP)的整体最优值。
如果有
f(x)f(x),xK,xx
则称x*是(NP)的严格整体最优解,f(x*)是(NP)的严格整体最优值。
若x*K,并且存在x*的邻域N(x*),使
f(x*)f(x),xN(x*)K,
则称x*是(NP)的局部最优解,f(X*)是(NP)的局部最优值。
如果有
f(x*)f(x),xN(x*)K
则称x*是(NP)的严格局部最优解,f(x*)是(NP)的严格局部最优值。
由于线性规划的目标函数为线性函数,可行域为凸集,因而求出的最优解就是整个可行域上的全局最优解。
非线性规划却不然,有时求出的某个解虽是一部分可行域上
的极值点,但并不一定是整个可行域上的全局最优解。
对于非线性规划模型(NP),可以采用迭代方法求它的最优解。
迭代方法的基本思想是:
从一个选定的初始点xRn出发,按照某一特定的迭代规则产生一个点列
{xk},使得当{xk}是有穷点列时,其最后一个点是(NP)的最优解;当{xk}是无穷点
列时,它有极限点,并且其极限点是(NP)的最优解。
设xkRn是某迭代方法的第k轮迭代点,xk1Rn是第k1轮迭代点,记
xxtkP
(1)
这里tkR1,pkRn,|pk||1,显然Pk是由点xk与点xk1确定的方向。
式
(1)就是求解非线性规划模型(NP)的基本迭代格式。
通常,我们把基本迭代格式
(1)中的pk称为第k轮搜索方向,tk为沿pk方向的步长,使用迭代方法求解(NP)的关键在于,如何构造每一轮的搜索方向和确定适当的步长。
设xRn,p0,若存在0,使
f(xtp)f(x),t(0,),
称向量p是f在点x处的下降方向。
设xRn,p0,若存在t0,使
xtpK,
称向量p是点x处关于K的可行方向。
一个向量p,若既是函数f在点x处的下降方向,又是该点关于区域K的可行方向,则称之为函数f在点x处关于K的可行下降方向。
现在,我们给出用基本迭代格式
(1)求解(NP)的一般步骤如下:
0°选取初始点x0,令k:
0。
k
1°构造搜索方向,依照一定规则,构造f在点x处关于K的可行下降方向作为
搜索方向pk。
kk
2°寻求搜索步长。
以x为起点沿搜索方向p寻求适当的步长tk,使目标函数值有某种意义的下降。
3°求出下一个迭代点。
按迭代格式
(1)求出
xk1
kk
xtkP。
若xk1已满足某种终止条件,停止迭代。
k1k
4°以xk1代替xk,回到1。
步。
1.5凸函数、凸规划
设f(x)为定义在n维欧氏空间E(n)中某个凸集R上的函数,若对任何实数
(01)以及R中的任意两点x⑴和x
(2),恒有
f(x⑴
(1)x
(2))f(x⑴)
(1)f(x
(2))
则称f(x)为定义在R上的凸函数。
若对每一个(01)和x
(1)x
(2)R恒有
f(x
(1)
(1)x
(2))f(x⑴)
(1)f(x
(2))
则称f(x)为定义在R上的严格凸函数。
考虑非线性规划
minf(x)
xR
R{x|gj(x)0,j1,2,,1}
假定其中f(x)为凸函数,gj(x)(j1,2,,l)为凸函数,这样的非线性规划称为
凸规划。
可以证明,凸规划的可行域为凸集,其局部最优解即为全局最优解,而且其最优解的集合形成一个凸集。
当凸规划的目标函数f(x)为严格凸函数时,其最优解必定唯
一(假定最优解存在)。
由此可见,凸规划是一类比较简单而又具有重要理论意义的非线性规划。
§无约束问题
2.1一维搜索方法
当用迭代法求函数的极小点时,常常用到一维搜索,即沿某一已知方向求目标函数
的极小点。
一维搜索的方法很多,常用的有:
(1)试探法(“成功一失败”,斐波那契法,0.618法等);插值法(抛物线插值法,三次插值法等);(3)微积分中的求根法(切线
法,二分法等)。
考虑一维极小化问题
minf(t)
(2)
atb
若f(t)是[a,b]区间上的下单峰函数,我们介绍通过不断地缩短[a,b]的长度,来
搜索得
(2)的近似最优解的两个方法。
为了缩短区间[a,b],逐步搜索得
(2)的最优解t*的近似值,我们可以采用以下途径:
在[a,b]中任取两个关于[a,b]是对称的点t1和t2(不妨设t2t1,并把它们叫做搜索点),计算f(tj和f(t2)并比较它们的大小。
对于单峰函数,若f(t2)f(ti),
则必有t*[a,ti],因而[a,ti]是缩短了的单峰区间;若f(tjf(t2),则有
t*[t2,b],故[t2,b]是缩短了的单峰区间;若f(t2)f(ti),则[a,ti]和[t2,b]都是
缩短了的单峰。
因此通过两个搜索点处目标函数值大小的比较,总可以获得缩短了的单
峰区间。
对于新的单峰区间重复上述做法,显然又可获得更短的单峰区间。
如此进行,在单峰区间缩短到充分小时,我们可以取最后的搜索点作为
(2)最优解的近似值。
应该按照怎样的规则来选取探索点,使给定的单峰区间的长度能尽快地缩短?
2.1.1Fibonacci法
若数列{Fn}满足关系:
FoFi1
FnFn2Fn1,n2,3,,
则称{Fn}为Fibonacci数列,Fn称为第n个Fibonacci数,称相邻两个Fibonacci数之
为Fibonacci分数。
当用斐波那契法以n个探索点来缩短某一区间时,区间长度的第一次缩短率为
弘,其后各次分别为弘,也,,£1。
由此,若t1和t2(t2t1)是单峰区间[a,b]
FnFnFn2F2
中第1个和第2个探索点的话,那么应有比例关系
如果要求经过一系列探索点搜索之后,使最后的探索点和最优解之间的距离不超过精度0,这就要求最后区间的长度不超过,即
据此,我们应按照预先给定的精度,确定使(4)成立的最小整数n作为搜索次数,
直到进行到第n个探索点时停止。
用上述不断缩短函数f(t)的单峰区间[a,b]的办法,来求得问题
(2)的近似解,
是Kiefer(1953年)提出的,叫做Finbonacci法,具体步骤如下:
索次数n。
2°k1,a
a°,bb0,计算最初两个搜索点,按(3)计算t1和t2。
3°whilek
n
1
f1
f(t1),f2
f(t2)
if
f1
f2
F(n
1k)心
at2
;t2
匕恙
a
(b
a)
F(n
k)
else
」F(n1
k)/
b忧
t1
t2;t2
b
(a
b)
F(n
k)
end
kk1
end
4°当进行至kn1时,
1
t1t2-(ab)
2
这就无法借比较函数值f(tj和f(t2)的大小确定最终区间,为此,取
1
t2(ab)
2
1
tia(-)(ba)
2
其中为任意小的数。
在t-和t2这两点中,以函数值较小者为近似极小点,相应的函数
值为近似极小值。
并得最终区间[a,t1]或[t2,b]。
由上述分析可知,斐波那契法使用对称搜索的方法,逐步缩短所考察的区间,它能
以尽量少的函数求值次数,达到预定的某一缩短率。
例3试用斐波那契法求函数f(t)t2t2的近似极小点,要求缩短后的区间
不大于区间[1,3]的0.08倍。
程序留作习题。
2.1.20.618法
若0,满足比例关系
1
1
451
称之为黄金分割数,其值为0.6180339887
2
黄金分割数
.。
Fn1
1Fn
Fn1
Fn
和Fibonacci分数之间有着重要的关系,它们是
,n为偶数,
Fn1
n,n为奇数。
Fn1
Fn1
limnFn
现用不变的区间缩短率0.618,代替斐波那契法每次不同的缩短率,就得到了黄金
分割法(0.618法)。
这个方法可以看成是斐波那契法的近似,实现起来比较容易,效果也相当好,因而易于为人们所接受。
用0.618法求解,从第2个探索点开始每增加一个探索点作一轮迭代以后,原单
峰区间要缩短0.618倍。
计算n个探索点的函数值可以把原区间[a0,b0]连续缩短n1
次,因为每次的缩短率均为,故最后的区间长度为
时,可用下式计算探索点个数n:
(boao)"'
这就是说,当已知缩短的相对精度为
n1
当然,也可以不预先计算探索点的数目n,而在计算过程中逐次加以判断,看是否已满
足了提出的精度要求。
0.618法是一种等速对称进行试探的方法,每次的探索点均取在区间长度的0.618
倍和0.382倍处。
2.2二次插值法
对极小化问题
(2),当f(t)在[a,b]上连续时,可以考虑用多项式插值来进行一维搜索。
它的基本思想是:
在搜索区间中,不断用低次(通常不超过三次)多项式来近似目标函数,并逐步用插值多项式的极小点来逼近
(2)的最优解。
2.3无约束极值问题的解法
无约束极值问题可表述为
minf(x),xE(n)(5)
求解问题(5)的迭代法大体上分为两种:
一是用到函数的一阶导数或二阶导数,称为解析法。
另一是仅用到函数值,称为直接法。
2.3.1解析法
2.3.1.1梯度法(最速下降法)
对基本迭代格式
k1k丄k
XXtkP(6)
kk
我们总是考虑从点X出发沿哪一个方向p,使目标函数f下降得最快。
微积分的知识告诉我们,点Xk的负梯度方向
kk、
Pf(x),
是从点Xk出发使f下降最快的方向。
为此,称负梯度方向f(xk)为f在点Xk处的
最速下降方向。
按基本迭代格式(6),每一轮从点Xk出发沿最速下降方向f(xk)作一维搜索,
来建立求解无约束极值问题的方法,称之为最速下降法。
这个方法的特点是,每轮的搜索方向都是目标函数在当前点下降最快的方向。
同
时,用f(xk)0或f(xk)||作为停止条件。
其具体步骤如下:
1°选取初始数据。
选取初始点X0,给定终止误差,令k:
0。
2°求梯度向量。
计算f(xk),若||f(xk)|,停止迭代,输出xk。
否则,
进行3°。
构造负梯度方向。
取
pkf(xk).
进行一维搜索。
求tk,使得
f(xktkpk)minf(xktpk)
t0
令xk1
例4
xktkpk,k:
k1,转2°。
用最速下降法求解无约束非线性规划问题
minf(x)x;25x;
106。
其中x(X1,X2)T,要求选取初始点X0(2,2)t,终止误差
解:
(i)f(x)(2x1,50x2)T
编写M文件detaf.m如下
function[f,df]=detaf(x);
f=x
(1)A2+25*x
(2)A2;
df
(1)=2*x
(1);df
(2)=50*x
(2);
(ii)编写M文件zuisu.m
clc
x=[2;2];
[f0,g]=detaf(x);
whilenorm(g)>0.000001
p=-g'/norm(g);
t=1.0;f=detaf(x+t*p);
whilef>f0
t=t/2;f=detaf(x+t*p);
end
x=x+t*p
[f0,g]=detaf(x)
end
2.3.1.2Newton法
处的二次逼近式
考虑目标函数f在点x
f(x)Q(x)f(xk)
f(xk)T(xxk)扣xk)T2f(xk)(xxk)
假定Hesse阵
编写M文件nwfun.m如下:
function[f,df,d2f]=nwfun(x);
f=x
(1)A4+25*x
(2)A4+x
(1)A2*x
(2)A2;df
(1)=4*x
(1)A3+2*x
(1)*x
(2)A2;df
(2)=100*x
(2)A3+2*x
(1)A2*x
(2);d2f(1,1)=12*x
(1)A2+2*x
(2)A2;d2f(1,2)=4*x
(1)*x
(2);d2f(2,1)=d2f(1,2);d2f(2,2)=300*x
(2)A2+4*x
(1)*x
(2);
(ii)编写M文件:
clc
x=[2;2];
[f0,g1,g2]=nwfun(x)
whilenorm(g1)>0.00001%deadloop,fori=1:
3
p=-inv(g2)*g1',p=p/norm(p)
t=1.0,f=detaf(x+t*p)
whilef>f0
t=t/2,f=detaf(x+t*p),
endx=x+t*p
[f0,g1,g2]=nwfun(x)
end
如果目标函数是非二次函数,一般地说,用Newton法通过有限轮迭代并不能保证
可求得其最优解。
Newton法的优点是收敛速度快;缺点是有时不好用而需采取改进措施,此外,当维数较高时,计算[2f(xk)]1的工作量很大。
2.3.1.3变尺度法
变尺度法(VariableMetricAlgorithm)是近20多年来发展起来的,它不仅是求解
无约束极值问题非常有效的算法,而且也已被推广用来求解约束极值问题。
由于它既避
免了计算二阶导数矩阵及其求逆过程,又比梯度法的收敛速度快,特别是对高维问题具
有显著的优越性,因而使变尺度法获得了很高的声誉。
下面我们就来简要地介绍一种变
尺度法一DFP法的基本原理及其计算过程。
这一方法首先由Davidon在1959年提出,
后经Fletcher和Powell加以改进。
我们已经知道,牛顿法的搜索方向是[2f(xk)]
导数矩阵[2f(xk)]及其逆阵,我们设法构造另一个矩阵,的逆阵[2f(xk)]1,这一类方法也称拟牛顿法(
下面研究如何构造这样的近似矩阵,并将它记为H(k)。
我们要求:
每一步都能以
现有的信息来确定下一个搜索方向;每做一次选代,目标函数值均有所下降;这些近似
矩阵最后应收敛于解点处的
当f(x)是二次函数时,f(x)
1f(xk),为了不计算二阶
用它来逼近二阶导数矩阵
Quasi-NewtonMethod)。
Hesse阵的逆阵。
kk1
其Hesse阵为常数阵A,任两点x和x处的梯度之差为
kk1
f(x)A(x
k1k
xxA
对于非二次函数,仿照二次函数的情形,矩阵H(k1)满足关系式
k1k
xx
这就是常说的拟
若令
G(k)
k
x
则式(7)变为
k
x
1[f(xk1)
f(xk)]
要求其
H(k1)[f(xk1)f(xk)]
Newton条件。
xk
f(xk1)f(xk)
1xk
Hesse阵的逆阵的第k1次近似
(7)
(8)
H(k1)G(k)_(9)
1已知,用下式求H化1)(设H⑹和H"1)均为对称正定阵);_H(k)其中H(k)称为第
现假定H(k)
H(k1)I
H(k)
k次校正矩阵。
显然,
xk(H(k)
_(10)
H(k1}应满足拟Newton条件(9),即要求
H(k))G(k)
由此可以设想,
H(k)G(k)
H(k)的一种比较简单的形式是xk(Q(k))TH(k)G(k)(W(k))T
xkH(k)G(k)
(11)
H(k)
其中Q(k)和W(k)为两个待定列向量。
将式(12)中的H(k)代入(11),得
xk(Q(k))TG(k)H(k)G(k)(W(k))TG(k)这说明,应使
xkH(k)G(k)
(Q(k))TG(k)(W(k))TG(k)1
Q(k)
W(k)kH(k)G(k)
由式(13)得
k(xk)TG(k)k(G(k))TH(k)G(k)1
若(xk)TG(k)和(G(k))TH(k)G(k)不等于零,则有
上述矩阵称为尺度矩阵。
通常,我们取第一个尺度矩阵H(0)为单位阵,以后的尺度矩
阵按式(18)逐步形成。
可以证明:
(i)当xk不是极小点且H(k)正定时,式(17)右端两项的分母不为零,从而可按式(18)产生下一个尺度矩阵H(k1);
(ii)若H(k)为对称正定阵,则由式(18)产生的H(k1)也是对称正定阵;iii)由此推出DFP法的搜索方向为下降方向。
现将DFP变尺度法的计算步骤总结如下。
1°给定初始点X0及梯度允许误差0。
2。
若f(x0),则X0即为近似极小点,停止迭代,否则,转向下一步。
3。
令
H(0)I(单位矩阵),
0(0)0\
pHf(x)
在p0方向进行一维搜索,确定最佳步长
0000\
minf(xp)f(x0P)
如此可得下一个近似点
100
xx°p
4°一般地,设已得到近似点xk,算出f(Xk),若
If(xk)|_
则Xk即为所求的近似解,停止迭代;否则,计算H(k):
H(k1)G(k1)(G(k1))Th(k1)
(G(k1))TH(k1)G(k1)
并令pkH(k)f(xk),在pk方向上进行一维搜索,得k,从而可得下一个近似点
k1kk
XXkP
5°若Xk1满足精度要求,则Xk1即为所求的近似解,否则,转回4。
,直到求
出某点满足精度要求为止。
232直接法
在无约束
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 非线性 规划