基于学习的方法决定在哪些分支节点上运行heuristic算法

本文探讨了如何使用机器学习模型决定在混合整数规划问题的分支节点上运行哪种启发式算法,以提高求解速度。通过训练数据收集和特征工程,建立了一个名为“神谕”的在线模型,该模型在分支节点上预测运行heuristic的有效性。实验表明,这种方法在MIPLIB2010基准测试中相比于默认设置取得了更好的性能。
摘要由CSDN通过智能技术生成

1 混合整数规划求解

混合整数规划问题(MIP)目前比较有效的算法就是branch and bound,branch and cut等。很多商业的或者非商业的MIP solver用的都是这些框架。branch and bound构建MIP的搜索数,通过搜索策略(DFS、BFS等)对分支树进行搜索,通过求解节点的linear relaxation(LP)获得节点的下界(lower bound)。如果LP解满足整数约束(IP),则可认为找到了原问题的一个可行解(feasible solution),branch and bound记录在搜索过程中找到的可行解,并维护一个最优可行解作为全局的上界。当节点的下界比上界还差时,则减掉该支路。最终遍历所有支路,获得最优解。

2 Primal Heuristic

通过branch and bound,branch and cut等求解MIP时,通常需要花费大量的计算时间,因为很多问题的LP模型获得的lower bound非常差。在分支节点上运行heuristic算法对可行解进行搜索,可大大提高搜索的速度。比如在前期通过heuristic找到一个较好的上界,可以使得branch and bound在搜索的过程中减掉很多没用的支路,从而加快优化的速度。

在现在常用的MIP solver中已经集成了很多成熟的heuristic算法,例如在IBM 的CPLEX中对heuristic有这样一段说明:

何为探试?

定义探试,并描述 CPLEX 在 MIP 优化中应用探试的条件。

在 CPLEX 中,探试是一个过程,用于尝试快速生成良好或近似的问题解,但缺少理论保证。 在求解 MIP 的上下文中,探试是可以生成一个或多个解的方法,它可满足所有约束和所有整数性条件,但没有关于是否已找到最佳可能解的指示。

这些探试解集成到分支裁剪中,在提供最优性证明方面可实现与分支所生成的任何解相同的优势,在许多情况下,它们可以加快最终最优性证明的速度,或者可以提供次最优但高质量的解,而所需的时间比单单进行分支更短。 使用缺省参数设置时,CPLEX 将在探试可能有益时自动调用探试。

CPLEX 提供了探试系列,用于在分支裁剪过程中寻找节点(包括根节点)处的整数解。 下列主题对这些探试系列进行阐述。

其中一个比较关键的问题就是:在分支树的哪些节点运行heuristic有可能获得更好的结果?这样就引出了这篇文章的motivation:通过对模型的训练,将机器学习的模型集成到MIP的求解过程中,在分支节点中模型决定是否运行heuristic。模型必须是online的,即训练好以后,在进行预测时只知道当前节点以及分支树的信息,整颗分支树或者剩下节点的信息。

在这篇文章中,作者给这个模型取了一个很有深意的名字,叫oracle,中文翻译过来叫“神谕”,简直是绵羊放山羊屁–既洋气又骚气……

3 数据特征

机器学习是通过输入的数据来给出预测的结果,而应当输入数据的特征应当良好地反映问题当前的状态,这样才能给出准确的结果。这篇论文中使用了49个数据特征:

  • Global features通过一些"gap"描述了当前搜索的状态;
  • Node LP features使用了节点N的LP解来指示一些节点的特征(括号中的x2表示该特征包含了更细一级的两个特征,下同);
  • Scoring Features for Fractional Variables受启发于大多数diving heuristics中使用的scoring functions,该函数主要用于选取下一个分支的变量。

4 训练数据收集

机器学习的一大关键(亦是难点)就是训练数据的收集。给定一个MIP算例集合, I t r a i n \mathcal{I}_{train} Itrain,一个用于搜索过程中的启发式算法 H H H,那么关于 H H H的数据集可以从每一个算例 I ∈ I t

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值