求解非线性规划
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
非线性规划的实例与定义
如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。一般说来,解非线性规划要比解线性规划问题困难得多。而且,也不象线性规划有单纯形法这一通用方法,非线性规划目前还没有适于各种问题的一般算法,各个方法都有自己特定的适用范围。
1.2 线性规划与非线性规划的区别
如果线性规划的最优解存在,其最优解只能在其可行域的边界上达到(特别是可行域的顶点上达到);而非线性规划的最优解(如果最优解存在)则可能在其可行域的任意一点达到。
1.3 非线性规划的Matlab 解法
Matlab 中非线性规划的数学模型写成以下形式
)(min x f
⎪⎪⎩⎪⎪⎨⎧=≤=⋅≤0
)(0)(x Ceq x C Beq x Aeq B Ax , 其中)(x f 是标量函数,Beq Aeq B A ,,,是相应维数的矩阵和向量,)(),(x Ceq x C 是非线性向量函数。
Matlab 中的命令是
X=FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)
它的返回值是向量x ,其中FUN 是用M 文件定义的函数)(x f ;X0是x 的初始值;A,B,Aeq,Beq 定义了线性约束Beq X Aeq B X A =≤*,*,如果没有等式约束,则A=[],B=[],Aeq=[],Beq=[];LB 和UB 是变量x 的下界和上界,如果上界和下界没有约束,则LB=[],UB=[],如果x 无下界,则LB=-inf ,如果x 无上界,则UB=inf ;NONLCON 是用M 文件定义的非线性向量函数)(),(x Ceq x C ;OPTIONS 定义了优化参数,可以使用Matlab 缺省的参数设置。
例2 求下列非线性规划问题
⎪⎪⎩⎪⎪⎨⎧≥=+--≥-++=.0,0
208)( min 2
12212212221x x x x x x x x x f (i )编写M 文件fun1.m
function f=fun1(x);
f=x(1)^2+x(2)^2+8;
和M 文件fun2.m
function [g,h]=fun2(x);
g=-x(1)^2+x(2);
h=-x(1)-x(2)^2+2; %等式约束
(ii )在Matlab 的命令窗口依次输入
options=optimset;
[x,y]=fmincon('fun1',rand(2,1),[],[],[],[],zeros(2,1),[], ... 'fun2', options)
就可以求得当1,121==x x 时,最小值10=y 。
1.4 求解非线性规划的基本迭代格式
记(NP )的可行域为K 。
若K x ∈*,并且
K x x f x f ∈∀≤),()(*
则称*x 是(NP )的整体最优解,)(*x f 是(NP)的整体最优值。如果有
**,),()(x x K x x f x f ≠∈∀<
则称*x 是(NP )的严格整体最优解,)(*x f 是(NP)的严格整体最优值。 若K x ∈*,并且存在*x 的邻域)(*x N δ,使
K x N x x f x f )(),()(**δ∈∀≤,
则称*x 是(NP )的局部最优解,)(*x f 是(NP)的局部最优值。如果有
K x N x x f x f )(),()(**δ∈∀<
则称*x 是(NP )的严格局部最优解,)(*x f 是(NP)的严格局部最优值。
由于线性规划的目标函数为线性函数,可行域为凸集,因而求出的最优解就是整个可行域上的全局最优解。非线性规划却不然,有时求出的某个解虽是一部分可行域上的极值点,但并不一定是整个可行域上的全局最优解。
对于非线性规划模型(NP),可以采用迭代方法求它的最优解。迭代方法的基本思想是:从一个选定的初始点n R x ∈ 出发,按照某一特定的迭代规则产生一个点列}{k x ,使得当}{k x 是有穷点列时,其最后一个点是(NP)的最优解;当}{k x 是无穷点列时,它有极限点,并且其极限点是(NP)的最优解。
设n k R x ∈是某迭代方法的第k 轮迭代点,n k R x ∈+1是第1+k 轮迭代点,记
k k k k p t x x +=+1 (1) 这里1,,1=∈∈k n k k p R p R t ,显然k p 是由点k x 与点1+k x 确定的方向。式(1)就是求解非线性规划模型(NP)的基本迭代格式。
通常,我们把基本迭代格式(1)中的k p 称为第k 轮搜索方向,k t 为沿k p 方向的步长,使用迭代方法求解(NP)的关键在于,如何构造每一轮的搜索方向和确定适当的步长。 设0,≠∈p R x n ,若存在0>δ,使
),0(),()(δ∈∀<+t x f tp x f ,
称向量p 是f 在点x 处的下降方向。 设0,≠∈p R x n ,若存在0>t ,使
K tp x ∈+,
称向量p 是点x 处关于K 的可行方向。
一个向量p ,若既是函数f 在点x 处的下降方向,又是该点关于区域K 的可行方向,则称之为函数f 在点x 处关于K 的可行下降方向。
现在,我们给出用基本迭代格式(1)求解(NP)的一般步骤如下:
0 选取初始点0x ,令0:=k 。
1 构造搜索方向,依照一定规则,构造f 在点k x 处关于K 的可行下降方向作为搜索方向k p 。
2 寻求搜索步长。以k x 为起点沿搜索方向k p 寻求适当的步长k t ,使目标函数值有某种意义的下降。
3 求出下一个迭代点。按迭代格式(1)求出
k k k k p t x x +=+1。
若1+k x 已满足某种终止条件,停止迭代。
4 以1+k x 代替k x ,回到1步。
1.5 凸函数、凸规划
设)(x f 为定义在n 维欧氏空间)(n E 中某个凸集R 上的函数,若对任何实数)10(<<αα以及R 中的任意两点)1(x 和)2(x ,恒有
)()1()())1(()2()1()2()1(x f x f x x f αααα-+≤-+
则称)(x f 为定义在R 上的凸函数。
若对每一个)10(<<αα和R x x ∈≠)2()1(恒有
)()1()())1(()2()1()2()1(x f x f x x f αααα-+<-+