【论文阅读】(2016)Learning to Branch in Mixed Integer Programming

文章目录

  • 一、摘要
  • 二、介绍
  • 三、我们的框架概述
    • 3.1 数据采集


论文来源:(2016)Learning to Branch in Mixed Integer Programming
作者:Elias B. Khalil 等人


一、摘要

  • 混合整数规划 (MIP) 中的分支策略设计以参数调整和离线实验的周期为指导,使用平均性能在极其异构的测试台上进行。
  • 一旦设计出来,这些策略(及其参数设置)基本上与输入无关。
  • 为了解决这些问题,我们提出了一个用于 MIP 中变量分支的机器学习 (ML) 框架。
  • 我们的方法观察由强分支 (SB) 做出的决策,强分支是一种耗时的策略,它生成小型搜索树,收集表征树每个节点的候选分支变量的特征。
  • 基于收集到的数据,我们通过解决 ML 中常见的排序学习问题,学习了一个易于评估的模拟 SB 策略的代理函数。
  • 然后将学习到的排序函数用于分支。学习是特定于实例的,并且在执行分支定界搜索以解决实例时即时执行。
  • 对基准实例的实验表明,我们的方法产生的搜索树比现有的启发式方法小得多,并且与最先进的商业求解器具有竞争力。

二、介绍

最近,离散优化已成功用于改进机器学习 (ML) 方法(Roth 和 Yih 2005;Bertsimas、King 和 Mazumder 2015)。我们将专注于这种富有成果的交叉施肥的相反方向。我们探索利用 ML 方法来提高混合整数线性规划 (MIP) 的分支定界搜索性能的方法。 ML 技术已成功应用于许多组合搜索问题。

例如,UCT 是一种广泛用于蒙特卡洛树搜索的在线学习算法(Kocsis 和 Szepesvári 2006),神经网络用于在单智能体搜索中结合启发式算法(Samadi、Felner 和 Schaeffer 2008),而 EM 算法是用于解决约束满足问题 (Hsu et al 2007)。

在 MIP 的背景下,最近的一些工作提出了 ML 技术,用于为 MIP 求解器构建良好参数配置的组合,并为给定实例选择最佳配置(Hutter 等人 2009 年;Kadioglu 等人;Xu 等人 2011 年)。 Alvarez 等人提出了一种 ML 方法,用于 MIP 的并行分支定界负载平衡(2015)。

分支的变量选择被认为是现代 MIP 求解器的主要组成部分(Linderoth 和 Savelsbergh 1999;Achterberg 和 Wunderling 2013)。作为解决 MIP 问题的分支定界算法的一部分(Nemhauser 和 Wolsey 1988),变量部分赋值的搜索树中的节点必须通过选择一个未赋值的变量并将其拆分为(两个)子节点域通过添加额外的约束。

选择好的变量作为分支通常会导致解决实例所需的节点数量急剧减少。事实上,领先的商业 MIP 求解器 IBM CPLEX 的研究人员最近进行的一项广泛的计算研究表明,与现代策略相比,使用朴素的变量选择策略会使性能降低 8 倍以上(Achterberg 和 Wunderling 2013)。然而,在同一项研究中,作者指出“结果表明,自 CPLEX 8.0(2002 版)以来,在分支变量选择方面取得了一些进展,但肯定没有突破”。

传统的分支策略分为两大类: 强分支 (SB) 方法在每个节点详尽地测试变量,并选择最佳的一个以缩小最佳边界与当前最佳可行解值之间的差距。 Achterberg (2009) 表明,与最先进的“混合分支”策略相比,SB 平均可以减少 65% 的搜索树节点。

然而,随着每个节点花费更多的时间,计算时间增加了 44%。另一方面,伪成本 (PC) 分支策略被设计为使用一小部分计算量来模仿 SB,通常在节点数和解决 MIP 的总时间之间实现良好的权衡。这种基于 PC 的策略的设计主要基于人类的直觉和广泛的工程,需要大量的手动调整(初始化、统计测试、打破平局等)。虽然这种方法很重要且具有建设性,但我们偏离它并建议直接从数据中学习分支策略。

我们为变量选择策略的数据驱动、动态设计开发了一个新颖的框架。通过利用监督排名的研究,我们的目标是制定收集所有属性中最好的策略:1)使用少量搜索节点,接近 SB 的良好性能,2)保持与 PC 一样的低计算占用空间,以及 3 ) 给定实例,根据变量的属性自适应地选择变量。

在单个分支定界搜索的上下文中,在第一阶段,我们观察 SB 做出的决策,并收集:表征树的每个节点处的变量的特征,以及区分候选分支变量的标签。在第二阶段,我们通过解决 ML (Liu 2009) 中常见的排序学习问题,学习一个模仿 SB 的易于评估的代理函数,并将收集的数据用于训练。在第三阶段,学习的排序函数用于分支。

与最近用于 MIP 中节点和变量选择的机器学习方法(He、Daumé III 和 Eisner 2014;Alvarez、Louveaux 和 Wehenkel 2014)相比,我们的方法:1) 可以实时应用于实例,无需大量实例的前期离线训练阶段,以及 2) 包括解决排序问题,而不是回归或分类,后者不太适合变量选择。它的即时特性具有实例特定和无缝继续分支定界的优势,在学习和预测之间切换时不会丢失工作。排名公式对于变量选择是自然的,因为参考策略 (SB) 通过分数有效地对节点处的变量进行排名,并选择排名靠前的变量,即分数本身并不重要。

我们将使用最先进的商业 MIP 求解器 CPLEX 展示该框架的实例化。我们使用一组为节点处的每个候选变量计算的静态和动态特征,以及基于 SVM 的学习来根据 SB 分数估计好变量和坏变量的两级排名。对基准实例的实验表明,我们的方法产生的搜索树明显小于基于 PC 的启发式方法,并且在节点数量方面与 CPLEX 的默认策略具有竞争力。


三、我们的框架概述

我们现在介绍一个学习在 MIP 中分支的框架。我们的直觉是,通过观察和记录 SB 引起的排名,我们可以学习变量特征的函数,该函数将以类似的方式对它们进行排名,而不需要昂贵的 SB 计算。给定一个 MIP 实例和一些参数,我们分三个阶段进行:

  1. 数据采集​​:对于有限数量的节点θ,采用S B 作为分支策略。在每个节点,计算出的 SB 分数用于为候选变量分配标签;并提取相应的变量特征。所有信息都编译在训练数据集中。
  2. 模型学习:数据集被送入学习排名算法,该算法输出特征的权重向量,从而使训练数据集上的某些损失函数最小化。
  3. 基于 ML 的分支:不再使用 SB,学习到的权重向量用于对变量进行评分,在得分最高的那个上分支直到终止。

在通过实验确认之前,我们强调了所提出的方法如何满足三个理想的特性。

  1. 节点效率:学习的排名模型使用 SB 分数和节点特定的变量特征作为训练数据,因此有望比 PC 更接近地模仿 SB 选择,从而产生更小的搜索树。
  2. 时间效率:SB仅在第一阶段使用,通常用于几百个节点。学习(第二阶段)所需时间很小,第三阶段主要是特征计算,其设计目的是比像 SB 那样求解 LPs 便宜得多。
  3. 自适应性:学习到的排名模型是特定于实例的,因为它根据收集的数据为特征分配不同的权重。

接下来,我们将更详细地描述每个阶段。

3.1 数据采集

未完待续....


http://www.niftyadmin.cn/n/5053706.html

相关文章

Day68:49. 字母异位词分组、128. 最长连续序列

49.字母异位词分组 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。示例 1:输入: strs ["eat", "tea", "tan", "ate", &quo…

ubuntu黑屏(个人经验)

ubuntu锁定在锁屏界面 成功的方法:使用startx 1.尝试切换到其他TTY: 在Linux系统中,你可以使用Ctrl Alt F1到F7(其中一个)来切换到不同的TTY(终端)。例如,Ctrl Alt F2通常会带你到一个命令…

Leetcode刷题笔记--Hot51-60

1--环形链表II 主要思路: 快慢指针,快指针每次走两步,慢指针每次走一步; 第一次相遇时,假设慢指针共走了 f 步,则快指针走了 2f 步; 假设起点到环入口结点的长度为 a(不包括入口结点…

JavaScript位运算的妙用

位运算的妙用: 奇偶数, 色值换算,换值, 编码等 位运算的基础知识: 操作数是32位整数自动转化为整数在二进制下进行运算 一.按位与& 判断奇偶数: 奇数: num & 1 1偶数: num & 1 0 基本知识: 用法:操作数1 & 操作数2规则:有 0 则为…

redis 6.2.12集群部署

1. 下载安装包 cd /data/base wget https://download.redis.io/releases/redis-6.2.12.tar.gz tar -zxvf redis-6.2.12.tar.gz # 将redis代码移动到src目录 mv redis-6.2.12 redis-6.2.12-src # 创建新目录用户存放编译好的redis文件 mkdir redis-6.2.12 2. 编译安装 # 指定内存…

美摄美颜SDK:您的一站式美颜解决方案

在当今的数字化时代,美颜技术已经成为了社交媒体、直播、虚拟现实等众多在线平台的重要部分。不论是个人还是企业,我们都希望能够通过使用高质量的美颜SDK来提升我们的产品和服务。那么,如何找到最合适的美颜SDK呢?哪家的美颜SDK最…

【js/es6】合集

目录 随机生成字符串每十个字符换行 随机生成字符串 function generateRandomAlphaNum(len) {var rdmString "";for (; rdmString.length < len; rdmString Math.random().toString(36).substr(2));return rdmString.substr(0, len); }每十个字符换行 string.…

Unity:2D游戏设置相机orthographicSize

目录 根据设备分辨率动态设置相机 orthographicSize 根据设备分辨率动态设置相机 orthographicSize 2d游戏里面相机的Orthan.size确定的是高度&#xff0c;宽度是按照屏幕的宽高比计算出来的cameraWidthSize camera.Orthographic.size*(Screen.Width/Screen.height)我在游戏…