自动化算法配置与参数调优
1 引言
在当今的计算环境中,许多应用领域面临着复杂且计算难度高的问题。这些问题包括但不限于调度、时间表编制、资源分配、生产规划与优化、计算机辅助设计以及软件验证。解决这些问题的能力不仅对实际应用至关重要,而且往往具有经济意义。然而,许多此类问题被归类为NP难问题,这意味着在最坏情况下无法在多项式时间内找到解决方案(除非NP=P)。尽管如此,通过精心设计的启发式技术,通常可以有效地解决这些“不可处理”的问题。
启发式技术的有效性通常难以通过理论复杂度分析得到证明,因此需要基于精心设计的计算实验进行实证评估。现代求解器(如SAT求解器)常常使用多种启发式机制,这些机制以复杂且非直观的方式交互作用。这些机制的行为通常由参数控制,而参数的设置对求解器的性能有着显著影响。
2 算法配置问题
在算法配置中,我们希望找到一种参数配置,使得目标算法在给定实例集以外的问题实例上表现良好。为此,选择实例集时需谨慎,以确保其代表优化后的目标算法配置将要应用的实例类型。当实例集较小时,但包含非常不同的实例类型时,可能会出现问题。为了避免配置的目标算法在配置过程外的实例上表现不佳,建议在配置集以外的实例上进行测试。这可以通过仅将可用实例集的一部分包含在配置集中,或者通过交叉验证来实现。
2.1 性能评估
建议调查目标算法在实例集上的性能变化,因为根据用于配置的性能指标以及实例之间的差异,优化后的配置可能代表了一些实例上的高性能和另一些实例上的低性能的权衡。特别是,当使用鲁棒性统计量(如中位运行时间)作为性能指标时,可能会导致在给定实例集的大部分部分上性能不佳。为了有效处理目标算法运行中未产生解决方案的情况(特别