|
1.线性规划简介 线性规划(LP)是数学规划的一个分支。
! H* h8 g9 ^( ?- K. B6 c( M, ] 1 {2 K! B- ]1 @# ^0 I4 I+ Z2 H
x1,x2为决策变量,约束条件记为s.t.(subject to)。
" u7 P5 p% {4 S% g, k2.线性规划的matlab标准形式 线性规划的目标函数可以求最大值也可以求最小值,约束条件的不等号可以是小于号也可以是大于号,因此在matlab中给出了统一形式 - N4 t' s2 D) L6 Z, j$ P
![]()
# ]9 e4 t& \# H* f2 Y其中c和x均为n维列向量,A、Aeq为适当维数(列数与x维数相同,行数与约束条件数相同),b、beq为适当维数的列向量(维数与约束条件数相同)。1 |8 J! g4 }/ F Z7 [" Q S5 I
% {2 o' N6 B9 j K3 L- P
例如:
6 Y7 Y. c+ N3 G3 f- Q/ [+ lmax cTx s.t. Ax≥b max cTx s.t. Ax≥b
! O7 y& u& C' [3 E3 q# w* f8 lmatlab中为:
9 p0 x5 [4 {) T# t( S3 kmin −cTx s.t. −Ax≤b min −cTx s.t. −Ax≤b & f+ g2 A" l- V$ ?: L `3 _
3.线性规划中解的概念
2 Q! _ B% R/ l; }' q, L
4 ^. Q3 t& A/ V/ r2 W1 g7 v3 f可行解:满足约束条件的 解x = (x1,x2…xn),称为线性规划问题的可行解,从而使目标函数达到最大值或者最小值的可行解称为最优解。 ! Z( G' X8 W' n! g q: _
可行域:所有可行解构成的集合称为问题的可行域,记为R。$ L, G, E( I$ D U7 R! G
" u8 p. a$ b1 [" r7 }# Z4.一般的线性规划问题; F2 w" y* R, D9 Q9 x. k9 a. F4 \, N) B
% Z# S0 ]- @9 k) T- _9 e3 c5 n( j在一般的n维空间中,满足 ∑ni=1aixi = b∑i=1naixi = b 的点集称为一个超平面,而满足 ∑ni=1aixi ≥ b∑i=1naixi ≥ b (或者∑ni=1aixi ≤ b∑i=1naixi ≤ b )的点集称为一个半平面,若干个半平面的交集称为多胞形,有界的多胞形称为多面体。因此线性规划的可行域必定为多胞形(空集也视为多胞形)。若该区域R为凸集,则凸集中的任意两点的连线必然在该凸集中,若x为区域R的极点,则x不能位于R中的任意两点的连线上。
. j3 b$ o X' w! E# m& `) V1 U6 b4 A- W) f5 H5 O
5.matlab中线性规划求解过程$ u3 E" R( k# ]& D/ S, D6 M
& l6 Y& h8 z0 k" c' ~5 u: O
① 利用linprog函数返回最小值解向量。
5 D; _2 C# b; ?: r( ^ U: C② value = c’ * x求最小值。
Y. Z7 P0 U3 K) F9 c _9 f/ o: Y1 t5 j D$ }) i# \4 n" t1 Y
基本函数形式是 linprog(c,A,b) , c用于确定等值线(列向量),返回值为向量x。
# q: E/ @( h. N5 y" r" p! V其他的函数形式: & o: R; [: }+ V" R
[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,x0,OPTIONS)
5 _; Z3 V9 t9 F; w# M, y1 _) Lx0为向量x的初始值,一般使用zeros()函数 初始化,LB和UB分别是向量x的下界向量和上界向量。返回值为fval(目标函数c’ * x的值)。0 X4 z* q. Z) x4 s. E) q6 x3 l
/ ]! N$ E, [0 s( K
6.常见技巧' m- O0 z L6 e# F
( R9 K6 }! C- m* R" z2 r9 _问题为:( j# I* [1 W: Z6 Y) z, u
, @4 ]+ P. D9 V, B
min|x1|+|x2|+…+|xn| s.t. Ax≤b min|x1|+|x2|+…+|xn| s.t. Ax≤b 9 {, U2 l9 f. f
事实上,对于任意的xixi,存在ui,viui,vi满足: . F7 N# |! L; x: d/ C2 w
xi=ui−vi , |xi|=ui+vixi=ui−vi , |xi|=ui+vi
- S7 c3 X& z& {, O2 B令 ui=(xi+|xi|2),vi=(|xi|−xi2)ui=(xi+|xi|2),vi=(|xi|−xi2)即可满足。! Q) ]7 | }( [* U; M/ U
( O! S* I k# C( L# [) _5 d3 S转换为: , D' f1 H! X z+ j' f: U4 g
min ∑ni=1(ui+vi)min ∑i=1n(ui+vi) 7 P# v6 M. G+ }$ b/ z4 m" ~# F; k R
s.t.{A(ui−vi)≤b,u,v≥0,s.t.{A(ui−vi)≤b,u,v≥0,
0 F! n1 f1 I O7.运输问题(产销平衡)
0 r& o |; ~: q1 N 2 k. l, B9 }* U* n' ?. y0 r
" `7 t2 m: M& p, L: R _. d
8.指派问题 1.数学模型
, c- F% d' |1 T$ t 2 Q. Q$ z" n/ h2 q2 L; S
- h9 k9 F0 @- S6 n: [) o9 j3 q. f
2.利用匈牙利算法 $ Z8 A$ W7 ~) `% J
算法主要思想:如果系数矩阵中C=(cijcij)一行(或一列)中每一个元素都加上或减去同一个数,得到新矩阵B,则以B或C为系数矩阵的指派问题具有相同的最优指派。 7 B8 ~4 E/ k2 d6 D h
最优指派的结果是一个2行n列的行列式,第一行为第i人,第二行为被指派的地点。
* p7 |. Z, t- ~8 A求解中心:变换出n个不同行不同列的零元素。; ~& p: S8 _" Q* N3 ~
* b1 m2 B3 {' n+ R0 y
7 q! p6 M+ Q1 f
/ j4 e7 O. A! R/ g2 M# |+ G |