文本碎片重建与工具切换问题的算法研究
1. 文本碎片重建
1.1 VNS 算法应用结果
在不借助人工干预的情况下应用变邻域搜索(VNS)算法,得到的平均结果如下表所示。在检查邻域时,测试了下一个改进策略和最佳改进策略,且未设置迭代次数或时间限制。表中数据均来自 30 次运行的结果。采用了特定的邻域顺序,但对于超过 100 条碎片的实例,省略了块交换邻域 N5 的检查,因为该邻域的规模为 O(n⁴)。
| 目标函数 | 结果情况 |
|---|---|
| c1 | - |
| c2 | 总体上,c2 的结果优于或等于 c1 的结果,但无法得出哪种步长函数在重建条带切碎文本文件问题(RSSTD)上表现更好的结论。 |
基于 VNS 在处理超过 100 条碎片的实例时表现较差,可以推断出邻域 N5 对 VNS 的成功起到了重要作用。
1.2 半自动化系统测试
对用于重建条带切碎文本文件的半自动化系统进行了实际测试。通过少量的用户交互,利用人机结合的优势,能够快速恢复所有原始文档。
1.3 解决 RSSTD 的方法对比
将 RSSTD 转换为对称旅行商问题(TSP),并应用了链式 Lin Kernighan 启发式算法和新引入的 VNS 算法来解决 RSSTD。结果表明,这两种方法具有竞争力,明显优于之前 Ukovich 等人提出的方法。然而,这两种方法都受到客观函数不完善的影响,因为该函数仅基于条带在给定方向上并排放置的可能性估计。因此,将这些算法嵌入到 HuGS 框架中,让用户能够以灵活的方式参与优化过程,这种半自动化方式在短时间内通过少量用户交互就能完全恢复所有测试实例。
graph LR
A[RSSTD] --> B(转换为对称 TSP)
B --> C{选择算法}
C -->|链式 Lin Kernighan 启发式算法| D(求解)
C -->|VNS 算法| E(求解)
D --> F(嵌入 HuGS 框架)
E --> F
F --> G(用户交互优化)
G --> H(恢复文档)
2. 工具切换问题(ToSP)
2.1 问题背景
制造业对柔性制造系统(FMS)的需求日益增加,FMS 能够自我调整以生产不同产品或改变产品生产顺序,具有多功能性和大规模生产效率。FMS 由一台带有多个工具插槽的机器组成,每个插槽只能容纳一个工具,每个作业需要特定的工具集。由于插槽数量有限,在作业执行过程中可能需要进行工具切换,这直接影响 FMS 的效率。工具切换问题(ToSP)就是要找到合适的作业序列和工具切换序列,以最小化工具加载/卸载操作的总数。该问题在电子、金属加工、计算机内存管理、航空等多个领域都有应用,并且有多种变体。
2.2 问题描述
2.2.1 问题形式化
ToSP 实例可以用一个 4 元组 I = (C, n, m, A) 表示:
- C:表示机器的工具插槽容量(即可用插槽数量)。
- n:表示要处理的作业数量。
- m:表示处理所有作业所需的工具总数(假设 C < m,否则问题很简单)。
- A:是一个 m×n 的布尔矩阵,称为关联矩阵,用于定义执行每个作业所需的工具,即当且仅当工具 i 是执行作业 j 所必需时,Aij = TRUE。
解决方案是一个作业序列 J1, · · ·, Jn 以及相应的工具配置序列 T1, · · ·, Tn,其中 Ti ⊂ {1, · · ·, m} 表示在特定时间加载到机器中的工具。
2.2.2 整数线性规划(ILP)公式
使用两组 0 - 1 决策变量来表示 ToSP 的 ILP 公式:
- xjk:如果作业 j ∈ Nn 被分配到序列中的位置 k ∈ Nn,则 xjk = 1,否则为 0。
- yik:如果工具 i ∈ Nm 在时间 k ∈ Nn 时在机器中,则 yik = 1,否则为 0。
目标函数 F(·) 用于计算特定作业序列所需的工具切换次数:
$$
\begin{align
}
&\min F(y) = \sum_{j = 1}^{n} \sum_{i = 1}^{m} y_{ij}(1 - y_{i,j - 1})\
&\forall j \in N_n : \sum_{k = 1}^{n} x_{jk} = 1\
&\forall j \in N_n : \sum_{k = 1}^{n} x_{kj} = 1\
&\forall k \in N_n : \sum_{i = 1}^{m} y_{ik} \leq C\
&\forall j, k \in N_n \forall i \in N_m : A_{ij}x_{jk} \leq y_{ik}\
&\forall j, k \in N_n \forall i \in N_m : x_{jk}, y_{ij} \in {0, 1}
\end{align
}
$$
2.3 相关工作
ToSP 自 60 年代就受到关注,多年来人们采用了多种技术来解决该问题:
-
启发式构造方法
:
- Djellab 等人通过超图表示 ToSP,并提出了一种旨在最小化边投影中(总加权)间隙数量的启发式方法。
- Hertz 等人描述了三种构造方法(FI、GENI 和 GENIUS),在每一步选择要插入当前序列的作业和最佳插入位置,同时还考虑了最近邻(NN)和 2 - opt 搜索。
-
精确方法
:Laporte 等人提出了两种精确算法,即分支 - 限界法和基于线性规划的分支 - 切割算法。但这些精确方法存在局限性,因为 Oerlemans 和 Crama 等人证明了对于 C > 2,ToSP 是 NP 难问题,Laporte 等人的算法在处理超过 10 个作业的实例时成功率很低。
-
聚类/分组方法
:Salonen 等人针对印刷电路板(PCB)的 ToSP,提出了一种迭代算法,先确定 PCB 的良好分组,再进行排序,并采用基于 Jaccard 相似系数的分层作业分组技术避免重复分组。
-
元启发式方法
:近年来,多种禁忌搜索方法被应用于 ToSP,周等人提出的波束搜索算法被证明特别有效和实用,其性能可以通过改变搜索宽度和评估函数来调整。
graph LR
A[ToSP] --> B{解决方法}
B -->|启发式构造方法| C(超图表示等)
B -->|精确方法| D(分支 - 限界法、分支 - 切割算法)
B -->|聚类/分组方法| E(PCB 分组排序)
B -->|元启发式方法| F(禁忌搜索、波束搜索算法)
2.4 ToSP 的子问题
ToSP 可以分为三个子问题:
1.
机器加载
:确定作业的执行顺序。
2.
工具加载
:在处理作业前确定要切换的工具(如果需要)。
3.
插槽加载
:决定每个工具放置的插槽位置。
在处理均匀 ToSP 时,只需要考虑机器加载和工具加载两个子问题。
2.5 工具加载的 KTNS 方法
在均匀 ToSP 的背景下,假设工具切换成本为常数。如果作业序列固定,可以使用贪心算法“保留最快需要的工具”(KTNS)在多项式时间内确定最优工具切换策略:
1. 在任何时刻,插入当前作业所需的所有工具。
2. 如果需要插入一个或多个工具且插槽已满,则保留最快需要的工具。设作业序列为 J = ⟨J1, · · ·, Jn⟩,Ti ⊂ Nm 为时间 i 的工具配置。定义 Ξik(J) = min{j | (j > k) ∧ Ai,Jj},即给定序列 J 时,工具 i 在时间 k 之后下一次需要的时刻。如果需要移除一个工具,则选择使 Ξik(J) 最大的工具,即移除下一次使用时间最远的工具。
2.6 波束搜索启发式算法
周等人定义的波束搜索算法是解决 ToSP 的有效方法。它是分支 - 限界法的一种变体,采用广度优先遍历搜索树,并在每一层根据某种质量度量选择保留最好的 β 个节点(波束宽度)。通过一步优先级评估函数估计扩展当前解的成本,节点表示部分解(即 λ < n 的作业序列 ⟨J1, · · ·, Jλ⟩,当 λ = n 时表示完整解)。为确保解的质量,使用了两个简单函数:
- h1(J, k) = #(τJk ∩ τJk + 1)
- h2(J, k) = #(τJk ∪ τJk + 1)
其中 τj = {i | Aij = TRUE} 表示作业 j 所需的工具集。
3. 模因算法解决 ToSP
3.1 模因算法的提出
此前虽有多种算法用于解决工具切换问题(ToSP),但尚未有基于种群的算法,尤其是混合种群 - 局部搜索的方法被应用。为此,提出了一种模因算法,它将特定问题的排列遗传算法与爬山法相结合。
3.2 模因算法的优势
通过实验表明,这种结合的方法优于单独的算法,也优于文献中为该问题定义的特定波束搜索启发式算法。以下通过表格对比不同算法解决 ToSP 的效果:
| 算法类型 | 效果描述 |
| ---- | ---- |
| 排列遗传算法 | 单独使用时在某些复杂实例上对减少工具切换次数效果有限 |
| 爬山法 | 容易陷入局部最优,难以找到全局最优解 |
| 波束搜索启发式算法 | 能在一定程度上找到较优解,但对于大规模实例性能提升不明显 |
| 模因算法 | 结合了排列遗传算法的全局搜索能力和爬山法的局部优化能力,在减少工具切换次数上表现更优 |
3.3 模因算法解决 ToSP 的流程
graph LR
A[初始化种群] --> B{选择操作}
B -->|排列遗传算法| C(交叉操作)
C --> D(变异操作)
D --> E(生成子代种群)
E --> F{评估适应度}
F -->|适应度高| G(选择部分个体)
G --> H{爬山法优化}
H --> I(局部搜索优化)
I --> J(更新种群)
J --> K{终止条件判断}
K -->|未满足| B
K -->|满足| L(输出最优解)
具体操作步骤如下:
1.
初始化种群
:随机生成一组作业序列作为初始种群。
2.
选择操作
:使用排列遗传算法中的选择策略,从当前种群中选择部分个体作为父代。
3.
交叉操作
:对父代个体进行交叉操作,生成新的子代个体。
4.
变异操作
:对子代个体进行变异操作,增加种群的多样性。
5.
评估适应度
:计算每个个体的适应度,适应度值表示该作业序列对应的工具切换次数,切换次数越少,适应度越高。
6.
选择部分个体
:根据适应度值选择部分个体进入下一步。
7.
爬山法优化
:对选择的个体使用爬山法进行局部搜索优化,尝试找到更优的解。
8.
更新种群
:将优化后的个体更新到种群中。
9.
终止条件判断
:检查是否满足终止条件,如达到最大迭代次数或适应度值不再提升。如果未满足,返回选择操作继续迭代;如果满足,输出最优解。
4. 总结
4.1 文本碎片重建总结
在文本碎片重建方面,将 RSSTD 转换为对称 TSP 后,链式 Lin Kernighan 启发式算法和 VNS 算法都有不错的表现,且半自动化方式结合人机优势能快速恢复文档。然而,算法受客观函数不完善的影响,未来可以进一步研究如何优化客观函数,提高算法的准确性。
4.2 ToSP 解决方法总结
对于工具切换问题(ToSP),多种算法各有优劣。精确方法受问题复杂度限制,在处理大规模实例时效果不佳;启发式构造方法、聚类/分组方法和元启发式方法都能在一定程度上解决问题,但也存在局限性。而新提出的模因算法结合了排列遗传算法和爬山法的优势,在解决 ToSP 上表现更优。未来可以考虑进一步优化模因算法的参数,如种群大小、交叉概率、变异概率等,以提高算法的性能。同时,可以探索将模因算法应用于 ToSP 的其他变体问题,拓展算法的应用范围。
总的来说,无论是文本碎片重建还是工具切换问题,通过不断探索新的算法和优化现有算法,有望在实际应用中取得更好的效果。
超级会员免费看

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



