RL+CO文献阅读 :A General Large Neighborhood Search Framework for Solving Integer Linear Programs

[Reference]

J. Song, R. Lanka, Y. Yue, and B. Dilkina, ‘A General Large Neighborhood Search Framework for Solving Integer Linear Programs’. arXiv, Dec. 22, 2020. Accessed: Sep. 14, 2022. [Online]. Available: http://arxiv.org/abs/2004.00422

Abstract:

研究了针对大规模组合优化问题的策略。针对于整数线性规划 (integer linear programs, ILP)问题,使用大型邻里搜索框架( large neighborhood search,LNS),表明使用 imitation and reinforcement learning techniques,可以学到很好的selector,从而提升求解结果。

Introduction:

实际中的组合优化算法通常是 NP-complete or NP-hard. 传统解决此类问题的算法的设计主要是手动完成的,这需要仔细理解特定优化问题类别中的基础结构。由于需要获得实质性的领域知识,这些传统方法通常是没有吸引力的,因而人们经常希望采用更加自动化的方法。

近些年中出现的 “learn to search” 旨在通过用参数化的可学习版本代替硬编码的启发式组件来增强现有算法模板。

Contribution:

  1. 提出了一个通用的LNS框架来解决大规模ILP。框架可以轻松地集成现有的求解器作为子例程,并且不依赖于合并域知识以实现强大的性能。
  2. 表明LNS框架内使用随机决策过程,在许多问题实例上都显着优于Gurobi;
  3. 开发了一种基于学习的方法,该方法可以预测整数变量的分区,然后在LNS框架内充当学习的决策程序;
  4. LNS框架可以有效利用领先的最先进的求解器来可靠地实现实质性加速。

Related Work on Learning to Optimize

学习优化”方法分为三类

(1)学习搜索启发式方法,例如分支机构;

(2)调整现有算法的超参数;

(3)学习确定现有求解器可以利用的关键子结构。

Learning to Search:在学习搜索时,通常在搜索启发式的框架内操作,并从训练数据中训练出一个局部决策策略。对于整数规划来说,最受欢迎的是 Branch-and-bound 框架。其他的有A* search , direct forward search , and sampling-based planning .

Algorithm Configuration:现有的求解器具有许多可自定义的超参数,其参数 值会强烈影响求解器行为。算法配置旨在以问题为基础优化这些参数,以加快求解器的速度。其缺陷是:依赖于基础求解器能够在合理的时间内解决问题实例,这对于NP问题实例可能是不可能的。

Learning to Identify Substructures:学习预测优化问题的关键子结构。

A General Large Neighborhood Search Framework for ILPs

 LNS是一种meta-approach,可以概括邻里搜索优化,并通过本地搜索改善现有解决方案。

对LNS的理解:

(31条消息) 智能优化算法——篇2(邻域搜索大家族)_云湖在成长的博客-CSDN博客_邻域搜索算法

Decomposition-based Large Neighborhood Search for Integer Programs

对于一个整数规划P, 其整数变量为集合 X,定义 X为不相交的联合,即X=X_1\cup X_2\cup...\cup X_k. 假定我们已经得到可行解S_X,将整数变量的每个子集X_i视为搜索本地邻域, 将S_X中除了X_i的整数变量固定,即(固定在X \setminus X_i),并优化X_i中的变量(称为fix_and_optimize)。

Decomposition Decision Procedures:不同的分解定义了一系列不同的LNS问题,最简单的实现是使用随机分解方法。

 Learning a Decomposition

过程中使用了imitation learning and reinforcement learning来学习LNS框架生成分解的政策。

对于组合优化问题P,其变量为一组整数X, 

state:s表示变量X的一组分配向量。

action:a是X的一个decomposition

状态转移:通过action优化部分变量之后,得到一组新的解,组成状态s'

reward: r(s,a)=\jmath (s)-\jmath (s') ,其中\jmath (s)表示当solution为s时目标函数P的值。

Imitation Learning

在模仿学习阶段,来自expert的展示可以作为学习信号。然而,我们没有expert来产生很好的分解,因此,我们使用随机采样并选取那些表现好大的作为demonstration。

一旦产生出一组好的decomposition,将它应用在两个imitation算法中。

第一个是行为克隆,即behavior cloning。通过将一系列轨迹D=(s_0,a_0, s_1,a_1,...,s_{T-1},a_{t-1})转化为一系列的 state-action pair,(s_0,a_0), (s_1,a_1),...,(s_{T-1},a_{t-1}), 接下来将 policy learning 看作

supervised learning problem.

行为克隆遭受级联错误,使用前向训练算法[43]来纠正每个步骤中犯的错误。

 

Reinforcement Learning

强化学习的目标是找到策略\pi来最大化 ,使用梯度下降来更新参数\theta,文中没有详细讲。

 

Featurization of an Optimization Problem

  1. Combinatorial Optimization over Graphs.图上的组合优化问题,包括最小顶点盖,最大切割和旅行推销员问题。图的(加权)邻接矩阵包含所有信息来定义优化问题,用作学习模型的功能输入。
  2. General Integer Linear Programs在整数变量和约束之间构建以下发生率矩阵A,对于每个整数变量x_i一个约束c_j,
  3. Incorporating Current Solution. 无论使用哪种featurization,特征矩阵的行数与整数变量的行数相同,因此可以简单地将解决方案中的变量值作为一个额外的特征来附加。

 

因子分解遇见邻域:一个多方面的协同过滤方法是一种结合了因子分解和邻域方法的协同过滤算法。在传统的协同过滤算法中,主要有两种方法:基于邻域的方法和基于模型的方法。基于邻域的方法主要是通过计算用户间或物品间的相似度来推荐相似用户或相似物品的评分。而基于模型的方法则是通过构建模型来预测评分。 因子分解是一种常见的基于模型的方法,它可以将用户-物品评分矩阵分解为两个低秩矩阵的乘积,以得到用户和物品的隐含特征。这种方法可以有效地处理稀疏性和冷启动的问题,但在数据稀疏的情况下仍然存在一些挑战。 为了克服因子分解算法在数据稀疏情况下的问题,多方面的协同过滤算法提出了将因子分解与邻域方法相结合的新思路。具体而言,它利用了邻域方法的局部信息来改进因子分解算法的准确度和鲁棒性。 在多方面的协同过滤算法中,首先通过因子分解算法得到用户和物品的隐含特征,并用隐含特征对评分进行预测。然后,利用邻域方法计算用户或物品的邻居,并根据邻居的评分信息进行调整。最终,通过加权融合因子分解和邻域方法的结果,得到最终的推荐结果。 该算法的优点是综合了因子分解和邻域方法的优势,可以克服两种方法在特定情况下的局限性。它既考虑了全局的隐含特征,又考虑了局部的用户或物品相似度。因此,多方面的协同过滤算法在推荐系统中具有广泛的应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

远离科研,保命要紧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值