线性规划
在数学中,线性规划(Linear Programming,简称LP)特指目标函数和约束条件皆为线性的最优化问题[1]。
线性规划是最优化问题中的一个重要领域。很多最优化问题算法都可以分解为线性规划子问题,然后逐一求解。在线性规划的历史发展过程中所衍伸出的诸多概念,建立了最优化理论的核心思维,例如“对偶”、“分解”、“凸集”的重要性及其一般化等。在微观经济学和商业管理领域中,线性规划亦被大量应用于例如降低生产过程的成本等手段,最终提升产值与营收。乔治·丹齐格被认为是线性规划之父[1]。
标准型
描述线性规划问题的常用和最直观形式是标准型。标准型包括以下三个部分[1]:
一个需要极大化的线性函数,例如
c
1
x
1
+
c
2
x
2
c_1 x_1 + c_2 x_2
c1x1+c2x2
以下形式的问题约束,例如:
a
11
x
1
+
a
12
x
2
≤
b
1
a_{11}x_1 + a_{12}x_2 \le b_1
a11x1+a12x2≤b1
a
21
x
1
+
a
22
x
2
≤
b
2
a_{21}x_1 + a_{22}x_2 \le b_2
a21x1+a22x2≤b2
a
31
x
1
+
a
32
x
2
≤
b
3
a_{31}x_1 + a_{32}x_2 \le b_3
a31x1+a32x2≤b3
和非负变量,例如:
x
1
≥
0
x_1 \ge 0
x1≥0
x
1
≥
0
x_1 \ge 0
x1≥0
线性规划问题通常可以用矩阵形式表达成:
m
a
x
i
m
i
z
e
c
⃗
T
x
⃗
maximize \quad \quad \vec{c}^T\vec{x}
maximizecTx
s
u
b
j
e
c
t
t
o
A
x
⃗
≤
b
⃗
,
x
⃗
≥
0
subject \quad to \quad \boldsymbol{A}\vec{x} \le \vec{b}, \vec{x} \ge 0
subjecttoAx≤b,x≥0
其他类型的问题,例如极小化问题,不同形式的约束问题,和有负变量的问题,都可以改写成其等价问题的标准型。
增广矩阵(松弛型)
在用单纯型法求解线性规划问题之前,必须先把线性规划问题转换成增广矩阵形式。增广矩阵形式引入非负松弛变量将不等式约束变成等式约束。问题就可以写成以下形式[1]:
$ \left[
\begin{matrix}
1 & -\vec{c}^T & 0 \
0 & \boldsymbol{A} & \boldsymbol{I} \
\end{matrix}
\right]
\left[
\begin{matrix}
Z \
\vec{x} \
\vec{x}_{s} \
\end{matrix}
\right] =
\left[
\begin{matrix}
0 \
\vec{b} \
\end{matrix}
\right]$
这里
x
⃗
s
\vec{x}_{s}
xs是新引入的松弛变量,
Z
Z
Z是需要极大化的变量。
非线性规划
在数学中,非线性规划(Nonlinear programming)是求解由一系列未知实函数组成的组方程和不等式(统称为约束)定义的最优化问题,伴随着一个要被最大化或最小化的目标函数,只是一些约束或目标函数是非线性的。它是最优化处理非线性问题的一个子领域[2]。
参考文献
[1] wiki.线性规划
[2] wiki.非线性规划