文章目录

  • 一、摘要
  • 二、SALBP-1 的模型和公式
    • 2.1 SALBP-1 的公式
    • 2.2 动态规划模型
      • 2.2.1 构建状态空间的过程
      • 2.2.2 最大站负荷规则
      • 2.2.3 边界的使用
  • 三、算法大纲
    • 3.1 状态枚举
      • 3.1.1 维护已建成的工作站和修改最终条件
      • 3.1.2 任务重新排序
      • 3.1.3 搜索过程中的对称消除
    • 3.2 有界动态规划
  • 四、计算实验
  • 五、结论

论文来源:(2009)A dynamic programming based heuristic for the assembly line balancing problem
作者:Joaquı´n Bautista 等人


一、摘要

  • 简单装配线平衡问题是与分配装配线中产品装配所需的基本任务相关的实际问题的简化。
  • 半个多世纪以来,这个问题在文献中得到了广泛的研究。
  • 目前的工作提出了一个新的程序来解决我们称之为有界动态规划的问题。
  • 术语“有界”的使用不仅与使用边界来减少状态空间相关联,而且还与基于启发式方法的此类空间的减少相关联。
  • 该程序能够在 269 个实例中获得 267 个的最优解率,这已在以前的工作中使用,从而获得该问题的最佳性能。
  • 即使使用更短的计算时间,这些结果也比文献中发现的任何先前程序都有所改进。

二、SALBP-1 的模型和公式

当前部分专门讨论两个主题。第一部分研究 SALBP-1 的正式模型,并介绍其一些主要特征。这些特征将在第 三 节中开发的算法中使用。

第二部分,第 2.2 节,展示了当前工作中使用的基本动态规划模型。此外,本节还介绍了在特别感兴趣的文献中发现的一些改进,以减少解决方案的空间。对先前方法与提议方法之间差异的研究将保留到第 三 节。

2.1 SALBP-1 的公式

一个SALBP-1实例可以由一组基本任务 V V V 来表示,每个任务都有一个固定已知的整数加工时间。
每个任务必须在一组有序的工作站 S j = ( j = 1 , . . . , m ) S_j=(j=1,...,m) Sj​=(j=1,...,m)中处理,每个工作站的最大工作时间为 C C C。
容易得到,所需工作站数量的简单界限是任务数量。

此外,一些任务在它们内部呈现优先关系。例如,需要先组装汽车座椅,然后再组装车门。

优先关系可以使用无环图 G ( V , A ) G(V,A) G(V,A)来表示,其中顶点与任务相关联,任务 i i i 和任务 k k k 之间的弧表示任务 i i i 必须在任务 k k k 之前处理

该问题的目标是找到任务和站点之间的分配,最小化所需站点的数量 m,同时满足以下约束:

其中约束集:
(1)与每个站点的分配时间有关
(2)与任务和约束之间的优先约束有关
(3)规定每个任务分配给一个站点
(4)表示没有任务分配给两个或多个站

从前面的公式可以看出,SALBP-1 可以被认为是一个 Bin Packing 问题,BP-1 遵循 Martello 和 Toth (1990) 的符号,其中添加了优先约束,即约束集合 (2)。

这种关系很有用,因为装箱问题的任何界限都可以用作装配线平衡问题的界限。具体来说,简单边界 LB1、LB2 和 LB3 已在当前工作中使用 (Scholl, 1999)。


从模型中得出的另一个重要考虑因素是问题的可逆性。也就是说,如果将优先约束图 G ( V , A ) G(V,A) G(V,A) 的弧反转,则通过交换站的顺序 S j = S m + 1 − j S_j =S_{m+1-j} Sj​=Sm+1−j​,从反转实例中获得的任何解都可以很容易地转换为原始实例的解, 对于每个 S j , ( j = 1 , . . . , m ) S_j, (j = 1, ..., m) Sj​,(j=1,...,m)。此属性已在当前工作中使用,因为众所周知,实例的可理解难度会根据优先约束的方向而变化。

2.2 动态规划模型

正如前面第 2 节所述,动态规划是一种解决多阶段决策过程的技术。

任何给定的问题都被细分为更小的子问题,这些子问题依次得到解决,直到初始问题通过子问题解决方案的聚合得到解决。

在每个阶段,定义了一组状态。状态应描述当前决策阶段过程的所有可能条件,对应于每个可行的部分解决方案。

所有可能状态的集合称为状态空间。可以使用转换将阶段 u u u 的状态转换为阶段 u + 1 u + 1 u+1 的状态。转换表示在一个阶段中采用的决策,从另一个状态开始到达一个状态所采取的一系列转换称为策略。

动态规划方法可以看作是将原始问题转换为与探索多阶段图 G ( S , T ) G(S,T) G(S,T) 相关联的问题,其中顶点 S S S 与状态空间相关联,弧 T T T 与转移集相关联,寻求最优政策的地方。

动态规划的基础可以追溯到 Bellman (2003) 的最优性原则。最优性原则指出,最优策略应该由从决策链的每个状态到最终状态的最优策略构成。

在动态规划方法下,SALBP-1 可以表示为多阶段决策过程,其中状态定义一组已分配的任务,转换对应于当前部分解决方案的一个或多个任务的分配。基于满足上述约束的转换,所有状态都应遵守数学模型中的优先级和时间约束、约束集(1)和(2)。然后,问题在于从没有任务分配的初始状态和没有任务缺少分配的最终状态找到最优策略。

Jackson (1956) 基于上述方法提出了解决问题的程序。提议的图表将图表的每个阶段与许多指定的站点相关联。阶段 0 表示初始阶段,其中尚未分配任何任务,并且转换与从部分分配到新站的完全分配相关联,同时满足上述约束。也就是说,从与阶段 u u u 相关的部分解 S u S_u Su​ 开始,如果条件 (5) 和 (6) 成立,则在属于阶段 u + 1 u + 1 u+1 的 S u S_u Su​ 和 S u + 1 S_{u+1} Su+1​ 之间有一个过渡

目标是在阶段 0 和分配了所有任务的状态之间找到最短路径,即转换次数最少的路径。

显然,要解决这个问题,需要一个先前需要的步骤来获得状态空间和所有转换的完整描述。这个任务可能非常困难,因为状态的数量相对于实例的任务数量呈指数增长。 Jackson 提出了一个程序来枚举状态和几个程序来减少所需状态的数量,这在一定程度上缓解了这个问题。之后,Easton 等人 (1989) 提出了一种额外的技术来减少需要考虑的状态数量。我们将继续描述 Jackson 的程序以及文献中发现的用于减少状态空间的不同技术。

2.2.1 构建状态空间的过程

该过程基于两个列表的使用。一个列表包含已构建阶段 u 的所有状态。每个状态都从列表中删除,并且可以从它到达的属于阶段 u + 1 的所有状态都被构造并保留在第二个列表中。重复该过程,直到第一个列表为空并且阶段 u + 1 中的所有状态都已构建。然后,第二个列表中的每个状态都成为第一个列表的一部分,并重复该过程。

让我们注意,在构建过程中,一个状态可以通过两个或多个不同的转换达到,并且只有其中一个必须保留在列表中。

这个过程的主要优点是它不需要将所有状态保存在内存中,只需要与构造阶段和前一个阶段相关联的状态。之后,最短路径计算需要所有状态都获得一个解决方案,但可以删除此要求,如本工作的第 三 节所示。

2.2.2 最大站负荷规则

部分加载的工作站包括将任务分配给工作站,其中根据优先级和循环时间限制可以将附加任务分配给同一工作站。此规则删除与部分加载站关联的任何状态,因为可以验证满载站将始终获得与部分加载站相同或更好的解决方案。

当为任何给定阶段构造状态时,将考虑此规则。

2.2.3 边界的使用

当解决方案已知时,我们可以使用任何边界方法删除边界等于或大于已知解决方案的任何状态。

如前所述,我们使用 LB1、LB2 和 LB3 边界。


三、算法大纲

算法的描述分为两部分。第一部分包含用于枚举所有可能状态的过程的描述。该过程基于霍夫曼启发式算法(参见霍夫曼,1963 年)。第二部分专门介绍用于探索状态空间的搜索过程。我们将该过程命名为有界动态规划(参见 Bautista 等人,1996 年)。

3.1 状态枚举

枚举所有可能状态的过程基于霍夫曼启发式 (Hoffmann, 1963)。启发式应用一种搜索算法,该算法尝试连续找到工作站的任务分配并返回具有最少空闲时间的分配。这种搜索算法迭代应用直到找到完整的解决方案,即分配所有任务时。

为了有效地应用此过程,枚举从先前状态可到达的所有状态,对原始搜索算法进行了一些修改。这些修改是:

3.1.1 维护已建成的工作站和修改最终条件

为了枚举所有可能的站点,算法必须跟踪霍夫曼过程提供的所有部分解。这些解决方案相对于在建车站的空闲时间按非递减顺序排列。一旦算法无法生成新的部分解,算法将返回生成的站点集。

3.1.2 任务重新排序

众所周知,枚举过程中的运行时间在很大程度上取决于任务检查的顺序。为了减少这种影响,任务被重新排序以最小化徒劳搜索。提议的重新排序根据以下标准创建一个有序列表:

  • 具有优先关系的任务将始终出现在列表中其前任的任何位置之后。
  • 任务相对于它们可以分配到的第一个站以非递减顺序排列。在任务重新排序之前,通过将下界 LB1 应用于包含上述任务及其所有直接和间接前任任务的任务集来获得第一个站点。该算法考虑到当正在构建具有比当前工作站更高下限的任务时,排序允许我们停止为当前工作站寻找候选者。
  • 当前一个标准存在联系时,处理时间较长的任务出现在列表中的前面
  • 在那些具有相同下界和处理时间的任务中,具有较小原始字典顺序的任务首先出现在列表中

3.1.3 搜索过程中的对称消除

为了消除相同分配的构造,选择任务的顺序必须遵循非递减顺序。

这是关于有序列表中的顺序实现的。

显然,程序会搜索先前工作站中尚未分配的任务分配。从初始状态 S u S_u Su​ 开始,仅考虑集合 V – S u V–S_u V–Su​ 中的那些任务。

3.2 有界动态规划

有界动态规划 (Bautista et al, 1996) 是一个精确的过程,可以用作启发式算法,源自动态规划的思想。如前几节所述,由于需要考虑大量状态,直接使用动态规划解决 SALBP-1 的方法是不切实际的。

Bounded Dynamic Programming,其中Bounded一词不仅指使用边界来减少状态空间,还试图通过启发式规则丢弃状态空间的某些状态来解决上述问题。目标是将与动态规划公式的最终实现相关的内存和时间要求限制在真实计算机上。

有界动态规划可以看作是一种基于图形的搜索过程,它使用类似于 Jackson (1956) 中观察到的方法的双列表方法。

第一个列表对应于图中已经探索的阶段,第二个列表对应于正在构建的阶段。一个接一个地,第一个列表中的每个状态都从列表中删除、开发,因此它们的后继者保留在第二个列表中。传统的动态规划方法会生成从当前状态可达的所有可能状态,但有界动态规划方法只会开发这些状态的一个子集。当第一个列表为空时,第二个列表成为第一个,重复该过程直到找到解决方案。到这里,动态规划和有界动态规划的第二个主要区别就出现了。第二个列表在替换第一个列表之前需要经过缩减程序。减少过程从列表中删除状态,直到剩下的状态不超过最大数量,并且仅保留那些状态以供在后续步骤中考虑。

让我们注意到状态空间松弛消除了动态规划方法给出的最优条件;但是,它允许解决更大的实例。此外,在这些没有状态被丢弃的情况下,因为允许有足够的时间和空间限制,该算法保留了从动态规划方法继承的最佳条件。

该算法需要两个控制参数来定义其行为。第一个叫做 window_size,它与算法从一个阶段到下一个阶段允许保持的最大状态数有关。第二个叫做 max_transitions,它与从一个状态发展出的最大状态数有关。算法 1 显示了有界动态过程的方案。


该过程从阶段 0 开始。阶段 0 由空分配定义的状态组成,这意味着没有分配任务。连续探索图的各个阶段,从前一阶段的状态和当前阶段的状态生成转换。对前一阶段的每个状态重复探索。该算法基于之前提出的霍夫曼过程的修改,稍后将进行更详细的解释。当存在前一阶段的未探索状态时,将应用消除状态的缩减程序,从而定义该阶段。

在构建了与每个​​阶段相关的状态之后,仍然需要根据每个阶段所采取的转换来重建最优解。幸运的是,如果每个状态保持一个额外的向量与每个任务被选择的阶段相关联,那么之前基于最短路径计算的这个步骤可以被删除。该向量不定义状态,但允许它轻松确定每个任务的最终工作站。作为一个额外的好处,保留向量信息允许我们不保留与先前决策阶段相关的内存状态。

算法 1 中的过程 Hoffmann(State,max_transitions) 构建了多个属于当前构建阶段的状态,这些状态小于或等于 max_transitions,起源于对状态 State 的探索。

该过程的行为在第 3.1 节中介绍,但该过程仅根据正在建设的车站的空闲时间返回 max_transitions 最佳构建状态。为了减少运行时间,当存在空闲时间等于0的max_transitions个状态时,算法停止搜索。

ReduceStates(States(Stage),window_size) 过程最初以非递减顺序对状态进行排序,该顺序与分配站的空闲时间总和有关。之后,选择满足以下条件的第一个 window_size 状态,或者在没有足够的情况下选择所有状态来填充 window_size:

  • 部分任务分配的下限低于最知名的解决方案。
  • 该状态不等同于任何其他先前选择的状态。

第一个条件试图在这个阶段通过使用边界来限制不必要的搜索,但是需要一个初始解决方案。该算法使用 Hoffmann 的原始算法计算一个。霍夫曼算法可以看作是算法 1 的特定应用,其中 window_size = 1 且 max_transitions = 1。

只要在应用 Hoffmann(State,max_transitions) 期间可以从两个或多个不同状态达到相同状态,则第二个条件是必要的。

让我们注意,所提出的算法没有明确使用最大站负载规则。然而,条件隐含地遵循减少搜索空间的机制(部分解决方案将始终报告两个条件的相等或更差的值)。

上述过程类似于其他枚举过程,作为遵循广度优先规则的分支定界法、具有状态空间松弛的动态规划(Christofides 等人,1981 年)或波束搜索启发式算法(Ow 和 Morton,1988 年)。

所提出的算法与基于广度优先的 Branch and Bound 之间的差异很容易识别。首先,动态规划的使用是基于图的方法来搜索解空间,而Branch and Bound是基于树搜索,简化了消除等价部分解的过程。在我们的过程中,等效的部分解表示图中的相同顶点,即状态,必须被消除。此外,所提出的过程不需要对所有状态或顶点进行完整研究,从而减少了计算时间和内存需求,同时失去了最优性。

与具有状态空间松弛的动态规划程序相比,所提出的算法使用了几种相同的技术,尽管我们的程序包括启发式技术以减少状态数。

最后,Beam Search heuristic 是与有界动态规划方法更相似的过程。它们都使用两个具有相似行为的参数,在波束搜索启发式中称为波束宽度和过滤器宽度。这两个参数和其他启发式技术允许束搜索过程减少搜索空间。但存在三个主要区别:(1)有界动态规划利用边界来减少搜索空间,而传统的波束搜索不需要或不使用它们,(2)现代波束搜索程序倾向于在选择中引入一些随机性当我们的程序是完全确定性的时,程序可以使搜索多样化,并且 (3) 正如前面引用的广度优先分支定界法,有界动态规划是一种基于图的搜索探索,而波束搜索是一种基于树的搜索探索。

基于图的搜索探索可能会增加研究阶段所需的工作量,因为必须简化独立构建的等效状态。但是,它可以减少探索由搜索树中不同顶点表示的相同部分解决方案所花费的时间。显然,这些元素也可以合并到 Beam Search 启发式或 Bounded Dynamic 启发式中,但是必须观察这两个过程之间的关键哲学差异,即基于图的搜索与基于树的搜索。


四、计算实验

所提出的算法在不同的参数集上进行了测试,windows_size = (1, 10, 50, 100, 250, 500, 750, 1000) 和 max_transitions = (1, 5, 10)。

表 1 显示了一些参数组合得到的结果,除了开放实例之外的所有情况下找到的最佳解决方案对应的最佳解决方案的数量,以及以实际运行时间而非 CPU 时间测量的平均和最大运行时间.

表 1 结果是通过文献 SALOME 和 BEAMACO 中可用的不同程序以及本文提出的算法 (BDP) 获得的,只是参数不同。还报告了找到的最佳解决方案的数量 (# best)、平均 (T.mean) 和最大 (T.max) 运行时间。呐。代表不可用的结果或不适用。

从结果可以看出该算法是非常有效的。它还允许根据 window_size 和 max_transitions 参数控制运行时间。让我们注意到有界动态规划window_size = 1 和 max_transitions = 1 对应于霍夫曼启发式。

即使运行时间有限,例如 window_size = 10 和 max_transitions = 5,该算法也能够达到先前元启发式算法(如 ANTS)报告的结果(Bautista 和 Pereira,2007)。此外,将 window_size 增加到 50 可以让我们改进以前在文献中发现的最佳启发式算法。为了改进 SALOME 给出的结果,需要更大的窗口大小 250 和最大转换数 10,但运行时间仍然小得多。

最后,如果窗口大小足够大,即 1000,则可以找到 268 个最佳解决方案,只剩下一个未解决的实例,BARTHOLD2,循环时间为 85。

我们的解决方案有 51 个站点,而最佳解决方案有 50 个站点。尽管调查了该实例的行为,但并未尝试增加窗口大小来解决此特定情况。由同一作者提出的先前提案 ANTS(Bautista 和 Pereira,2007 年)能够最佳地解决实例。当仔细检查实例的优先关系和总空闲时间时,我们得出结论,目前的算法在解决实例方面有两个主要困难:(1)优先关系有许多连接的组件,并且这些连接的组件中的许多仅与一两个任务。因此,可以将许多任务分配给任何站点,因此该实例看起来更像是一个具有很少优先级约束的装箱实例,而不是装配线平衡实例。 (2) 由于从第一阶段开始就有许多候选者可用,因此该算法在第一阶段表现得很短视,因为它不使用任何关于优先关系的信息。相反,ANTS 启发式利用局部搜索,这得益于这两个事实,很容易获得最优解。


五、结论

  • 目前的工作提出了一种新的程序来解决简单的装配线平衡问题,同时尝试最小化所需工作站的数量,在文献中称为 SALBP-1。
  • 该过程获得的结果表明,该实现能够从文献中找到的 269 个实例中获得 267 个的最优解。同样,它还为另一个实例找到了最著名的解决方案。
  • 所提议的过程混合了一组启发式规则,以减少动态规划框架内的搜索空间,从而改进该问题的任何先前方法的结果。
  • 最后,检查过程无法解决的唯一实例,并解释该实例的算法行为的可能原因。
  • 让我们注意到,该程序很容易适用于文献中研究的许多一般情况,正如 Easton 等人 (1989) 先前通过类似程序所述。
  • 如今,SALBP 的求解程序能够找到令人满意的问题解决方案,至少对于文献中用于比较目的的实例而言是这样。
  • 然而,目前对这些模型的研究需要为通用装配线平衡问题 GALBP 找到良好的程序,其中许多用于 SALBP 实例的程序无法获得相同的解决方案质量。

【论文阅读】(2009)A dynamic programming based heuristic for the assembly line balancing problem相关推荐

  1. 论文阅读:On Dynamic Resource Allocation for Blockchain Assisted Federated Learning over Wireless Channel

    论文阅读:On Dynamic Resource Allocation for Blockchain Assisted Federated Learning over Wireless Channel ...

  2. 论文阅读:Visual Semantic Localization based on HD Map for AutonomousVehicles in Urban Scenarios

    题目:Visual Semantic Localization based on HD Map for Autonomous Vehicles in Urban Scenarios 中文:基于高清地图 ...

  3. 论文阅读笔记:Link Prediction Based on Graph Neural Networks

    文章目录 说明 Abstract 1 Introduction 2 Preliminaries Notations Latent features and explicit features Grap ...

  4. 论文阅读:Semantic Aware Attention Based Deep Object Co-segmentation(ACCV2018)

    协同分割论文:Semantic Aware Attention Based Deep Object Co-segmentation(ACCV2018) 论文原文     code 目录 1.简介 2. ...

  5. 论文阅读:A Novel Graph based Trajectory Predictor with Pseudo Oracle

    A Novel Graph based Trajectory Predictor with Pseudo Oracle 摘要 1 引言 2 相关工作 3 PROPOSED METHOD IV. EXP ...

  6. 【论文阅读】Siamese Neural Network Based Few-Shot Learning for Anomaly Detection in Industrial Cyber-Physi

    文章目录 Abstract 1. Introduction 2. Related Work 2.1 Anomaly Detection techniques for CPS 2.2 Few-Shot ...

  7. 论文阅读:Predicting Dynamic Embedding Trajectory inTemporal Interaction Networks(JODIE模型)

    最近阅读了Jure组的工作,是关于时序交互图的JODIE模型,所思所想写在这篇文章中,如果有愿意讨论的伙伴可以评论或者私聊我指出我的问题. Abstract 作者在摘要部分提出处理有顺序的交互是一个十 ...

  8. 论文阅读笔记《Dynamic Few-Shot Visual Learning without Forgetting》

    小样本学习&元学习经典论文整理||持续更新 核心思想   本文提出一种不会遗忘的动态小样本学习算法,严格来讲应该也属于基于外部记忆的小样本学习算法.本文的主体结构依旧是特征提取+分类器的组合, ...

  9. DWA局部路径规划算法论文阅读:The Dynamic Window Approach to Collision Avoidance。

    DWA(动态窗口)算法是用于局部路径规划的算法,已经在ROS中实现,在move_base堆栈中:http://wiki.ros.org/dwa_local_planner DWA算法第一次提出应该是1 ...

最新文章

  1. 利用外部命令Oralce数据库导入导出
  2. 【Lua】LuaForWindows_v5.1.4-46安装失败解决方案
  3. Power BI:M与DAX以及度量与计算列
  4. 第三十七期:刷脸支付叫好不叫座,为啥消费者和商家都不愿用先进科技?
  5. Linux执行定时任务(crontab)遇到的坑
  6. python面向对象中的类
  7. 【python教程入门学习】两道关于递归的练习题
  8. idea中浏览器打开页面404_深圳网站建设中的404页面有什么用
  9. 五 .3D-2D:PnP问题求解 非线性法BA
  10. Hadoop之mapReduce有几种排序及排序发生的阶段
  11. Cache之直接映射
  12. Java vs ECS,垃圾回收的乾坤大挪移?
  13. linux u盘读取速度,[操作系统]linux dd命令测试U盘读写速度
  14. 胆战心惊形容什么_胆战心惊的近义词
  15. A. Harry Klopf是谁?
  16. 给定连接查询ems配送信息
  17. 【翻译】CEDEC2014[跨越我的尸体2]跨越Stylized Rendering
  18. 创建镜像问题出现的错误
  19. 基于ssm的田园管理系统
  20. C语言编译时产生的警告:initializing ‘char *‘ with an expression of type ‘const char *‘ discards qualifiers

热门文章

  1. gui php,php-iup: 又一个php的gui扩展,基于iup框架。(仅打算支持PHP 7.2.x)
  2. 5个学习大数据的正确姿势
  3. 安装Simscape Multibody Link插件
  4. 直流电机开发笔记5—直流电机开环/闭环控制
  5. html合并td边框线,使用css将table td边框合并为细边框
  6. Arduino “学生寝室”门禁管理(红外遥控+舵机+无源蜂鸣器+DHT11温湿度传感器+LCD1602+LED灯)
  7. lookup无序查找_Vlookup函数|关于查找的”烦恼”
  8. nginx学习——建立hash表的前提条件
  9. Informix install in linux as4 u5
  10. 利用MATLAB进行动画制作