|
1.线性规划简介 线性规划(LP)是数学规划的一个分支。
# \7 }2 N9 h+ ~! t& s 8 [/ \7 c+ J% Z! \' Q3 G
x1,x2为决策变量,约束条件记为s.t.(subject to)。
6 w# X4 ]6 p/ j7 P2.线性规划的matlab标准形式 线性规划的目标函数可以求最大值也可以求最小值,约束条件的不等号可以是小于号也可以是大于号,因此在matlab中给出了统一形式
$ B3 N8 d; Q4 \: ~* `/ Q0 b6 z @) w. s; G; X3 o* C! [5 V* P
其中c和x均为n维列向量,A、Aeq为适当维数(列数与x维数相同,行数与约束条件数相同),b、beq为适当维数的列向量(维数与约束条件数相同)。
: p% Q4 \; q9 R) F6 T/ Y, n4 ?/ V& v( F! {+ S. G
例如:
- @6 [9 N4 f9 h4 v Zmax cTx s.t. Ax≥b max cTx s.t. Ax≥b * O& S& w; s7 C' j- t
matlab中为:
. U2 w% B1 U9 _. v0 umin −cTx s.t. −Ax≤b min −cTx s.t. −Ax≤b - j+ W& `8 j8 W6 J" r2 y
3.线性规划中解的概念; r$ {) C( {/ b9 Y. L7 ^
7 u) H* C! @$ @* Q! _
可行解:满足约束条件的 解x = (x1,x2…xn),称为线性规划问题的可行解,从而使目标函数达到最大值或者最小值的可行解称为最优解。
: |: k. U, m% E- _可行域:所有可行解构成的集合称为问题的可行域,记为R。1 m% x$ V5 H* x# T- F4 E
, `6 q* |" O& l( J. n6 S, M
4.一般的线性规划问题
9 v% O& ]( ?7 d. K: |' [4 W9 s ^9 P, Z4 F! W* w. ?
在一般的n维空间中,满足 ∑ni=1aixi = b∑i=1naixi = b 的点集称为一个超平面,而满足 ∑ni=1aixi ≥ b∑i=1naixi ≥ b (或者∑ni=1aixi ≤ b∑i=1naixi ≤ b )的点集称为一个半平面,若干个半平面的交集称为多胞形,有界的多胞形称为多面体。因此线性规划的可行域必定为多胞形(空集也视为多胞形)。若该区域R为凸集,则凸集中的任意两点的连线必然在该凸集中,若x为区域R的极点,则x不能位于R中的任意两点的连线上。% _0 A6 x; \4 E
- N; Q( g1 S+ O4 E6 Q
5.matlab中线性规划求解过程
# P+ \4 ^- n# t [- ?1 }
) s% V ~ U' V( N% r4 I' e/ D; c① 利用linprog函数返回最小值解向量。
5 o1 y1 T/ e: ?( `& o1 S② value = c’ * x求最小值。
* H, A5 ^* P2 p. }# v0 p# p* T ]: ]5 v
基本函数形式是 linprog(c,A,b) , c用于确定等值线(列向量),返回值为向量x。 ! p) K# I, u# E1 ]; S% a
其他的函数形式: $ ?3 g8 ?3 m6 Q+ V
[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,x0,OPTIONS) ( ^6 H, Z) a' I' J" O# i
x0为向量x的初始值,一般使用zeros()函数 初始化,LB和UB分别是向量x的下界向量和上界向量。返回值为fval(目标函数c’ * x的值)。
2 f2 }' T2 H p/ v6 Y
* O' k2 v: {, \/ w1 ?! [6.常见技巧
; S: p/ I8 d; Y0 P$ [% Y4 |2 I; w) o, X4 N( \1 g
问题为:7 m4 R) d* E7 v3 x' V! T4 I
& U! L# f, I( G; `( t- q
min|x1|+|x2|+…+|xn| s.t. Ax≤b min|x1|+|x2|+…+|xn| s.t. Ax≤b ; ^" f( h4 f% B; U& B. ?
事实上,对于任意的xixi,存在ui,viui,vi满足: , n7 y, j$ y% l- v
xi=ui−vi , |xi|=ui+vixi=ui−vi , |xi|=ui+vi
- u: X: G' e8 V! R: f令 ui=(xi+|xi|2),vi=(|xi|−xi2)ui=(xi+|xi|2),vi=(|xi|−xi2)即可满足。
( f7 Z% D$ m" \# Z1 A' k1 }
+ _& S# N4 R% \( `! w$ |6 J* a转换为: . O1 a3 R9 I/ R/ B
min ∑ni=1(ui+vi)min ∑i=1n(ui+vi) " `( |9 ?) b" K. {2 o! @1 h! U
s.t.{A(ui−vi)≤b,u,v≥0,s.t.{A(ui−vi)≤b,u,v≥0,
' X3 Z( p- P& l. r7.运输问题(产销平衡)
6 ~- t% @' i+ ?. P: A5 U![]()
3 a3 t0 |2 g8 \- |) R O. U# j6 y, R! | O* {
8.指派问题 1.数学模型 ' Q/ L, i3 q/ Z" W/ o6 F
+ D( P8 w, Y, `& I![]()
1 |6 R, {4 M* E# B- V+ Z9 Q' L( h9 v; ]2.利用匈牙利算法
4 {% f9 N' @$ f! {( t# o6 m算法主要思想:如果系数矩阵中C=(cijcij)一行(或一列)中每一个元素都加上或减去同一个数,得到新矩阵B,则以B或C为系数矩阵的指派问题具有相同的最优指派。 ' W/ m! W% c# \
最优指派的结果是一个2行n列的行列式,第一行为第i人,第二行为被指派的地点。 : `! q# c* O# m
求解中心:变换出n个不同行不同列的零元素。
2 z2 g2 x2 Y, ^( W
8 P# p) l! X4 s _+ z$ X% B% q' d' e: \6 \
9 O" m6 [" h3 T, K/ O% | |