数学建模第6讲 非线性规划
数,简记: f : Rn R1, gi : Rn R1, h j : Rn R1
其它情况: 求目标函数的最大值,或约束条件小于等于零 两种情况,都可通过取其相反数化为上述一般形式.
2020/1/23
数学建模
3
定义1 把满足问题(1)中条件的解 X ( Rn )称为可行解(或可行
点),所有可行点的集合称为可行集(或可行域).记为D.即
性约束条件.因为线性近似通常只在展开点附近近似程度较
高,故需要对变量的取值范围加以限制,所增加的约束条件是:
xj
x
k j
k j
j = 1,L, n
求解该线性规划问题,得到最优解X k1 ;
(4) 检验 X k1对原约束是否可行.若 X k1对原约束可行,则转
步骤(5);否则,缩小步长限制,令
k j
=
k j
j = 1,L, n,返
回步骤(3),重解当前的线性规划问题;
5)
判断精度:若
k j
j =1,L,n,则点 X k1为近似最优解;
否则,令
k 1 j
=
k j
j =1,L,n,k=k+1,返回步骤(2). 返回
2020/1/23
数学建模
13
标准型为:
gi hj
X X
=
0 0
i = 1,2,...,m; j = 1, 2,...,l.
(1)
m
l
可设:TX , M = f X M min0, gi X 2 M hj X 2 (2)
i=1
j =1
将问题(1)转化为无约束问题: minT X , M
14
例1 min f(x1,x2)=-2x1-6x2+x12-2x1x2+2x22
s.t. x1+x2≤2
-x1+2x2≤2
x1≥0, x2≥0
1.写成标准形式:
1
min
z
=
(
x1,
x2
)
1
-1
2
x1 x2
2 6
T
x1 x2
(3)
X R n
其中T(X,M)称为罚函数,M称为罚因子,带M的项称为罚项,
这里的罚函数只对不满足约束条件的点实行惩罚:当X D 时,满足
各 gi X 0,hi X = 0 ,故罚项为0,不受惩罚.当X D 时,必
有约束条件 gi X 0或hi X 0 ,故罚项大于0,要受惩罚.
返回(3).
2020/1/23
数学建模
10
近似规划法
近似规划法的基本思想:将问题(3)中的目标函数 f X 和约束条件 gi X 0 (i =1,...,m); hj X = 0 (j =1, ,l)
近似为线性函数,并对变量的取值范围加以限制,从 而得到一个近似线性规划问题,再用单纯形法求解之, 把其符合原始条件的最优解作为(3)的解的近似.
数学建模
返回 2
非现性规划的基本概念
定义 如果目标函数或约束条件中至少有一个是非线性函数, 则最优化问题就叫做非线性规划问题.
一般形式:
min f X
s.t.gi h j
X X
=
0 0
i = 1,2,..., m; j = 1,2,...,l.
(1)
其中 X = x1, x2,L, xn T Rn,f , gi , hj 是定义在 Rn 上的实值函
X X* 时,若 f X * f X ,则称X*是f(X)在D上的严格全局极小值
点(严格全局最优解).
2020/1/23
数学建模
返回 4
非线性规划的基本解法
1. 罚函数法
SUTM外点法 SUTM内点法(障碍罚函数法)
2. 近似规划法
2020/1/23
数学建模
返回 5
罚函数法
(3)
以
X
k 1
D0为初始点,求解min X D 0
I
X
,
rk
,其中
X
D0的
最优解设为 X k = X rk D0;
(4)
检验是否满足
r
m
ln
i=1
gi
Xk
或
rk
m
i=1gi
1
X
Байду номын сангаас
,若满
足,停止迭代,令 X * X k ;否则取rk1 = rk ,令k = k 1,
Ceq(X)=0 VLB X VUB
其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成
的向量,其他变量的含义与线性规划、二次规划中相同.用 MATLAB求解上述问题,基本步骤分三步:
1. 首先建立M文件fun.m,用来定义目标函数F(X):
function f=fun(X);
f=F(X);
r 为障碍因子.
这样问题(1)就转化为求一系列极值问题:
min I X , r 得 X(k r).
k
k
0
202X0/1D/23
数学建模
9
内点法的迭代步骤
(1) 给定允许误差 0,取r1 0,0 1;
(2) 求出约束集合 D 的一个内点 X 0 D0,令k = 1;
1.二次规划
min Z= 1 XTHX+cTX
2
s.t. AX≤b
Aeq X = beq
VLB≤X≤VUB
用MATLAB软件求解,其输入格式如下:
1.x=quadprog(H,C,A,b);
2.x=quadprog(H,C,A,b,Aeq,beq);
3.x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB);
s.t.
2.输入命令:
H=[1 -1; -1 2];
1
1
1
2
x1 x2
2 2
0 0
x1 x2
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)
3.运算结果为: x 2020/1/23 =0.6667 1.数学3建3模33
MATLAB(youh1)
z = -8.222125
标准型为:
2.一般非线性规划
min F(X)
s.t. AX b
Aeq X = beq G(X) 0
4.x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0);
5.x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB,X0,options);
6.[x,fval]=quaprog(…);
7.[x,fval,exitflag]=quaprog(…);
8.[x20,20f/1v/23al,exitflag,outp数u学t建]模=quaprog(…);
每得到一个近似解,都从这点出发,重复以上步骤.
这样,通过求解一系列线性规划问题,产生一个 由线性规划最优解组成的序列,经验表明,这样的序 列往往收敛于非线性规划问题的解.
2020/1/23
数学建模
11
近似规划法的算法步骤如下:
{ } (1) 给定初始可行点 X 1 =
x11, x12 ,L, x1n
2. 若约束条件中有非线性约束:G(X) 0 或Ceq(X)=0,
则建立M文件nonlcon.m定义函数G(X)与Ceq(X):
function [G,Ceq]=nonlcon(X)
G=…
Ceq=…
2020/1/23
数学建模
16
3. 建立主程序.求解非线性规划的函数是fmincon,命令的基本 格式如下:
2020/1/23
数学建模
17
注意:
[1] fmincon函数提供了大型优化算法和中型优化算法.默认 时: 若在fun函数中提供了梯度(options参数的GradObj设置 为’on’),并且只有上下界存在或只有等式约束,fmincon 函数将选择大型算法.当既有等式约束又有梯度约束时,使用中 型算法.
2020/1/23
数学建模
7
SUTM外点法(罚函数法)的迭代步骤
1.任意给定初始点 X0,取M1>1,给定允许误差 0,令k=1;
2.求无约束极值问题 min
minT
X R n
X,M
=
T
(
X
k
,
X Rn
Mk )
T
;
X
,
M
的最优解,设Xk=X(Mk),即
3.若存在 i 1 i m ,使 gi X k ,则取Mk>M(Mk1 = M, = 10),
(1) x=fmincon(‘fun’,X0,A,b) (2) x=fmincon(‘fun’,X0,A,b,Aeq,beq) (3) x=fmincon(‘fun’,X0,A,b, Aeq,beq,VLB,VUB) (4) x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’)