|
1.线性规划简介 线性规划(LP)是数学规划的一个分支。
& P/ X, s( i a D4 @ . y; I( ]3 H5 L5 Y) P) w, I
x1,x2为决策变量,约束条件记为s.t.(subject to)。
\7 I! M" P' E# D8 z j" B) ^4 m% _2.线性规划的matlab标准形式 线性规划的目标函数可以求最大值也可以求最小值,约束条件的不等号可以是小于号也可以是大于号,因此在matlab中给出了统一形式
( @* M6 W* ~" U8 Y3 W : N |/ L) Y e2 }6 ?( w# f1 L
其中c和x均为n维列向量,A、Aeq为适当维数(列数与x维数相同,行数与约束条件数相同),b、beq为适当维数的列向量(维数与约束条件数相同)。
" e: ~- V( L/ b* i0 e4 {
6 q" F9 z2 D8 S) J; k' L8 o9 P& a例如:
" Z) \' s3 a3 T% ymax cTx s.t. Ax≥b max cTx s.t. Ax≥b 7 ]+ Z9 n( R. K0 z1 J
matlab中为:
5 q4 |8 |$ C R+ h/ K8 R0 R# J$ ~min −cTx s.t. −Ax≤b min −cTx s.t. −Ax≤b ( N* h( ]" D4 s# \: g. G- X
3.线性规划中解的概念6 l R5 g+ o% W6 I0 E- d% L5 d- {
- X+ z }/ k; W. Y
可行解:满足约束条件的 解x = (x1,x2…xn),称为线性规划问题的可行解,从而使目标函数达到最大值或者最小值的可行解称为最优解。 . L$ \9 ]4 u7 G) y! o; k" k+ \
可行域:所有可行解构成的集合称为问题的可行域,记为R。# {/ X6 |! d$ s3 z
) E( z/ s8 I8 d0 s
4.一般的线性规划问题) }9 \, \6 T* j/ |# y, ?
6 i& J% N0 Y* ~) r3 B6 k
在一般的n维空间中,满足 ∑ni=1aixi = b∑i=1naixi = b 的点集称为一个超平面,而满足 ∑ni=1aixi ≥ b∑i=1naixi ≥ b (或者∑ni=1aixi ≤ b∑i=1naixi ≤ b )的点集称为一个半平面,若干个半平面的交集称为多胞形,有界的多胞形称为多面体。因此线性规划的可行域必定为多胞形(空集也视为多胞形)。若该区域R为凸集,则凸集中的任意两点的连线必然在该凸集中,若x为区域R的极点,则x不能位于R中的任意两点的连线上。4 c) }8 s& ~2 D) Y0 L2 b
4 s: G' g. B5 `) i p- j: |
5.matlab中线性规划求解过程
- t0 n; M2 J* f0 p9 h+ B" Y
; c9 J& [9 |0 Y① 利用linprog函数返回最小值解向量。
: w0 m. ^/ K1 ~9 e+ a5 q② value = c’ * x求最小值。8 R2 r7 @" a" G6 _$ u u9 b
6 O' n+ { m5 ^9 _4 E2 T4 \基本函数形式是 linprog(c,A,b) , c用于确定等值线(列向量),返回值为向量x。
9 r, i* J, P% H0 M其他的函数形式: ) z- X5 S) I# I& C: f
[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,x0,OPTIONS)
/ Q/ n: @# l# Gx0为向量x的初始值,一般使用zeros()函数 初始化,LB和UB分别是向量x的下界向量和上界向量。返回值为fval(目标函数c’ * x的值)。7 s! X! M) _! b3 ^5 h5 D
' W& ^! E- g; U/ {3 [6.常见技巧+ u. N1 K% x% @2 M" P. |! V6 `( K
6 ]1 t5 a* g7 e% K1 ?( X# r问题为:
. v; J7 T- v* O: i i. O5 W8 T1 ]* J6 y, a# d& o
min|x1|+|x2|+…+|xn| s.t. Ax≤b min|x1|+|x2|+…+|xn| s.t. Ax≤b , B2 ^ l% D/ M- a
事实上,对于任意的xixi,存在ui,viui,vi满足: 2 ?! S! ]. e4 U1 C" A
xi=ui−vi , |xi|=ui+vixi=ui−vi , |xi|=ui+vi 9 B. _* w; W5 k9 q6 o& X
令 ui=(xi+|xi|2),vi=(|xi|−xi2)ui=(xi+|xi|2),vi=(|xi|−xi2)即可满足。- H/ i4 p. |& Y2 C4 ?4 S2 ]: }4 `
2 Y9 g: f% X {% @转换为: ; k! R3 F, W2 [4 V7 T
min ∑ni=1(ui+vi)min ∑i=1n(ui+vi)
7 P" E3 f+ b$ |/ ~s.t.{A(ui−vi)≤b,u,v≥0,s.t.{A(ui−vi)≤b,u,v≥0,
0 I5 d3 y3 j2 R+ Y, k7.运输问题(产销平衡)% U w' W1 E0 H
; h7 P+ P6 f& S9 B: Y
' a7 x+ R7 D; O+ {) y# W: @
8.指派问题 1.数学模型 5 z7 X. c, _/ ~3 P& u7 `, O
/ T+ Y( J. S1 P. ?* F+ H- f
![]()
2 m7 f! \ V5 Y! t2.利用匈牙利算法
( k( _" x: G% ~! X' S3 s6 o算法主要思想:如果系数矩阵中C=(cijcij)一行(或一列)中每一个元素都加上或减去同一个数,得到新矩阵B,则以B或C为系数矩阵的指派问题具有相同的最优指派。 , G. J2 P5 r% B k2 j
最优指派的结果是一个2行n列的行列式,第一行为第i人,第二行为被指派的地点。
# b; a$ d, Z9 Z8 g0 @( k4 s1 @求解中心:变换出n个不同行不同列的零元素。# f# t8 }' y/ s7 q3 \
" H* J Y4 M) `6 i6 o: [( Q$ u0 M
8 r* v" j6 S) C% P
: m; G5 w' ]1 a6 ]& v- s3 [6 j
|