二次规划与非线性规划

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7
四、非线性规划的基本概念
定义 如果目标函数或约束条件中至少有一个是非线性函数, 则最优化问题就叫做非线性规划问题. 一般形式:
m in f X
gi X 0 i 1,2,..., m; s.t. h j X 0 j 1,2,..., l. (1) n f , g ,h 其中 X x1 , x2 ,L , xn T R, i j是定义在 Rn 上的实值函数
3.再建立主程序youh2.m: x0=[1;1]; A=[2 3 ;1 4]; b=[6;5]; Aeq=[];beq=[]; VLB=[0;0]; VUB=[]; [x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB) 4.运算结果为: x = 0.7647 1.0588 fval = -2.0294
2 1 2
x2
6

编写如下程序: h=[4,-4;-4,8]; g=[-6;-3]; A=[1,1;4,1]; b=[3;9]; [x,value]=quadprog(h,g,A,b,[],[],zeros(2, 1)) 求得
1.9500 x , Min f ( x ) 11.0250 1.0500
(6) [x,fval]= fmincon(…) (7) [x,fval,exitflag]= fmincon(…) (8)[x,fval,exitflag,output]= fmincon(…) fmincon函数可能会给出局部最优解,这与初值X0的选取有关.
16

1 2 1 2 min f x1 2 x2 x1 x2 2 2 2x1+3x2 6 s.t. x1+4x2 5 x1,x2 0
k T k
k T k i
g X X X 0
h X X X 0
k T k j
i 1,
j 1,
,m
,l ;
k
13
六、Matlab求解非线性规划问题
标准型为: min F(X) s.t. AX b
Aeq X beq G(X) 0
21
3. 主程序fxx.m为: x0=[3;2.5]; VLB=[0 0];VUB=[5 10]; [x,fval,exitflag,output] =fmincon('fun',x0,[],[],[],[], VLB,VUB,'mycon2')
MATLAB(fxx(fun))
22
min f ( x ) 2 x12 -4 x1 x2 4 x2 2 -6 x1-3x 2 x1 x 2 3 4 x1 x2 9 x1 , x2 0
5
转化为matlab求解格式:
1 x1 4 4 min f ( x) 2 x - 4 x1 x2 4 x2 - 6 x1 - 3x2 x1 2 x2 4 8 1 1 x1 3 0 x1 s.t. x , x 4 1 2 9 0 2
11
2、近似规划法
近似规划法的基本思想:将问题中的目标函数 f X 和约束条件 gi X 0 (i 1,...,m); hj X 0 (j 1, , l ) 近似为线性函数,并对变量的取值范围加以限制,从 而得到一个近似线性规划问题,再用单纯形法求解之, 把其符合原始条件的最优解作为解的近似. 每得到一个近似解,都从这点出发,重复以上步骤. 这样,通过求解一系列线性规划问题,产生一个 由线性规划最优解组成的序列,经验表明,这样的序 列往往收敛于非线性规划问题的解.
二次规划 约束极小 (非线性规划) 达到目标问题
s.t. Ax≤b min F(X) s.t. G(X)≤0 min r s.t. F(x)-wr≤goal min max {Fi(x)}
x {F (x)} i
极小极大问题
s.t. G(x)≤0
4
[X,FVAL]=QUADPROG(H,g,A,b,Aeq,beq,LB,UB,X0,OPTIONS) X 的返回值是向量 x ,FVAL 的返回值是目标函数在 X 处的值。 (具体细节可以参看在 Matlab 指令中运行 help quadprog 后的帮 助) 。 例 求解二次规划
2.再建立M文件mycon.m定义非线性约束:
function [g,ceq]=mycon(x) g=[x(1)+x(2); 1.5+x(1)*x(2)-x(1)-x(2); -x(1)*x(2)-10]; ceq=[];
19
3.主程序youh3.m为:
x0=[-1;1]; A=[];b=[]; Aeq=[1 1];beq=[0]; vlb=[];vub=[]; [x,fval]=fmincon('fun4',x0,A,b,Aeq,beq,vlb, vub,'mycon') MATLAB(youh3)
二次规划与非线性规划
1
一、二次规划(Quadratic Program) 概念
二次规划: 带有二次目标函数和线性约束的最优化问题. 它是 最简单的约束非线性规划问题. 1. 标准形式
1 min q( x) xT Gx g T x, 2 s.t. aiT x bi , i E, aiT x bi , i I.
8
定义 把满足问题(1)中条件的解 X ( Rn ) 称为可行解(或可行 点),所有可行点的集合称为可行集(或可行域).记为D.即 D X | g i X 0, h j X 0, X Rn 问题(1)可简记为 min f X .


X D
9
五、非线性规划的基本解法
1.写成标准形式:
2 x1 3x2 6 0 s.t. x1 4 x2 5 0 0 x1 0 x2
1 2 1 2 min f x1 2 x2 x1 x2 2 2
17
2.先建立M-文件 fun3.m: function f=fun3(x); f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2
SUTM外点法 1. 罚函数法 SUTM内点法(障碍罚函数法) 2. 近似线性规划法
10
1、罚函数法
罚函数法基本思想是通过构造罚函数把约束问
题转化为一系列无约束最优化问题,进而用无约束最
优化方法去求解.这类方法称为序列无约束最小化方
法.简称为SUMT法. 其一为SUMT外点法,其二为SUMT内点法.
3
二、Matlab中求解二次规划
类 型
一元函数极小 无约束极小 线性规划
模 型 min F(x)s.t. x1<x<x2 min F(X) min c X s.t. AX≤b T T min 1 x Hx+g x
2
T
基本函数名 x=fminbnd(‘F’,x1,x2) X=fminunc(‘F’,X0) X=fminsearch(‘F’,X0) X=linprog(c,A,b) X=quadprog(H,g,A,b) X=fmincon(‘FG’,X0) X=fgoalattain(‘F’,x, goal,w) X=fminimax(‘FG’,x0)
15
3. 建立主程序.求解非线性规划的函数是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) 输出极值点 M文件 迭代的初值 变量上下限 参数说明
Ceq(X)=0 VLB X VUB
其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成 的向量。
14
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=…
(1)
其中 G 是 n n 的对称矩阵. E , I 分别对应等式约束和不 等式约束指标集合. g , x, and ai , i E I 都是 n 维向量
2
2.二次规划研究的意义
(1) 二次规划问题简单,便于求解.某些较复杂的非线性 规划问题可以转化为求解一系列二次规问题. (2) 实际应用广泛: 工作计划,时间调度,规模经济学,工程设计以及控制领 域,设施分配问题,选址问题,二次分配问题,微观经济学 的很多问题.化学工程建模.
12
实现方法是: 在点 X k 处,将 f X , g i X , h j X 按泰勒级数展开并取 一阶近似,得到近似线性规划问题:
min f X f X
gi X gi X
hj X hj X
k
k
来自百度文库
f X X X
1.先建立M文件fun.m定义目标函数: function f=fun(x); f=-2*x(1)-x(2); 2.再建立M文件mycon2.m定义非线性约束: function [g,ceq]=mycon2(x) g=[x(1)^2+x(2)^2-25;x(1)^2-x(2)^2-7]; ceq=[ ];
4. 运算结果为: x = -1.2250 fval = 1.8951
1.2250
20

min f X 2 x1 x2
2 s.t. g1 X 25 x12 x2 0 2 g 2 X 7 x12 x2 0
0 x1 5, 0 x2 10
MATLAB(youh2)
18

2 f ( x) ex1 (4x12 2x2 4x1x2 2x2 1)
s.t.
x1+x2 0 1.5+x1x2 - x1 - x2 0 -x1x2 –10 0
1.先建立M文件fun4.m定义目标函数:
function f=fun4(x); f=exp(x(1)) *(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);
相关文档
最新文档