【原文翻译】 A tutorial on heuristic methods(启发式方法)

A tutorial on heuristic methods

作者:Edward A. Silver, R. Victor V. Vidal, Dominique de Wearra

1. Introduction

本文的目的有两个。首先,我们希望为决策分析人员和对运筹学基本技术略有了解的管理人员介绍启发式方法。我们的目的并不是要给出一个构建启发式方法的通用秘诀,也不是要对许多现有的启发式程序及其性能进行详尽的比较。不过,我们的第二个目标是确定与启发式方法的使用有关的重要问题,这些问题需要进行更多的研究。关于解决问题的启发式方法,有许多可能的定义。尼科尔森[42]将启发式方法定义为"…通过直观方法解决问题的程序,在这种方法中,问题的结构可以被智能地解释和利用,从而得出合理的解决方案。我们将采用这一定义,此外,我们还将在本文中假定,我们从一个适当的、定义明确的现实问题数学模型开始。

更具体地说,知道了建议解决方案所隐含的决策(或可控)变量的值,我们就能确定 (i) 解决方案是否可行,以及 (ii) 解决方案的有效性度量值。换句话说,我们有了约束条件和目标函数的数学表达式。该程序在数学上定义明确,但不能保证给出数学上的 "最优 "解决方案。上述定义中的 "直觉 "一词是指决策者(提出问题者)的实际直觉和/或分析者的数学直觉可能会指导程序的选择和阐述。我们将使用 "启发式解决方案 "来表示通过启发式方法获得的解决方案。最后,有时我们会使用 "启发式 "一词作为名词来代替 “启发式方法或程序”。

诚然,在假设我们对现实世界的问题有一个适当的数学表述时,我们可以说我们忽略了运筹学研究中最困难的方面,即数学模型本身的开发。在这方面,怀特[66]对运筹学研究中所谓的次要决策进行了有趣的讨论,例如,要考虑哪些目标、包括哪些约束条件以及测试哪些替代方案?然而,我们必须认识到,特别是当我们处理更复杂的决策问题时,现实的表述很可能导致数学问题很难甚至不可能精确求解(这在很大程度上是由于许多实际问题的组合性质造成的)。因此,我们认为,对于决策分析师来说,定义明确的数学问题的近似解法程序这一课题越来越重要。

有关启发式方法的文献浩如烟海。不过,我们要特别提到 Klein [25]、MiJller–Merbach [36-38]、Newell [41]、Streim [55] 和 Weinberg mad Zehnder [61] 的全面研究。这些研究大多试图对现有的启发式方法进行系统化和分类。此外,Streim [55] 还列出了大量参考文献。

2. Why use a. heuristic method?

使用启发式解法可能有几个原因。这些原因包括:

(a) 数学问题的性质决定了其分析(封闭形式)或迭代求解程序是未知的。

(b) 虽然可能存在精确的分析或迭代求解程序,但其计算成本可能过高,或其数据要求可能不现实。枚举法尤其如此,从理论上讲,枚举法通常适用于找不到分析和迭代程序的情况。Ronald Graham[16]就此指出:

“关于 NP-完备性的发现改变了调度问题的研究方向。早期的努力是为了找到调度问题的最优解或精确解,但现在大部分注意力都转向了更容易确定近似解的方向,即找到能保证给出接近最优结果的高效方法”。

© 启发式方法在设计上可能更容易为决策者所理解,因此明显增加了实施的机会。例如,在某些存货控制问题中,虽然可以得到数学上的最优解,但管理者更倾向于实施比最优解更简单的特定形式的解。用Woolsey和Swanson 的话说[68,第 169 页]:“人们宁愿忍受一个他们无法解决的问题,也不愿接受一个他们无法理解的解决方案”。

(d) 对于可以优化求解的明确问题,启发式方法可用于学习目的,例如,对哪些变 量是重要的形成直觉(这与运筹学中使用模拟方法的一个主要原因密切相 似)。(这与运筹学中使用模拟方法的主要原因之一非常相似)。

(e) 启发式方法可作为保证找到最优解的迭代程序的一部分。有两种不同的可能性:

  • i. 容易获得初始可行解,例如,用所谓的西北角规则(Northwest Corner Rule)(见 Wagner [60])获得运输问题的初始解。该规则通常不会给出特别好的解,但这在本例中并不重要,因为随后的计算机优化程序可以从任何初始可行解中快速找到最优解。

  • ii. 在精确求解程序的中间步骤做出决定,例如,在单纯形法中选择变量输入基数的规则是启发式的,因为它不一定能使达到最优解所需的步骤数最小化。

(f) 在隐式枚举解决问题的方法中,一个好的起始解可以给出一个极大减少计算量的约束。启发式方法可以用来给出这种 "好 "的起始解。

有了所有这些使用启发式方法的可能原因,读者可能会开始思考 “为什么会有人费尽心机去获得问题的最优解”。我们并不主张在适当的情况下放弃使用优化方法(包括实施方面的考虑)。此外,使用启发式方法并不是一条简单的出路。正如我们将看到的那样,正确地开发和评估启发式程序并不简单。

3. Measuring the quality of a heuristic

我们对启发式方法的定义包括 “通过…获得合理的解来解决(数学上定义明确的)问题”。在本节中,我们将解释’合理’一词的含义。(Wheeling[64,第 372 页]很早就讨论过这个问题)。

我们认为,一个好的启发式应该具备以下四个特性:

(1) 求解所需的实际计算量。

(2) 解决方案的平均值应接近最优值,也就是说,我们希望平均值表现良好。

(3) 出现极差解(即远离最优解)的几率应该很低。

(4) 启发式方法应尽可能简单,便于用户理解,最好能用直观的语言加以解释,特别是在手动使用的情况下。在这方面,精心准备的文档应有所帮助。

如果启发式方法涉及重复尝试解法,只保留最佳解法,那么在性质 2 和 3 中,我们指的只是这个 "最佳 "解法(而不是从中选出的所有解法)。

决定属性 2 和属性 3 相对重要性的一个重要因素是采用启发式的问题的求解次数。随着求解次数的增加,人们会认为属性 2 相对于属性 3 的权重更大。

属性 4 比其他三个属性更难量化,在文献中大多被忽视,但它很可能是四个理想特性中最重要的一个。Peterson 和 Silver [45] 提供了一个例子,说明这一理念在开发库存管理和生产规划决策系统中的应用。

在此,我们主要从特性 2 和 3 的角度来衡量质量。我们将讨论几种不同的测量方法,但在讨论之前,以下几点值得强调。与其精确地确定某一启发式的质量度量值,不如找出该启发式在什么条件下(即不可控变量的值)表现特别差,因而不应该使用。举例来说,在向随机到达的客户提供服务的问题情境中,用于确定最佳服务通道数量的启发式,只要通道的利用率不是太高,就可能表现得非常好。第二个例子是 Blackburn 和 Millen [3],他们为动态批量大小问题(面对确定但随时间变化的需求模式,对单一物品的补货时间和规模进行选择)提供了从几种启发式求解方法中进行选择的指导。

3.1. Comparison with the optimum solution

我们希望能够将启发式解决方案与大量问题实例中的最佳解决方案进行比较。通常这是不可能的,因为正如前面所讨论的,首先使用启发式程序的一个主要原因是,从计算的角度来看,获得最优解可能是不可能的或令人望而却步的。我们可能不得不借助模拟来估算最佳解决方案的值(在目标函数只能用可控和不可控变量间接表示的情况下)。此外,可能有必要集中精力解决小规模问题(其规模至少小于某些感兴趣的实例),以将计算工作量降至合理水平。

即使找到了最优解,还存在一个问题,即使用什么样的问题实例进行测试,也就是给不可控变量分配一组什么样的值。这显然是一个实验设计的问题,这方面的文献很多(参见文献[7,18 和 35])。通常情况下,不可控因素太多,无法进行完整的因子实验设计。洞察力(部分来自对相关理论的理解)以及对初步实验结果的调查可以提示哪些变量可能是重要的。通常,维度分析(如 Naddor [40])可以减少需要考虑的不同参数的数量。

在理想情况下,最好能确定与使用启发式解法而非最优解法相关的成本惩罚大小的概率分布。要做到这一点,首先必须确定不可控变量的适当概率分布。从理论上讲,我们可以开发出所需的分布。然而,一些研究人员的初步研究表明,即使是在不可控变量独立这一值得商榷的简化假设下,分析也会变得极其复杂。因此,从实用的角度来看,概率分析的主攻方向似乎是根据不可控变量的指定概率分布,即所需概率分布的数值确定,通过经验生成不可控变量的值,从而绘制成本惩罚直方图。条件分布也很重要,例如,特定参数取特定值时的误差分布。这种条件分布有助于决定在什么情况下使用所考虑的启发式更有吸引力。

3.2. Baoblem relaxation-bounding

当无法找到最优解时(通常是在使用启发式的情况下),另一种方法是对问题进行松弛,以便可以评估出至少与最优解一样好的解,从而为最优解的值提供一个约束,即最优解的值不能优于约束值。松弛解本身并不需要得到,我们需要的只是它的值,或者更少,它的值的界限。然后,我们检查启发式解与这个界限有多接近。这实际上只是一个单向测试。我们知道,最优解的值必须介于启发式解的值和边界值之间。因此,如果启发式解法的 vq’ue 非常接近边界,那么它也一定非常接近最优解的值。另一方面,启发式求解值与约束值之间的巨大差距可能是由于启发式太差、约束太松或两者兼而有之造成的。请注意,启发式方法本身给出的约束条件正好相反,即最优解的值不能比启发式解的值差。

放松问题的最常见方法是忽略一个或多个约束条件。下面介绍两个例子:

(i) 在整数线性规划问题中,忽略整数约束条件,求解简单得多的连续变量问题,就可以得到约束。(Peterson 和 Silver [45, 第 536-5371 页提供了协调控制库存问题求解约束的 8 个相关例子)。

(ii) 在 "旅行推销员问题 "中,求解的困难是由每座城市必须在一次旅行中准确地游览一次这一约束条件造成的。去掉单次游览的约束条件,就可以直接得到原问题的约束条件。

随着问题的放宽,我们仍然必须面对使用哪些示例进行测试的问题。

3.3. Extreme valuestatisticalmethods

通常使用的启发式方法包括生成许多解决方案并从中选出最佳方案。在这种情况下,生成的每个解的值都可视为一个随机变量。极值统计理论可用于估算当前问题的最优解的值。有关这一主题的有趣参考文献有 Clough [6]、Dannenbring [lo] 和 Golden [15]。

3.4. Other comparisons

为了便于讨论,我们假定正在处理的问题是我们希望最大化某个目标函数。因此,在第 3.2 节中得到的任何界限都是上限。如果不容易得到这样的边界或怀疑边界不佳,我们可以将启发式解法与其他类型的解法进行比较,后者会产生最优解值的下限。可能的方法包括

(i) 与枚举法比较,枚举法需要的计算量要大得多,计算量很大,但很可能找不到最优解。例如,分支与边界程序(关于此类程序的描述,请参见瓦格纳[60])在产生了一定数量的分支后就停止了。这种 "截断式 "分支与边界程序也能为我们提供最优解值的上限(在最大化问题中)。

(ii) 与决策者的绩效进行比较,可以在较早的时间段内进行,也可以直接进行平行比 较–这类比较有令人信服的理由。与现有程序相比,发现重大改进可能比任何最优或接近最优的证明对鼓励实施更为重要。Bowman 的文章 [43.

(iii) 与其他启发式程序比较 如果已经提出和/或使用了其他启发式求解方法,当然可以将 "我们的 "启发式与 其他启发式进行比较。危险在于,其他启发式解法可能特别糟糕,因此,即使 "我们的 "启发式解法的性能被评为最佳,它仍可能是一种糟糕的解法。

(iv) 与 "随机 "决策规则比较 一种极端的启发式是完全随机决策。举例来说,一些研究人员(如 Conway [8])在研究工作中心作业排序的启发式时,使用了在工作中心等待的作业中随机选择下一个作业的决策规则作为基准比较。一般来说,"随机 "规则会对最优解的值产生一个相当差的约束,因此可以用来快速否定一个差的启发式方法。

3.5. Worst case behaviour

最近,关于大规模、确定性、组合型问题的许多研究的重点是确定在使用特定启发式求解程序时可能出现的最差误差(见 [10,11 ])。知道启发式的成本惩罚永远不会比某个特定值更差,这一点令人欣慰。然而,这一信息几乎肯定不足以在相互竞争的启发式程序中做出选择。如前所述,决策者可能更关心平均性能和/或成本惩罚大于特定值的概率。某一启发式可能会因不可控制变量的罕见值(本质上是病态值)而导致最差易错行为,但同一启发式在几乎所有其他条件下都可能表现出色。Quicksort 就是一个例子,它是运筹学相关软件中常用的排序程序(见 Nievergelt 等人[43])。另一方面,最差易用性分析的另一个好处是,它可以指出启发式在哪些条件下表现不佳,从而提示何时不应使用该方法。

4. Types of heuristic methods

现在我们对启发式方法进行分类。需要强调的是,这些分类并不是相互排斥的。事实上,在解决某一类问题时,往往可以混合使用两种或更多的启发式方法。此外,我们也不应忽视并行使用两种不同的启发式方法来解决同一问题的可能性,选择两种解决方案中较好的一种,即不一定要依赖单一方法的良好性能。最后,在可能的情况下,启发式方法的开发者最好首先对所考虑的特定问题的理论研究有一个正确的认识;这些理论往往会提出一些具体的思路,这些思路可能对开发有效的启发式程序很有帮助。

顺便提一下,由于复杂问题的启发式解法往往是从较简单问题的精确解法发展而来的(参见 de Werra [63]),这就是向学生传授简单学术问题精确解法的一个很好的理由,也许是最重要的理由。

4.1. Decomposition methods

在这里,所考虑的问题被分解成更小的部分,分别解决,但至少粗略地考虑到各部分之间可能存在的相互作用。分解法在传统的将问题划分为组织的各个职能领域的过程中十分普遍。第二种常见的分解方式是将系统设计与系统运行分开。通常在设计阶段忽略运行效果,然后根据已选定的设计制定运行规则。Hax 和 Meal[17]的分层规划工作是分解的另一个很好的例子,在他们的工作中,中程总体规划决策与短程调度问题分离开来,但两个问题领域又有适当的耦合。这种分解的一个重要优点是,它符合大多数组织的实际运作方式。

4.2. Inductive methods

这里的思路是从同一问题的较小(或较简单)版本中归纳出来的。例如,在一个涉及多个设施(如工厂和仓库)的选址以满足客户需求的问题中,对于只有几个设施的情况,求解可能相对容易。利用这种较简单情况下的解的特性,可以有效地开发出一种启发式方法,用于更广泛的几种设施的情况(见 Bilde 和 Vidal [2])。此外,有时某个参数变得非常大的情况特别容易分析,这也为分析参数的中间值(不大也不小)提供了启示。例如,在更新过程的一般领域,大量过程的总体效应具有泊松行为。(西尔弗[54]在开发概率需求下库存物品协调控制程序时利用了这一特性)。

4.3. Feature extraction for reduction) methods

这里采用的一般方法是,首先获取所考虑的几种数值情况的最优解。提取这些解的共同特征,并假定这些特征在一般情况下成立。例如,某个变量的值总是为 0,或者某些控制变量具有高度相关性,或者某个约束条件从未出现过。更极端的还原法是(通过分析问题的简单版本或仅仅凭 “直觉”)假定好的解决方案必须满足某些属性,而这些属性大大简化了分析。然后,一旦求得解,就可以验证是否满足这些属性(见 White [65])。这种方法的一个很好的例子是,假设在任何合理的库存控制策略中,缺货的频率都会很低。另一个例子是 Hitchings 和 Cottam [19] 在设施布局问题中提出的。他们认识到,如果明智地固定某些设施的位置,或限制某些设施对彼此相邻,那么就可以降低问题的维度,从而更快地评估每个潜在的解决方案。

4.4. Methods involving model manipulation

这里的意思是以某种方式改变模型的性质,以便于求解,然后用修正模型的解来代表原始数学问题的解。从更普遍的意义上说,这就是使用数学模型来解决现实世界中的问题,然后将模型的解解释为原始问题的解的过程。模型操作的例子包括

  • i. 目标函数的修正,如非线性函数的线性化。

  • ii. 放宽某些限制,其中有些限制在任何情况下都可能是灵活的(例如,预算限制 不一定是刚性的)。

  • iii. 改变概率分布的性质,例如,假设正态分布而不是更复杂的分布。

  • iv. 变量的聚合,其目的是减少决策变量的数量(然而,聚合变量的值最终必须在原 有的分解变量之间进行分配)。Geoffr,ton [14]的研究是关于聚合的成本影响的一个有趣参考。

4.5. Constructive methods

这里介绍的方法与局部改进方法形成对比,后者将在下一节讨论。构造方法的基本思想是建立(即构造)一个单一的可行解,通常采用确定性的顺序方式。解决旅行推销员问题的所谓 "最近邻规则 "就是一个例子(见 Rosenkrantz 等人 [48])。要建立一条只经过每个城市一次的线路,需要从某个城市(比如 i)开始,首先去离它最近的城市(称作i)。这就是所谓 "贪婪 "算法的一个例子,贪婪的意思是在每一步中都尽力而为。对于某些类别的问题(旅行推销员问题并非如此),贪婪启发式会带来非常好的解决方案(Comuejols 等人 [9]、Jenkyns [21 ] 和 Lawler [27])。然而,最近邻规则通常不能很好地解决旅行售货员问题;它的缺陷在于只考虑下一个节点的近视观点。这与使用所谓 "前瞻 "规则的启发式方法形成了鲜明对比(见 MiiUer-Merbach [37]);MiiUer-Merbach [36, 第 3.3 节] 给出了旅行推销员问题的一个例子,其中的前瞻规则是基于约束计算的(见本文第 3.2 节)。

另一个建设性方法的例子是,在制造工厂的多个潜在地点(m)设置多个工作中心(n),以尽可能降低材料处理成本。一种可能的建设性启发式方法(见 Lee 和 Moore [28])是,首先在特定地点(如 ]1)定位一个特定的中心(称作 il)。现在,我们选择第二个中心 i2,并将其置于另一个位置 ]2,然后是第三个中心 i3,置于 ]3,等等。在找到最后一个剩余的中心之前,没有完整的解。要生成新的解,整个过程要重复进行。

另一种构造方法涉及的问题有许多决策变量,但总体约束条件相对较少。举例来说,在同一台产能受限的机器上生产的几种产品,如何选择补货的时间和规模就是一个问题。一种建设性的方法(见 van Nunen 和 Wessels [44])是先分别选择每个单项的批量大小,忽略产能限制(这是一组相对容易解决的问题)。然后,如果隐含的总生产小时数超过了任何一个产能,则对单个项目的解决方案进行调整,直到获得可行的解决方案。

4.6. Local improvement methods

与上一节的建构过程不同,这里我们从可行解开始,对 R 进行迭代改进。工作中心位置问题可以用这种方法求解(参见 Hitchings 和 Cottam [19])。初始可行解可能是制造工厂的现有布局,也可能是一个构造过程的解。局部改进的一种方法是尝试切换成对的中心;当发现有吸引力的切换时,就进行切换,然后继续这个过程,直到任何一次切换都无法实现进一步的改进。一个相关的问题是,当剩余的可能开关数量极大时,是否要继续搜索;换句话说,什么是合适的停止规则?同样,如果使用建构法进行重复试验,我们也希望有一个合理的规则来确定何时停止生成解。伦道夫等人[47]研究了使用贝叶斯(主观概率)方法来构建此类规则。即使使用精确的枚举法(例如分支与边界法),我们也经常会面临同样的停止问题,即进一步的大量计算可能只会导致解的微小改进。启发式推理很可能有助于停止规则的制定。

关于局部改进方法和邻域搜索的更多详情,请参阅 Miiller-Merbach [38] 和 Wheeling [64]。Lin 和 Kemighan [30] 在解决旅行推销员问题时使用了局部改进方法。

5. Interactive role of humans during the execution of a heuristic method

在执行启发式程序的过程中,设计合理的交互式系统可以带来以下优势:

  • i. 能够相互指导寻找好的解决方案,特别是利用决策者的经验(见 Segal 和 WeJnberger [52] 和 Tobin [56])。在对旧方案进行评估时,人类有能力提出新的方案,而详细计算的繁琐工作则留给计算机来完成。交互式程序经常用于工程设计,例如 AIDES(自适应初始设计合成器)程序(Rudd 等人[50])。

  • ii. 分析人员了解系统的能力,特别是数学本身的行为方式,以便根据观察到的 行为方式修改模型或启发式程序。

  • iii. 方便决策者了解系统和/或模型,并获得使用模型的信心。Little [31] 在谈到营销领域的决策时强调了这一点。

在本节的最后,我们将提出三点意见,它们实际上与获得精确解的方法以及启发式程序相关:

  • i. 在许多重要问题中,很难事先从决策者那里获得有关目标和限制条件的明确说明。在互动模式下,可以通过计算机提问的方式,在制定解决方案的过程中,根据需要获取这些信息。这正是 Roy 和 Bertier [49] 、Zionts 和 Wallenius [69] 以及 Little [31] 等人在多目标决策问题上所做工作的精神所在(另见 Keeney 和 gaiffa [241.)

  • ii. 交互式系统是否有效的一个重要因素很可能是能否以图形方式描述解 决方案,例如在车辆路由系统中显示地图(Krolak 等人[26])。

  • iii. 随着微型计算机的日益普及,交互式方法的使用将大幅增加。

6. Factors that may be important in the choice or testing of a heuristic method

在本节中,我们试图找出一些在选择特定启发式方法或对其进行评估时可能很重要的因素。这些因素并不是独立的,尤其是前三个因素肯定是相互关联的。一个重要的研究领域是为设计和测试启发式方法制定更明确的指导方针。

(a) 战略(系统设计)与战术(系统运行)问题–战略决策(如工厂设施的资本投 资)是一次性的重大决策,需要进行相当细致的分析,而战术决策(如质量控 制、生产调度等)则是次要的、重复性的决策。此外,在战术决策中,还有机会进行调整,以弥补先前决策的失误。

(b) 决策的频率–是一次性决策问题还是重复决策问题?如前所述,对于重复性决策,平均绩效好的标准更有意义。

© 允许的计算工作量 这个因素显然与决策的重要性和频率有关。一般来说,启发式方法的选择取决于允许的求解时间和/或资金预算。

(d) 决策者的分析能力 如前所述,启发式方法最好能为决策者所理解。因此,决策者对分析推理的理解能力应影响启发式方法的选择,尤其是在手动使用启发式方法的情况下。

(e) 决策(可控)变量的数量 此类变量的数量首先影响对启发式的需求,并应影响方法的选择。

(f) 不可控变量的数量–这一因素对启发式方法的测试尤为重要。不可控变量的数量越多,就越不可能进行概率分析。

(g) 问题的规模–以旅行推销员问题为例。一种启发式方法可能最适合 30 个城市的情况,而另一种启发式方法可能更适合 100 个城市的情况。

(h) 离散变量与连续变量–关于启发式方法的一般文献大多与涉及整数变量的组合 问题有关。当变量是连续变量时,也许不同的方法更合适。

(i) 确定性变量与概率变量 大多数文献都涉及大规模确定性模型。

同样,对于通常只涉及数量有限的变量的概率问题,设计出截然不同的启发式程序或许也是有意义的。霍华德[20]和纳多[39]等人研究了在处理特定决策问题时,仅使用概率分布的前几个时刻而不是整个分布的效果。

7. Summary

在本文中,我们讨论了解决定义明确的数学问题的启发式方法。其中包括启发式方法的性能测量、不同类型的启发式程序,以及在选择和测试用于任何特定问题的启发式方法时可能涉及的一系列因素。希望本文能达到两个目的,即:(i) 向决策分析人员介绍启发式方法的基本概念;(ii) 激发分析人员对启发式程序的一些重要方面进行研究。与后一点相关,一个具有挑战性的研究课题是,在给定一个特定问题和最大允许计算时间(或复杂度)的情况下,找到一种能在这些条件下给出最佳解决方案的求解方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值