线性规划
1. 线性规划的梯度
对于线性目标函数 f ( x ) = ∑ i = 1 n c i x i = c T x f(\mathbf{x})=\sum_{i=1}^n c_i x_i = \mathbf{c}^T \mathbf{x} f(x)=∑i=1ncixi=cTx,显然其梯度为 ∇ f = c \nabla f=\mathbf{c} ∇f=c。因此对于最小化问题,改进方向的条件为 c T Δ x < 0 \mathbf{c}^T \Delta \mathbf{x}<0 cTΔx<0,即与梯度的夹角大于90°;对于最大化问题,改进方向的条件为 c T Δ x > 0 \mathbf{c}^T \Delta \mathbf{x}>0 cTΔx>0,即与梯度的夹角小于90°。
并且由于线性目标函数的梯度是常数,因此一个改进方向在所有点上都是改进的。
从代数上讲, c T Δ x < 0 \mathbf{c}^T \Delta \mathbf{x}<0 cTΔx<0就是更新后的函数值等于上一步的函数值加上一个负值, c T Δ x > 0 \mathbf{c}^T \Delta \mathbf{x}>0 cTΔx>0就是更新后的函数值等于上一步的函数值加上一个正值。
梯度的几何解释可参考:
https://blog.csdn.net/Xiaoyao_Ma/article/details/137508195?spm=1001.2014.3001.5501
2. 线性规划中可行方向的代数条件
对于线性约束,当且仅当对所有起作用大于等于约束
a
T
x
≥
b
\mathbf{a}^T\mathbf{x}\geq b
aTx≥b有:
a
T
Δ
x
=
∑
j
a
j
Δ
x
j
≥
0
\mathbf{a}^T\Delta\mathbf{x}=\sum_j a_j\Delta x_j\geq 0
aTΔx=j∑ajΔxj≥0
对所有起作用小于等于约束
a
T
x
≤
b
\mathbf{a}^T\mathbf{x}\leq b
aTx≤b有:
a
T
Δ
x
=
∑
j
a
j
Δ
x
j
≤
0
\mathbf{a}^T\Delta\mathbf{x}=\sum_j a_j\Delta x_j\leq 0
aTΔx=j∑ajΔxj≤0
对所有等式约束
a
T
x
=
b
\mathbf{a}^T\mathbf{x}= b
aTx=b有:
a
T
Δ
x
=
∑
j
a
j
Δ
x
j
=
0
\mathbf{a}^T\Delta\mathbf{x}=\sum_j a_j\Delta x_j= 0
aTΔx=j∑ajΔxj=0
时,搜索方向
Δ
x
\Delta\mathbf{x}
Δx对于解
x
\mathbf{x}
x是可行的。(起作用约束的等号成立,将更新变量代入约束即可证明)
3. 线性规划的经典问题
- 资源分配问题:每种资源的总量固定,决策变量表示每种资源分配给每种使用方式的数量;
- 混料问题:资源的需求总量固定,决策变量代表为了生产某种产品,每种资源的使用数量;
- 运营规划问题:产品的需求数量固定,决策变量表示每个工厂生产某种商品的数量;
下面介绍两种寻找初始可行解的方法,也适用于非线性规划。
4. 寻找初始可行解——两阶段法
两阶段法是指:在第一阶段检验原问题的可行性,并找到一个初始可行解,在第二阶段寻找最优解。第一阶段的步骤如下:
-
选择一个原问题的解(可能不满足全部约束,一般取范围约束的端点,如零点),给不满足的约束添加人工变量,且人工变量为正值。
例如:在如下约束中,取(0,0)点,三个耦合的不等式约束都不满足。
每个不满足的约束都需要添加一个人工变量,因此直接添加三个人工变量 x 3 , x 4 , x 5 x_3, x_4, x_5 x3,x4,x5,构成如下约束:
-
以最小化人工变量之和为目标,构建第一阶段模型,并构造初始可行解。
上例中的第一阶段模型为:
代入 x 1 = 0 , x 2 = 0 x_1=0, x_2=0 x1=0,x2=0,每个人工变量取满足约束的最小值,可得一个人工初始解(0, 0, 2, 1.5, 0.5)。 -
从人工初始解开始寻找最优解,判断原问题是否可行。
由于第一阶段的目标函数始终大不小于0,最优解有以下三种情形:
a. 目标值=0,即人工变量都为0,则最优解中的原问题变量构成原问题的一个可行解;
b. 目标值>0,搜索在全局最小点处停止,则原问题没有可行解;
c. 目标值>0,搜索在局部最小点处停止,则无法判断,需要重新构造初始解并重新搜索。
5. 寻找初始可行解——大M法
与两阶段法不同的是,大M法通过一次搜索既可以判定原问题的可行性,又可以找到(可能是局部)最优解。
- 与两阶段法相同,首先给原变量赋值,给不满足的约束添加人工变量,且人工变量为正值。
- 构建目标函数,对于最小化问题,新问题为 min 原目标 + M ( 人工变量和 ) \min 原目标+M(人工变量和) min原目标+M(人工变量和)对于最大化问题,新问题为 max 原目标 − M ( 人工变量和 ) \max 原目标-M(人工变量和) max原目标−M(人工变量和),其中 M M M表示一个足够大的正数,是一个惩罚因子。
- 与两阶段法类似,大
M
M
M法的搜索结果也有三种情况:
a. 人工变量和=0,搜索在局部最优解处停止,当前的原问题变量构成原问题的一个局部最优解;
b. 人工变量和>0,搜索在全局最优解处停止且M足够大,原问题无可行解;
c. 人工变量和>0,搜索在局部最优解处停止或M不够大,需要调整初始解或增大M重新计算。
6. 可线性化的非线性目标函数
6.1 max-min问题
原问题:
max
f
≜
min
{
g
(
x
1
)
,
.
.
.
,
g
(
x
n
)
}
\max f\triangleq\min\{ g(x_1),...,g(x_n)\}
maxf≜min{g(x1),...,g(xn)}
可线性化为:
max
f
s
.
t
.
f
≤
g
(
x
i
)
,
i
=
1
,
.
.
.
,
n
\begin{align*}\max &f \\ s.t. & f\leq g(x_i), i=1,...,n \end{align*}
maxs.t.ff≤g(xi),i=1,...,n
max-min问题同理。
6.2 最小偏差问题
对于包含
∣
p
(
x
)
−
q
(
x
)
∣
|p(x)-q(x)|
∣p(x)−q(x)∣的目标函数,其中
p
(
x
)
,
q
(
x
)
p(x),q(x)
p(x),q(x)是线性函数,引入非负偏差变量
s
+
,
s
−
s^+,s^-
s+,s−,引入约束条件
p
(
x
)
−
q
(
x
)
=
s
+
−
s
−
p(x)-q(x)=s^+-s^-
p(x)−q(x)=s+−s−,目标函数
∣
p
(
x
)
−
q
(
x
)
∣
|p(x)-q(x)|
∣p(x)−q(x)∣用
s
+
+
s
−
s^++s^-
s++s−代替,从而将最小偏差目标函数转化为线性函数。
为什么这样转换与原问题等价,即为什么 s + + s − s^++s^- s++s−最小化时上述两个替代能成立?因为根据约束 p ( x ) − q ( x ) = s + − s − p(x)-q(x)=s^+-s^- p(x)−q(x)=s+−s−可知 s + s^+ s+和 s − s^- s−的差值固定,而 s + s^+ s+和 s − s^- s−都非负,且目标是最小化两者之和,因此在最优解处,必然有一个变量为0,则上述两个替代都成立。