组合优化问题

组合优化问题概念

从广义上讲,组合优化问题是涉及从有限的一组对象中找到"最佳"对象的问题。“最佳”是通过给定的评估函数来测量的,该函数将对象映射到某个分数或者成本,目标是找到最高评估分数和最低成本的对象。组合优化往往涉及排序、分类、筛选等问题。以离散的COP问题来讲,目标就是从所有可行解中寻找一个集合、一个排列或者一个图。

典型的组合优化问题

旅行商问题(Traveling Salesman Problem - TSP)
加工调度问题(Scheduling Problem,如Flow-Shop,Job-Shop)
0-1背包问题(Knapsack Problem)
装箱问题(Bin Packing Problem)
图着色问题(Graph Coloring Problem)
聚类问题(Clustering Problem)
著名的旅行商问题(TSP):假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径长度为所有路径之中的最小值。TSP是一个典型的组合优化问题,且是一个NP完全难题,关于NP的这个概念本文就不做详细介绍了,但简单的说就是:TSP问题目前尚不能找到一个多项式时间复杂度的算法来求解。例如,下图显示了美国所有州所在城市的最佳旅游:

image.png

对于旅行商问题,计算的复杂度为O(n!),在现实世界中出现TSP的实际实例通常具有数千个城市,所以是一个相当高维的最优求解问题。类比到其他的COP问题,又由于各类问题具有细微差别和约束,方案难以直接借用,对应于这些问题的解决方案探索是漫长而艰巨的,并且可能需要领域专家的工作来检测特定问题的组合搜索空间中的某些结构。
由于近年来深度学习在许多领域取得了巨大成功,让机器学会如何自己解决问题的可能性听起来非常有希望。将算法设计为自动化,可以为解决困难的COP问题可以节省大量的金钱和时间,也许可以产生比人类设计的方法更好的解决方案,正如我们在AlphaGo的成就中看到的那样,这些成就击败了数千年的人类经验


对项目的想法
BIOS配置寻优也可以理解为组合优化问题,是一个NP-hard问题,具有高维的离散动作空间。


组合优化求解算法

传统算法

参考组合优化问题求解算法思路的整理

  1. 精确算法
    精确算法是指能够求出问题最优解的算法。当问题的规模较小时,精确算法能够在可接受的时间内得到最优解;当问题的规模较大时,精确算法一方面可以提供问题的可行解,另一方面可以为启发式算法提供初始解,以便搜索到更好的解。
    常用的精确算法有分支定界法、割平面法、动态规划法等。
  2. 近似算法
    近似算法是指用近似方法来解决优化问题的算法,通常与 NP-hard 问题相关,由于无 法有效地在多项式时间内精确地求得最优解,所以考虑在多项式时间内求得一个有质量保 证的近似解。

贪婪算法、局部搜索算法、松弛算法、动态规划法等都可用于构建近似算法求解。

  1. 启发式算法
    启发式算法是一种基于直观或经验构造的算法,能在可接受的计算成本内尽可能地逼近最优解,得到一个相对优解,但无法预计所得解与最优解的近似程度。

启发式算法可分为传统启发式算法和元启发式算法,传统启发式算法包括构造性方法、局部搜索算法、松弛方法、解空间缩减算法等

  1. 元启发式算法
    元启发式算法主要指一类通用型的启发式算法,它对启发式算法进行了改进,是随机 算法与局部搜索算法相结合的产物。这类算法的优化机理不过分依赖与算法的组织结构信 息,可以广泛地应用到函数的组合优化和函数计算中。

元启发式算法包括禁忌搜索算法、模拟退火算法、遗传算法、蚁群算法、粒子群算 法、人工神经网络等

强化学习解决组合优化问题

组合优化问题由于多半属于NP-hard问题,传统的数学优化方法目前很难求到精确解。神经网络是否能帮助组合优化问题的求解一直以来都是一个非常有趣和前沿的话题。

组合优化问题大多数情况下都是涉及到决策顺序,即序列的决策问题,例如对于TSP问题就是决定以什么顺序访问每一个城市,例如对于Job shop问题(加工车间调度问题)就是决定以什么顺序在机器上加工工件。而深度神经网络里边的递归神经网络恰好可以完成从一个序列到另一个序列的映射问题,因此可以借用递归神经网络来直接求解组合优化问题完全是一种可行的方案。另外一套方案就是采用强化学习,强化学习天生就是做序列决策用的,那么组合优化问题里边的序列决策问题完全也可以用强化学习来直接求解,其难点是怎么定义state, reward。

强化学习方法小结

参考相关资料汇总与点评部分

2015年,O. Vinyals, M. Fortunato, and N. Jaitly. Pointer networks使用监督学习训练了一个深度神经网络(DNN)来解决欧几里德TSP,作者通过实验证明了神经网络能够在具有大动作空间的domains中参数化竞争策略。文章引入了指针网络,这是一种能够输出输入序列的置换的神经架构。尽管文章看起来十分promising,但使用监督学习来解决组合问题并不简单,因获得一个训练集意味着我们求得大量组合实例的最优解,这实在太耗费计算资源了+很多COP足量的训练集太难找了.

专为组合优化求解而诞生的神经网络 -- Pointer Network介绍
组合优化问题很多时候就是进行序列决策,而Pointer Network就是非常适合求解组合优化问题的一种神经网络。Pointer Network(后面简称Ptr-Net)是基于Sequence-to-Sequence网络生成的一种新的网络架构。Ptr-NetSequence-to-Sequence类似,都是解决从一个序列到另一个序列的映射问题,不同的是Ptr-Net针对的序列问题更加特殊:输出序列的内容与输入序列的内容完全一致,只是序列的顺序发生了改变。这种问题在实际中常见的应用就是组合优化问题,因此Ptr-Net首次建立了神经网络与组合优化问题的联系。

2016年,I. Bello, H. Pham, Q. V. Le, M. Norouzi, and S. Bengio. Neural combinatorial optimization with reinforcement learning. arXiv preprint arXiv:1611.09940给出了NCO框架,并首次实现了用RL方法求解组合问题。作者采用了Vinyals引入的指针网络,并将其用于演员-评论家体系结构来解决TSP问题。实验证明,在没有人工干预的情况下,学习有竞争力的heuristics是可能的。不过他们还是应用了大量的采样和搜索技术来改善神经网络本身产生的解

到目前为止,很多工作都有很大的相似之处: 它们都是基于序列到序列模型,这是最初为监督学习而设计的架构。在这些模型中,解仅基于与问题的单一交互而被立即解码。相反,M. Nazari, A. Oroojlooy, L. Snyder, and M. Takác. Reinforcement learning for solving the vehicle routing problem将车辆路径问题(VRP)视为MDP问题。具体来说,他们构建的解是与环境交互做出一系列决策后的结果。这种算法可以专注于环境的演变过程以构建最终解,论文中说算法能处理问题的随机版本。

image.png

image.png
image.png

基于DRL的应用对比分析

基于DRL的应用对比分析

你可能感兴趣的:(组合优化问题)