论文部分内容阅读
各种经典、元启发式约束求解算法在求解NP难题(NP-hard)时的性能通常取决于其参数配置。事实上,为一个算法配置一个合适的参数一直以来都被认为是一个重要的任务,这就给每个算法设计者和用户留下了一个问题:如何正确配置算法参数?在过去,人们一直使用手动方式进行参数配置,通过对各种算法的研究发现,手动处理参数事实上是个很复杂的问题,需要不断在运行过程中改变参数,开销大量的时间去测试程序以使之达到理想效果。这无疑是件很麻烦的事情,既浪费人力、物力、财力,也给程序员的编程带来了困扰。而且通过经验法或者试错法来进行优化,不仅耗时耗力还很容易出错,有时,它通常还会导致不同算法的不均匀优化。此外,通过试错法优化过度依赖直觉和算法开发者的经验,而该方法难以和严格的数学证明对应起来,因此手动参数配置不具有推广性。近些年,参数优化算法逐渐成为算法发展过程的重要组成部分。许多高性能算法都具有众多参数,参数配置对控制算法行为有重要影响,特别对于难解优化问题的求解算法尤是如此。寻找启发式算法性能优化的参数配置通常需要耗费相当大的开销。在多数情况下,参数配置都是以繁琐复杂的手工操作进行,对于配置人员的素质要求极高,因此自动化参数配置研究具有重要的实用意义。不仅如此,算法自动配置还有如下优点,它能够减少开发时间和人为的主动干预;能够为算法设计提供更加有力的技术支持;能够利用计算能力探索算法设计空间;能够为更高层次的任务释放人类的创造力;能够为算法设计者在设计程序时提供帮助。配置复杂算法参数是一个高度劳动密集型的工作,消耗整体开发时间的很大一部分。使用算法自动配置方法可以显著节省时间,甚至得到潜在的更好结果。在比较启发式算法性能时的核心问题是:如何使算法在本质上更胜一筹,该算法的成功原因是开发人员更成功地优化了其参数。算法的自动配置方法可以减轻不公平比较这个问题,从而促进更有意义的比较研究。复杂启发式算法求解困难实例的能力往往取决于参数的合适配置。而用户往往很少了解有关于算法参数配置对其性能的影响,因此简单地使用默认配置。即使算法已经经过标准的基准组精心优化,默认配置可能不是遇到的特定问题的实例的最佳配置,算法也就不能呈现最佳性能。算法的自动配置方法可以以一种根本性的便捷的方式改善算法性能。本文首先介绍了算法配置,算法配置问题的定义和相关概念,接下来又介绍了解决算法配置问题的一些方法,主要进行了两个方面的研究:(1)深入研究了目前流行的并有重要影响的算法自动配置参数的软件irace。使用irace软件为acotsp程序自动的配置参数,通过对参数在不同的配置下得到的结果进行细致的分析,相互比较,使得我们对算法自动配置有了更深一步的理解。(2)基于流行的ParamlLS算法配置框架,进行了约束求解器级别的算法自动配置的尝试,实验结果表明,约束求解器级别的算法自动配置对于约束求解效率提升明显。当然,约束求解算法以及约束求解器的自动配置还处于一个比较初级的水平,未来希望能对于约束求解算法进行更为深入的研究,从算法自动配置的角度为研究高效约束求解算法提供一种可能。