拉格朗日分解、元启发式算法及混合方法研究
1. 路径计算算法
对于类型 1 客户,直接返回连接;对于类型 2 客户,需要确定从 0 到客户节点 k 的最便宜的节点不相交路径对。Suurballe 和 Tarjan 提出的算法可以在有向图 $G_D = (V, A)$ 上高效计算两个节点 s 和 t 之间的最短弧不相交路径对,时间复杂度为 $O(|A| + |V| log |V|)$。具体步骤如下:
1. 确定以 s 为根的最短路径树以及从 s 到 t 的最短路径 $P_1$。
2. 将每条弧 $(i, j)$ 的成本替换为 $c_{i,j} - d_j + d_i$,其中 $d_i$ 和 $d_j$ 分别表示从 s 到 i 和 j 的最短路径成本。
3. 反转 $P_1$ 上的所有弧。
4. 在新的(残差)图上使用调整后的弧成本确定从 s 到 t 的最短路径 $P_2$。
5. 最便宜的弧不相交路径对为 $P_1△P_2$。
为了计算节点不相交路径,我们将该算法应用于原始图的分裂图。分裂图的构建方法是:将每个节点 v 替换为一对节点 $v’$ 和 $v’‘$,并通过成本为零的弧 $(v’, v’‘)$ 连接;对于每条无向边 $(u, v) \in E$,创建弧 $(u, v’)$ 和 $(v’‘, u)$,且成本(和长度)相同。由于每个节点 $v’$ 只有一条出弧,每个节点 $v’‘$ 只有一条入弧,因此任何一对边不相交路径也是节点不相交的。
对于 $b_{max}$ 冗余的情况,我们对上述算法进行了简单扩展,即确定到客户 k 的 $b_{max}$ 邻域内某个节点的最短路径对和从该节点到 k 的简单路径的总体最便宜组合。为避免不必要的计算,我们只考虑可能的分支节点 j,其中 $d_j < \frac{1}{2}c_{curr}$,$c_{curr}$ 是到目前为止最便宜连接的成本。
2. LR(λ∗) 与 MCF 公式的理论比较
对于 λ 的每个具体实例,通过拉格朗日分解得到的所有子问题总是能求解到最优性和整数性。因此,对于所有 $k \in C$,有 $f^k \in conv(F^k)$ 成立,我们模型 (3) 到 (7) 的抽象约束 (5) 可以被视为“理想实例化”。假设我们能够识别出最优拉格朗日向量 $\lambda^ $,则 $LR(\lambda^ )$ 得到的下界至少与模型的线性规划松弛确定的下界一样好。由于 MCF 公式比抽象模型的“理想”实例化弱,因此我们得出结论:$LR(\lambda^*)$ 比 MCF 公式的线性规划松弛更强,实验结果也支持了这一事实。
3. 用于改进原始解的邻域
我们的算法使用了三种类型的邻域,前两种旨在降低给定解的成本,最后一种由两个具体邻域组成,试图通过从候选解中移除客户来改进解,因此仅适用于 SST 变体。
3.1 连接交换邻域(CEN)
连接交换邻域(CEN)由与当前解 $S’$ 恰好相差一个连接 $E_k’$ 的所有解组成。为了确定固定客户 $k \in C’$ 的最佳邻域解,CEN 计算移除相应连接 $E_k’$ 所节省的成本(即专门用于连接 k 的所有边成本之和),然后通过在边成本为 $c_e’ = 0$(对于所有 $e \in E’’ = E’ \setminus {e \in E_k’ | M_e = {k}}$)和 $c_e’ = c_e$(对于所有 $e \in E \setminus E’‘$)的图中计算到 k 的最便宜可行连接,来确定导致最小额外成本的连接。对于类型 1 节点和 $b_{max}(k) = 0$ 的类型 2 节点,为一个特定客户节点 k 找到这个新连接的计算复杂度为 $O(|E| + |V| log |V|)$;对于 $b_{max}(k) > 0$ 的类型 2 客户,我们迭代考虑每个可能的分支节点,计算复杂度上限为 $O(b(|E| + |V| log |V|))$,其中 b 表示可能的分支节点的最大数量。因此,整个 CEN 可以在 $O(|C| b (|E| + |V| log |V|))$ 时间内高效搜索到最佳邻域解。
Algorithm 1. Connection Exchange (Solution S′)
c′e = 0 ∀e ∈E′
c′e = ce ∀e ∈e \ E′
dopt = 0
forall k ∈C′ do
E′′ = {e ∈E′k | Me = {k}}
c′e = ce, ∀e ∈E′′
d = ∑e∈E′′ ce
E′′k = shortest connection to k using edge costs c′
d = ∑e∈E′′ ce − ∑e∈E′′k c′e
if d > dopt then
dopt = d − ∑e∈E′′k c′e
store solution S′ with E′′k replacing E′k as best solution
c′e = 0, ∀e ∈E′′
return best solution
3.2 关键路径交换邻域(KPEN)
解 $S’$ 的关键节点是 $V’ \setminus C’$ 中节点度 $deg_{S’}(v) \geq 3$ 的节点,关键路径是路径 $KP = (V_P, E_P)$,其端点要么是关键节点,要么是客户节点 $k \in C$,而所有其他节点是 $V’ \setminus (C \cup 0)$ 中度数为 2 的 Steiner 节点。关键路径交换邻域(KPEN)由与候选解 $S’$ 最多相差一条关键路径的所有可行解组成。为确保可行性,在交换关键路径 KP 后,需要考虑三种相关情况:
1. 如果 KP 仅用于连接类型 1 客户,则可以简单地用任何其他路径替换。
2. 如果 KP 用于类型 2 客户 k 的分支线 $L(E_k’)$,则新路径的最大长度最多为 $b_{max}(k) - \sum_{e \in (L(E_k’) \setminus E_P)} l_e$。
3. 如果 KP 用于类型 2 客户 k 的第一条路径 $P(E_k’)$,则为保证节点冗余,新关键路径不能使用其第二条路径 $Q(E_k’)$ 的“内部”节点的所有边(反之亦然)。
Algorithm 2. Key Path Exchange (Solution S′)
determine key-paths W
dopt = 0
forall key-paths (VP, EP) ∈W do
// actual key-path connects its end nodes m, n
c′e = 0 ∀e ∈E′ \ EP
c′e = ce ∀e ∈EP ∪(E \ E′)
choose e ∈EP randomly
lmax = ∞
forall k ∈M ′e do
if e ∈P(E′k) then
c′e = ∞, ∀e ∈E incident to a inner node of Q(E′k)
else if e ∈Q(E′k) then
c′e = ∞, ∀e ∈E incident to a inner node of P(E′k)
else if e ∈L(E′k) then
lmax = bmax(k) − ∑e∈(L(E′k)\EP) le
(V ′P, E′P) = shortest path from m to n using c′e with max. length lmax
d = ∑e∈EP ce − ∑e∈EP′ c′e
if d > dopt then
dopt = d
store solution S′ with (VP, EP) replacing (VP, EP) as best solution
return best solution
3.3 连接移除邻域(CRN)
连接移除邻域(CRN)通过移除当前解 $S’$ 中单个客户节点 $k \in C’$ 的连接来生成新解。因此,CRN 由所有解 $S’‘$ 组成,其中 $C’$ 中恰好有一个已连接的客户不再连接,即 $C’’ \subset C’ \land |C’’ \setminus C’| = 1$。由于客户的连接最多可能包含 $O(|V|)$ 条边,因此包含 $|C’|$ 个邻域解的 CRN 可以在 $O(|C’||V|)$ 时间内搜索完成。
3.4 受限双连接移除邻域(R2CRN)
CRN 可以很容易地推广到同时移除多个客户节点的情况。然而,同时移除 $l > 1$ 个客户的连接将产生 $|C|^l$ 个邻域解,搜索这样一个邻域的计算工作量将为 $O(|C|^l|V|)$。因此,我们专注于同时移除一对客户 $i, j \in C’$($i \neq j$),这对客户至少共享一条仅由它们使用的边,即 $\exists e \in E’ | M_e = {i, j}$。受限双连接移除邻域(R2CRN)可以在 $O(|V| min(|E’|, |C’|^2))$ 时间内搜索完成。
4. 元启发式算法
我们使用元启发式方法来计算可行解,具体包括以下几种:
4.1 最小生成树增强启发式算法(MSTAH)
最小生成树增强启发式算法(MSTAH)采用三阶段方法为给定的客户选择 $C’ \subseteq C$ 构建可行解:
1.
第一阶段
:使用最小生成树(MST)启发式算法计算 Steiner 树 $G_T$。具体做法是在距离网络 $D = (C’, C’ \times C’)$ 上确定 MST $T_D$,其中节点集为 $C’$,边成本 $d(u, v)$ 对应于图 G 中任意 $u, v \in C’$ 之间的最便宜路径成本。然后在由 $T_D$ 中任何边对应的最便宜路径的所有边组成的子图 $G(T_D)$ 上进一步计算 MST,得到 Steiner 树问题的可行解 $S’‘$。
2.
第二阶段
:通过为所有客户 $k \in C_2$ 单独计算最便宜的可行连接,对 $S’’ = (V’‘, E’‘)$ 进行增强。所有到目前为止选择的边 $e \in E’‘$ 都被视为伪基础设施,即成本为零。
3.
第三阶段
:通过按成本降序贪婪地移除不必要的关键路径,提取边最小解(即不违反可行性的情况下不能再删除任何边)。
4.2 变邻域搜索(VNS)
我们使用带有嵌入式变邻域下降(VND)的通用 VNS 方案。在 VND 中,我们按 CEN、KPEN、CRN、R2CRN 的顺序交替进行,后两者仅在 SST 变体中考虑。
为了逃离局部最优,我们使用摇晃算法修改解 $S’$,具体做法是排除其 Steiner 节点的一个子集,并在 SST 变体中更改连接客户的集合 $C’$:随机选择当前解 $S’$ 的 $l = 1, \ldots, l_{max} = |C|$ 个 Steiner 节点 $V_F \subset V’ \setminus C$ 进行移除;随机选择一组 $m = \lfloor \frac{l}{3} \rfloor$ 个客户节点 $C_C \subset V’
i \in C$。新解 $S’‘$ 中连接的客户集合为 $C’’ = C’ \triangle V_C$,即添加 $V_C$ 中当前未连接的客户,同时移除到目前为止已连接的客户。最后,我们使用以下调整后的边成本 $c’$ 应用 MSTAH,其中 M 是一个足够大的值($M \gg \max
{e \in E} c_e$):
[
c’_e =
\begin{cases}
M & \text{如果 e 与节点 } v \in V_F \text{ 相关联} \
0 & \text{如果 } e \in E’ \text{ 且 e 不与节点 } v \in V_F \text{ 相关联} \
c_e & \text{否则}
\end{cases}
]
4.3 贪婪随机自适应搜索过程(GRASP)
作为通用 VNS 的替代方案,我们还考虑了 GRASP,其中局部搜索同样由上述 VND 执行。在构建阶段,我们对最小生成树增强启发式算法(MSTAH)进行了修改,通过随机化 Kruskal 算法来计算距离网络 D 上的 MST。具体来说,我们选择下一个要包含的边时,从受限候选列表中随机选择,该列表由所有可行边 $(u, v) \in C’ \times C’$ 组成,其中 $d(u, v) \leq d_{min} + \alpha (d_{max} - d_{min})$,$0 < \alpha \leq 1$,$d_{max}$ 和 $d_{min}$ 分别是最大和最小距离。
5. 结合拉格朗日分解和变邻域下降
我们使用体积算法求解确定最优 $\lambda^*$ 的拉格朗日对偶问题。在每次迭代中,我们需要为当前的拉格朗日乘子 $\lambda$ 确定最优的 $x_e$ 变量和 $f^k_e$ 变量。$f^k_e$ 变量通过为每个客户 $k \in C$ 计算单独的最便宜连接并最终决定是否连接 k 来计算。显然,由边集 $E’ = {e \in E | \exists k \text{ s.t. } f^k_e = 1}$ 诱导的图 $S’ = (V’, E’)$ 是一个原始可行解。
为了获得更好的原始解并缩小上下界之间的差距,我们采用了两种混合拉格朗日分解方法和元启发式方法的替代方案:
1.
顺序混合
:立即尝试改进通过体积算法迭代获得的有前途的解。
2.
交错混合
:存储通过体积算法获得的 N 个最佳解,并在体积算法终止后尝试改进它们。
在两种情况下,我们都使用 VND 按 CEN、KPEN、CRN、R2CRN 的顺序为给定的候选解生成局部最优解(CRN 和 R2CRN 仅在 SST 变体中考虑)。
在交错方法中,我们使用一种自适应策略,根据外生参数 $\delta$、$\gamma$ 和 $\beta_{max}$ 来决定是否对当前解 $S’$ 应用 VND。具体来说,当 $c(S’) \leq (1 + \beta) c(S’ {best})$ 时应用 VND,其中 $S’ {best}$ 是到目前为止通过体积算法获得的最佳解。我们自动调整 $\beta$ 的值,每 $\delta$ 次迭代进行一次调整:如果在体积算法的最后 $\delta$ 次迭代中应用 VND 的比例 $r < \gamma$,则设置 $\beta = \min(2\beta, \beta_{max})$;如果 $r > \gamma$,则设置 $\beta = \max(\frac{\beta}{2}, \beta_{max})$。
我们初始化拉格朗日乘子为 $\lambda_{k,e} = \frac{c_e}{|C|}$,以确保体积算法的第一次迭代有一个正的下界。体积算法的其他配置如下:
- 目标值 $T$ 设置为 $T = 1.1 z_{UB}$,其中 $z_{UB}$ 是实际的上界,除非实际下界 $z_{LB} > 0.9 T$,此时 $T$ 乘以 1.1。
- 初始设置 $f = 0.1$ 和 $\alpha = 0.01$。
- 连续 20 次非改进迭代后,如果 $f > 10^{-4}$,则 $f$ 乘以 0.67;如果 $f < 1$ 且迭代是改进的,则 $f$ 乘以 1.1。
- 如果在最后 100 次迭代中 $z_{LB}$ 的改进不超过 1% 且 $\alpha > 10^{-5}$,则 $\alpha$ 乘以 0.85。
- 体积算法在 $\lceil z_{LB} \rceil = z_{UB}$、连续 250 次非改进迭代或达到最大时间限制时终止。
6. 计算结果
我们使用来自德国一个城市的真实世界实例对我们的方法进行了测试,所有实验都在 Intel Xeon 5150 的单核心上进行,主频为 2.66GHz,内存为 8GB,并使用 ILOG CPLEX 10.0 求解 MCF 公式的整数线性规划(ILP)。
6.1 实例集特征
| Set | # | |V| | |E| | |C| | |C1| | |C2| | bmax | |V (bmax)| |
| — | — | — | — | — | — | — | — | — |
| ClgSE-I1 | 25 | 190 | 377 | 5 - 8 | 3 - 5 | 2 - 3 | 30 | 3.79 |
| ClgSE-I2 | 15 | 190 | 377 | 11 - 17 | 7 - 12 | 4 - 7 | 30 | 8.97 |
| ClgSE-I3 | 15 | 190 | 377 | 8 - 12 | 5 - 8 | 3 - 6 | 30 | 6.04 |
| ClgME-I1 | 25 | 1757 | 3877 | 6 - 10 | 4 - 7 | 2 - 3 | 100 | 4.96 |
| ClgME-I2 | 15 | 1523 | 3290 | 11 - 14 | 8 - 11 | 3 - 4 | 100 | 8.71 |
| ClgN1B-I1 | 20 | 2804 | 3082 | 11 - 14 | 8 - 11 | 3 - 4 | 100 | 8.49 |
| ClgN1B-I2 | 19 | 2804 | 3082 | 7 - 11 | 3 - 6 | 4 - 6 | 100 | 3.99 |
| ClgN1E-I1 | 20 | 3867 | 8477 | 8 - 14 | 3 - 6 | 5 - 9 | 150 | 4.12 |
| ClgN1E-I2 | 20 | 3867 | 8477 | 10 - 12 | 6 - 8 | 4 - 5 | 150 | 6.39 |
6.2 下界比较
表 2 比较了我们的拉格朗日分解(LD)方法生成的下界与 MCF 公式的线性规划松弛值。结果表明,LD 在处理 SST 变体或考虑 $b_{max}$ 冗余时,获得的下界更好。
| Set | OPT+RED | SST+RED | OPT+BMAX | SST+BMAX |
|---|---|---|---|---|
| ClgS-I1 | 0.00 | 0.05 | 6.83 | 6.98 |
| ClgS-I2 | 0.00 | 0.14 | 5.98 | 5.96 |
| ClgS-I3 | 0.00 | 0.51 | 5.53 | 4.95 |
| ClgM-I1 | 0.00 | 0.00 | 2.04 | 2.04 |
| ClgM-I2 | 0.00 | 0.15 | 4.54 | 3.71 |
| ClgN1B-I1 | 0.00 | 3.07 | - | - |
| ClgN1B-I2 | 0.00 | 2.12 | - | - |
| ClgN1E-I1 | 0.00 | 0.14 | - | - |
| ClgN1E-I2 | 0.00 | 0.02 | - | - |
6.3 上下界差距比较
表 3 比较了 LD、SEQ 和 INT 生成的上下界之间的相对差距以及相应的标准差。一般来说,随着客户数量的增加,差距会增大。SEQ 和 INT 对于所有问题变体和实例始终产生最小的差距,通常明显优于 LD。
| Set | OPT - RED | SST - RED | OPT - BMAX | SST - BMAX | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| LD | SEQ | INT | LD | SEQ | INT | LD | SEQ | INT | LD | SEQ | INT | |
| ClgS-I1 | 1.77 (2.45) | 1.65 (2.39) | 1.63 (2.38) | 1.76 (2.45) | 1.65 (2.39) | 1.63 (2.38) | 2.26 (3.19) | 2.13 (3.00) | 1.74 (2.40) | 2.26 (3.19) | 2.13 (3.00) | 1.74 (2.40) |
| ClgS-I2 | 12.80 (6.16) | 9.12 (4.05) | 8.84 (4.08) | 13.45 (7.07) | 9.98 (6.18) | 9.13 (4.65) | 19.49 (7.36) | 14.41 (4.46) | 12.87 (4.34) | 19.53 (7.11) | 14.60 (4.91) | 13.15 (4.89) |
| ClgS-I3 | 7.49 (6.07) | 5.73 (4.81) | 5.54 (4.55) | 8.89 (6.19) | 7.28 (5.03) | 7.09 (4.84) | 9.05 (7.44) | 6.47 (4.47) | 6.23 (4.30) | 10.26 (7.67) | 7.31 (4.32) | 7.14 (4.21) |
| ClgM-I1 | 4.29 (2.61) | 2.80 (2.17) | 2.70 (2.10) | 4.22 (2.62) | 2.80 (2.17) | 2.61 (2.10) | 5.27 (3.22) | 3.41 (2.14) | 3.09 (1.96) | 5.27 (3.23) | 3.34 (2.10) | 3.09 (1.96) |
| ClgM-I2 | 9.88 (7.10) | 6.58 (4.75) | 5.89 (4.43) | 11.60 (6.70) | 8.50 (5.77) | 7.67 (5.65) | 15.19 (9.49) | 9.29 (5.66) | 8.27 (4.53) | 15.89 (9.37) | 9.85 (5.86) | 9.02 (5.16) |
| ClgN1B-I1 | 4.12 (3.50) | 2.82 (2.82) | 2.50 (2.19) | 4.17 (3.45) | 2.88 (2.80) | 2.58 (2.20) | - | - | - | - | - | - |
| ClgN1B-I2 | 1.96 (1.81) | 1.32 (1.43) | 1.27 (1.44) | 1.84 (1.73) | 1.34 (1.46) | 1.29 (1.46) | - | - | - | - | - | - |
| ClgN1E-I1 | 3.13 (3.33) | 1.51 (1.57) | 1.23 (1.24) | 3.08 (3.23) | 1.65 (1.81) | 1.23 (1.24) | - | - | - | - | - | - |
| ClgN1E-I2 | 5.62 (4.67) | 3.55 (2.51) | 3.21 (2.09) | 5.36 (4.04) | 3.53 (2.52) | 3.20 (2.08) | - | - | - | - | - | - |
6.4 上界改进比较
表 4 显示了生成的上界相对于 LD 的相对改进。在不考虑 $b_{max}$ 冗余的情况下,INT 通常能找到与 MCF 公式在 2 小时内获得的解一样好甚至更好的解。
| Set | MCF | SEQ | INT | GRASP | VNS |
|---|---|---|---|---|---|
| OPT+RED | |||||
| ClgS-I1 | 0.14 (0.19) | 0.12 (0.19) | 0.14 (0.19) | -0.13 (1.02) | 0.12 (0.21) |
| ClgS-I2 | 3.40 (2.85) | 3.15 (2.73) | 3.40 (2.85) | 3.03 (3.23) | 3.38 (2.85) |
| ClgS-I3 | 1.74 (2.17) | 1.57 (2.16) | 1.74 (2.17) | 1.48 (2.33) | 1.63 (2.30) |
| ClgM-I1 | 1.53 (1.01) | 1.41 (1.12) | 1.61 (1.11) | 1.54 (1.13) | 1.22 (1.67) |
| ClgM-I2 | 3.18 (2.88) | 2.87 (2.74) | 3.51 (2.85) | 3.23 (2.78) | 2.73 (4.15) |
| ClgN1B-I1 | 1.50 (1.82) | 1.22 (1.57) | 1.51 (1.83) | 1.47 (1.87) | 1.41 (1.93) |
| ClgN1B-I2 | 0.66 (1.05) | 0.62 (1.02) | 0.67 (1.05) | 0.53 (1.09) | 0.67 (1.05) |
| ClgN1E-I1 | - (-) | 1.52 (1.77) | 1.78 (2.00) | 1.65 (2.11) | 1.14 (2.04) |
| ClgN1E-I2 | 1.07 (3.32) | 2.07 (2.41) | 2.64 (2.74) | 2.56 (2.75) | 2.36 (2.78) |
| SST+RED | |||||
| ClgS-I1 | 0.13 (0.19) | 0.11 (0.19) | 0.13 (0.19) | -0.14 (1.02) | 0.00 (0.43) |
| ClgS-I2 | 3.67 (2.92) | 2.98 (2.90) | 3.67 (2.92) | 3.30 (3.33) | 2.87 (3.76) |
| ClgS-I3 | 1.57 (2.38) | 1.40 (2.34) | 1.57 (2.38) | 1.21 (2.57) | 1.30 (2.43) |
| ClgM-I1 | 1.49 (0.99) | 1.35 (1.05) | 1.55 (1.04) | 1.48 (1.06) | 0.95 (1.89) |
| ClgM-I2 | 3.44 (2.67) | 2.71 (2.60) | 3.45 (2.62) | 3.01 (2.60) | 2.14 (4.14) |
| ClgN1B-I1 | 1.50 (1.80) | 1.21 (1.51) | 1.49 (1.82) | -0.86 (7.66) | 0.81 (2.25) |
| ClgN1B-I2 | 0.54 (0.89) | 0.49 (0.86) | 0.54 (0.89) | -2.68 (6.94) | -0.12 (1.83) |
| ClgN1E-I1 | - (-) | 1.35 (1.56) | 1.75 (1.98) | 1.60 (2.05) | 0.36 (2.04) |
| ClgN1E-I2 | 1.21 (2.53) | 1.88 (1.95) | 2.43 (2.27) | 2.10 (2.56) | 1.92 (2.31) |
| OPT+BMAX | |||||
| ClgS-I1 | 0.50 (1.33) | 0.12 (0.24) | 0.48 (1.32) | 0.23 (1.82) | 0.48 (1.32) |
| ClgS-I2 | 5.71 (3.90) | 4.08 (3.68) | 5.36 (4.04) | 4.97 (4.36) | 5.22 (3.97) |
| ClgS-I3 | 2.60 (3.32) | 2.18 (3.31) | 2.40 (3.38) | 1.68 (3.95) | 2.15 (3.66) |
| ClgM-I1 | 1.73 (2.13) | 1.74 (1.69) | 2.05 (1.87) | 1.84 (1.83) | 1.94 (1.90) |
| ClgM-I2 | 4.02 (6.17) | 4.82 (4.99) | 5.67 (5.17) | 5.51 (5.11) | 5.61 (5.11) |
| SST+BMAX | |||||
| ClgS-I1 | 0.50 (1.33) | 0.12 (0.24) | 0.48 (1.32) | 0.23 (1.82) | 0.47 (1.32) |
| ClgS-I2 | 5.52 (4.10) | 4.00 (3.23) | 5.17 (4.15) | 4.78 (4.41) | 3.97 (4.28) |
| ClgS-I3 | 2.80 (3.70) | 2.46 (3.78) | 2.61 (3.77) | 1.89 (4.26) | 2.16 (4.03) |
| ClgM-I1 | 1.62 (1.78) | 1.81 (1.67) | 2.05 (1.83) | 1.84 (1.83) | 1.85 (1.93) |
| ClgM-I2 | 3.59 (6.94) | 4.95 (4.84) | 5.63 (5.08) | 5.42 (5.09) | 4.63 (4.87) |
6.5 运行时间比较
表 5 给出了所有方法的中位数运行时间。我们的所有方法的 CPU 时间与求解 MCF 公式的线性规划松弛的时间处于同一数量级,但除了通常更好的下界外,还能识别出高质量的可行解。
| Set | MCFLP | MCF | LD | SEQ | INT | GRASP | VNS |
|---|---|---|---|---|---|---|---|
| OPT+RED | |||||||
| ClgS-* | 0.2 | 0.9 | 2.0 | 1.7 | 3.7 | 1.7 | 1.2 |
| ClgM-* | 58.2 | 3490.4 | 77.4 | 99.7 | 234.0 | 59.6 | 34.5 |
| ClgN1B-* | 91.5 | 739.0 | 72.3 | 93.2 | 216.5 | 118.6 | 87.2 |
| ClgN1E-* | 1103.9 | 7220.9 | 371.9 | 659.5 | 2684.9 | 351.6 | 211.9 |
| SST+RED | |||||||
| ClgS-* | 0.2 | 1.0 | 2.0 | 1.8 | 3.9 | 1.8 | 1.1 |
| ClgM-* | 71.1 | 3052.2 | 90.2 | 109.4 | 226.9 | 58.0 | 30.2 |
| ClgN1B-* | 96.1 | 603.5 | 68.2 | 101.1 | 203.2 | 115.3 | 77.2 |
| ClgN1E-* | 824.9 | 7220.9 | 365.4 | 583.7 | 2241.2 | 365.7 | 206.8 |
| OPT+BMAX | |||||||
| ClgS-* | 0.3 | 3.2 | 7.7 | 8.4 | 10.5 | 2.0 | 1.5 |
| ClgM-* | 403.6 | 7205.9 | 2865.5 | 3604.6 | 7200.0 | 409.8 | 200.5 |
| SST+BMAX | |||||||
| ClgS-* | 0.3 | 3.1 | 8.3 | 8.3 | 10.7 | 2.1 | 1.3 |
| ClgM-* | 380.6 | 7205.9 | 2260.4 | 3401.4 | 6214.3 | 400.0 | 181.9 |
综上所述,我们的方法在求解相关问题时表现出了较好的性能,尤其是结合拉格朗日分解和元启发式方法的混合策略,能够有效缩小上下界之间的差距,提高解的质量。GRASP 和 VNS 也能产生高质量的解,其中 VNS 在解的质量方面似乎更稳定,几乎总是能产生比 LD 略好的平均解。
拉格朗日分解、元启发式算法及混合方法研究(续)
7. 方法总结与优势分析
我们提出的一系列方法在解决相关问题上展现出了显著的优势,下面对这些方法进行总结和优势分析。
7.1 路径计算算法优势
- 高效性 :Suurballe 和 Tarjan 提出的算法能在有向图上以 $O(|A| + |V| log |V|)$ 的时间复杂度计算最短弧不相交路径对,通过应用于分裂图,能高效地计算节点不相交路径,满足实际应用中对计算速度的要求。
- 可扩展性 :对于 $b_{max}$ 冗余情况的简单扩展,使得算法能适应不同的冗余需求,具有较强的灵活性。通过只考虑特定的分支节点,避免了不必要的计算,提高了算法的效率。
7.2 邻域搜索方法优势
- 多样性 :我们使用了连接交换邻域(CEN)、关键路径交换邻域(KPEN)、连接移除邻域(CRN)和受限双连接移除邻域(R2CRN)等多种邻域搜索方法。这些方法从不同角度对解进行改进,能够探索更广泛的解空间,增加找到最优解的可能性。
- 针对性 :不同的邻域搜索方法适用于不同的情况。例如,CEN 专注于单个连接的交换,能快速找到局部最优解;CRN 和 R2CRN 则通过移除客户连接来改进解,适用于 SST 变体,具有很强的针对性。
7.3 元启发式算法优势
- 全局搜索能力 :变邻域搜索(VNS)和贪婪随机自适应搜索过程(GRASP)等元启发式算法具有较强的全局搜索能力。VNS 通过摇晃算法逃离局部最优,不断探索新的解空间;GRASP 在构建阶段的随机化操作,也增加了算法的随机性和全局搜索能力。
- 稳定性 :从计算结果来看,VNS 在解的质量方面表现更稳定,几乎总是能产生比拉格朗日分解(LD)略好的平均解,说明其在不同实例上都能保持较好的性能。
7.4 混合策略优势
- 缩小上下界差距 :结合拉格朗日分解和变邻域下降的混合策略,无论是顺序混合还是交错混合,都能有效地缩小上下界之间的差距。通过对拉格朗日分解得到的解进行元启发式改进,提高了解的质量,使得算法在求解问题时更接近最优解。
- 高效性 :混合策略在保证解质量的同时,计算时间与求解 MCF 公式的线性规划松弛的时间处于同一数量级,说明其具有较高的计算效率。
8. 方法应用与拓展
我们的方法在实际应用中具有广泛的前景,以下是一些可能的应用场景和拓展方向。
8.1 网络规划与设计
在网络规划中,如通信网络、电力网络等,需要考虑节点之间的连接和冗余问题。我们的方法可以用于确定最优的网络拓扑结构,以最小的成本满足客户的连接需求,并保证一定的冗余性。例如,在通信网络中,通过计算节点不相交路径,能提高网络的可靠性,避免单点故障导致的网络中断。
8.2 物流配送
在物流配送中,需要规划货物的运输路径,以最小化运输成本。我们的方法可以用于确定最优的配送路线,同时考虑路径的冗余性,以应对可能的交通拥堵或其他意外情况。例如,在配送中心到多个客户点的配送问题中,可以使用我们的方法找到成本最低且具有一定冗余性的配送方案。
8.3 问题拓展
- 多目标优化 :目前的方法主要关注成本最小化,可以将其拓展到多目标优化问题,如同时考虑成本、时间和可靠性等多个目标。通过引入多目标优化算法,如多目标遗传算法等,能得到一组非支配解,供决策者根据实际需求进行选择。
- 动态问题 :将方法拓展到动态问题中,如客户需求随时间变化、网络拓扑结构动态调整等情况。可以使用在线算法或实时优化算法,根据实时信息对解进行动态调整,以适应动态环境的变化。
9. 总结与展望
本文介绍了一系列用于解决相关问题的方法,包括路径计算算法、邻域搜索方法、元启发式算法以及混合策略。通过理论分析和计算实验,我们验证了这些方法的有效性和优势。
在未来的研究中,我们可以进一步优化算法的性能,如通过改进邻域搜索方法、调整元启发式算法的参数等,提高算法的搜索效率和收敛速度。同时,拓展方法的应用范围,将其应用到更多的实际场景中,为解决实际问题提供更有效的解决方案。此外,还可以探索与其他算法的结合,如与机器学习算法结合,利用机器学习的预测能力来指导算法的搜索过程,进一步提高算法的性能。
总之,我们的方法为解决相关问题提供了一种有效的途径,具有广阔的应用前景和研究价值。通过不断的研究和改进,相信这些方法能在更多领域发挥重要作用。
10. 流程图展示
下面是拉格朗日分解和变邻域下降混合策略的流程图:
graph TD;
A[初始化拉格朗日乘子] --> B[体积算法迭代];
B --> C[计算最优 xe 和 fk_e 变量];
C --> D[生成原始可行解 S'];
D --> E{选择混合策略};
E -- 顺序混合 --> F[立即使用 VND 改进 S'];
E -- 交错混合 --> G[存储 N 个最佳解];
G --> H[体积算法终止];
H --> I[使用 VND 改进存储的解];
F --> J[输出改进后的解];
I --> J;
这个流程图展示了拉格朗日分解和变邻域下降混合策略的主要步骤,包括初始化、体积算法迭代、解的生成、混合策略的选择以及解的改进等过程,有助于更好地理解整个算法的执行流程。
超级会员免费看
22

被折叠的 条评论
为什么被折叠?



