240 likes | 338 Views
第六章 非线性规划. 学习内容: 1 、非线性规划的基本理论。 2 、用数学软件求解非线性规划。 3 、建模案例:飞行管理问题。. 一、非线性规划问题的数学模型 一般形式 : Min f(X) s.t. h j (X)=0, j=1,2,…,l g i (X) ≧0 , i=1,2,…,m 其中: 决策向量(变量): X=(x 1 , x 2 ,…, x n ) 目标函数: f(X) 约束函数: g i (X) 和 h j (X), i=1,2,…,m; j=1,2,….,l
E N D
第六章 非线性规划 学习内容: 1、非线性规划的基本理论。 2、用数学软件求解非线性规划。 3、建模案例:飞行管理问题。
一、非线性规划问题的数学模型一般形式: Min f(X) s.t. hj(X)=0, j=1,2,…,l gi(X)≧0, i=1,2,…,m 其中: 决策向量(变量):X=(x1, x2,…, xn) 目标函数:f(X) 约束函数:gi(X) 和hj(X), i=1,2,…,m; j=1,2,….,l 可行集(或可行域):D={X: gi(X)≧0, hj(X)=0} 注: (1)当三个函数f(X), gi(X), hj(X)都是线性函数是,称上面的问 题是线性规划问题 (2)否则,称称上面的问题是非线性规划问题。
(3)上面问题的向量形式是 Min f(X) s.t. g(X) =( g1(X), g2(X),…, gm(X))≧0 h(X) =( h1(X), h2(X),…, hl(X))=0.
§6.1 非线性规划问题的解 一、 例子---供应与选址 某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系a,b表示,距离单位:千米 )及水泥日用量d(吨)由下表给出。目前有两个临时料场位于A(5,1),B(2,7),日储量各有20吨。假设从料场到工地之间均有直线道路相连。 (1)试制定每天的供应计划,即从A,B两料场分别向各工地运送多少吨水泥,使总的吨千米数最小。 (2)为了进一步减少吨千米数,打算舍弃两个临时料场,改建两个新的,日储量各为20吨,问应建在何处,节省的吨千米数有多大?
1 2 3 4 5 6 a 1.25 8.75 0.5 5.75 3 7.25 b 1.25 0.75 4.75 5 6.5 7.25 d 3 5 4 7 6 11 工地位置(a,b)及水泥日用量d 编写程序: x=[1.25 8.75 0.50 5.75 3.00 7.25 5 2]; y=[1.25 0.75 4.75 5.00 6.50 7.25 1 7]; plot(x,y,'*'); 得到图像
(一)、建立模型 (ai,bi)-----工地的位置 di-------------水泥日用量,i=1,…,6; (xj,yj)------料场位置, ej--------------日储量为,j=1,2; Xij-------------从料场j向工地i的运送量。 目标函数为: 约束条件为:
(二)使用临时料场的情形---- 用两个临时料场A(5,1),B(2,7). 求从料场j向工地i的运送量为Xij,在各工地用量必须满足和各料场运送量不超过日储量的条件下,使总的吨千米数最小,这是线性规划问题. 线性规划模型为: 其中, i=1,2,…,6,j=1,2,为常数。
(三)改建两个新料场的情形 ----同时确定料场的位置(xj,yj)和运送量Xij 在同样条件下使总吨千米数最小。这是非线性规划问题。非线性规划模型为:
一、基本概念 定义1:(局部极值)设X*∈D, 若存在一个领域N(X*,ε), 当X∈N(X*,ε)时,有f(X*)≦f(X),则称X*是f(X)的局部极小值点。 定义2:(全部极值)设X*∈D, 若当X∈D时,有f(X*)≦f(X),则称X*是f(X)的全部极小值点。
线性规划问题: (1)最优解的算法采用单纯形算法; (2)最优解总在可行域的顶点(或边界)取得; (3)可以断定局部最优解必是全局最优解。 非线性规划问题: (1)目前没有适合于各种问题的一般算法; (2)常见方法是:约束问题化为无约束问题,非线性规划问题化为线性规划问题。
常见的几种规划问题的一般形式: 1.无约束问题: Min f(X) 2.只有等号的非线性问题 Min f(X) s.t. hj(X)=0, j=1,2,…,l 3.只有不等号的非线性问题 Min f(X) s.t. gi(X)≧0, i=1,2,…,m 4.一般的非线性问题 Min f(X) s.t. gi(X)≧0, i=1,2,…,m hj(X)=0, j=1,2,…,l
一、无约束规划问题的数学原理 1.无约束问题: Min f(X) 用求驻点与Hissian矩阵: 设Z=f(X)在点X*附件有一阶与二阶连续的偏导数,则 (1)必要条件:若f(X)在点X*有极值,则X*是f(X)的驻点,即▽f(X*)=0. (2)充分条件:设X*是f(X)的驻点,若f(X)在X*点Hissian矩阵▽2f(X*) i)是正定的,则驻点X*是极大点。 ii)是负定的,则驻点X*是极小点。 iii)是不定的,则驻点X*不是极值点。 iv) 是半定的,则驻点X*是是否为极值点要视高阶导数的性质决定。
2. 只有等号的非线性问题---采用Lagrange定理 Min f(X) s.t. hj(X)=0, j=1,2,…,l 定理1(一阶必要条件):设f, hj在可行点X*的某个领域N(X*,ε)可微,向量组▽hj(X)线性无关,f(X)在点X*有极值,则存在实数λ=(λ1, λ2,…, λl),使得 ▽f(X*)-λT▽h(X*)=0. λT▽h(X*)=0. 其中L(X,λ)=f(X*)-λTh(X*)称为Lagrange函数,λ称为Lagrange乘子向量。
定理2(二阶必要条件)设X*是局部最优解,相应的函数二阶可微,若存在一个实数向量λ=(λ1, λ2,…, λl),使得▽L(X,λ)=▽f(X*)-λT▽h(X*)=0,且L(X,λ)的Hissian矩阵H(X*,λ)正定,则X*是局部最优解。
3. 只有不等号的非线性问题 Min f(X) s.t. gi(X)≧0, i=1,2,…,m 定理3:(Kuhn-Tucher必要条件) 设f, gi在可行点X*的某个领域N(X*,ε)可微,向量组▽gi(X)线性无关,在点X*有极值,则存在非负实数向量μ=(μ1, μ2,…, μm)( μi≧0),使得 ▽f(X*)-μT▽g(X*)=0. μT▽g(X*)=0. 定理4:(K-T充分条件)设X*是局部最优解,相应的函数可微且为凸函数,又点X*是全局最优解。
例2:要设计一个容量为V的长方形武器水箱,试问水箱的长、宽、高各等于多少时,其表面积最小?例2:要设计一个容量为V的长方形武器水箱,试问水箱的长、宽、高各等于多少时,其表面积最小? 例3:求解最优化问题: min (x1-1)2+x2 s.t. g1(x)=-x1-x2+2≧0, g2(x)= x2≧0.
§6.3 用Matlab优化工具箱解非线性规划 一、二次规划的解法 标准型为: Min Z= XTHX/2+cTX s.t. AX<=b, Aeq.X=Beq, VLB≤X≤VUB 用MATLAB软件求解,其输入格式如下: x=quadprog(H,C,A,b); x=quadprog(H,C,A,b,Aeq,beq); x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB); x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0); x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0,options) [x,fval]=quaprog(...); [x,fval,exitflag]=quaprog(...); [x,fval,exitflag,output]=quaprog(...);
例4: min f(x1,x2)=-2x1-6x2+x12-2x1x2+2x22 s.t. x1+x2≤2 -x1+2x2≤2 x1≥0, x2≥0 1.写成标准形式,即矩阵的形式 2、 输入命令: H=[1 -1; -1 2]; 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 =0.6667 1.3333 z = -8.2222
一、一般非线性规划 标准型为: min F(X) s.t AX<=b, Aeq.X=Beq, G(X) ≤0, 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); 2.若约束条件中有非线性约束:G(X) ≤0或Ceq(X)=0,则建立M文件nonlcon.m,定义函数G(X)与Ceq(X): function [G,Ceq]=nonlcon(X) G=... Ceq=...
建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下: (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’) (5)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options) (6)[x,fval]= fmincon(...) (7)[x,fval,exitflag]= fmincon(...) (8)[x,fval,exitflag,output]=fmincon(...)
[x,fval,exitflag,output] =(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’) 其中: x---输出极值点 fun----M文件 x0---迭代的初值 vlb,vub,变量上下限 nonlcon---约束函数的非等式M文件。 Options----参数说明 fmincon函数可能会给出局部最优解,这与初值X0的选取有关。