![4ed6097f47bf8ec7b2d70748d2704c50.png](https://i-blog.csdnimg.cn/blog_migrate/966362743c3e37110147d42ea172af4f.jpeg)
有限离散规划 可列离散规划
枚举法 Hahaha
- 图搜索枚举
- 2color
- 树搜索枚举
- 深度优先
- 广度优先
- 最大最小
- 蒙特卡洛
- 分支定界
- 剪枝
(混合)整数线性规划 MILP
![89ca229ff0978c8b081c7df3e921b9cc.png](https://i-blog.csdnimg.cn/blog_migrate/d27a697e354bf33323dfc0fba914cdd6.png)
MILP 定義 規劃問題中自变量集同時保有整数和實數的那類問題:
其中:
凸包定義
整数规划所有可行解的凸包围, 凸包是未知的.. 已知的是約束不等式 凸包是非常难求解的,或者形成凸包需要指数数量级的线性不等式(图中红线)。如果知道了凸包的所有线性表示,那么整数规划问题就可以等价为求解一个凸包表示的线性规划问题。
问題归類
按可行域类型: 整数规划由于可行域是 极度非凸(Highly Nonconvex) 的,因此也可以看作是一类特殊的非凸优化 (Nonconvex Optimization) 问题 (可行域缩小, 反而不好求解了QAQ)
按時間复雜度: 求解整数规划的精确解(全局最优解) 是非多項式难(NP-Hard)問題, 只存在指数级算法复杂度(Exponential Time Solvable), 算法复杂度至少是O(2^n) 线性规划被认为是可以较为高效求解的, 其复杂度是多项式时间的 O(n^k) 每增加一个整数变量, 最坏情况下求解其精确解的运算速度就要增加一倍..,
如: 求解 n = 96 的混合整数规划问题要1min, 則求解 n = 100 的問題可能達到最高的16小时 指数爆炸是也
方法:
- 行生成法
- 列生成法
- 其他 (Col-Row Generation)
行生成法
连环约束, 逐鹿中原
因线性规划中一约束形式为一行不等式, 故称行生成法.
导向最优解所需约束数目均远少于原问题所含者: 需要时才把对应的约束加上
如何沿着梯度方向 (与目标函数的等势亚空间垂直的矢量的方向)
行生成法:
- 构造(如何: 不加约束, 只几个约束, ..)原问题的松弛问题, 作为 主问题 (Master Problem);
- 求解该松弛问题, 得到解;
- 若解是可行于原问题, 那么该解就是原问题的最优解
- 若解为空(无解, 无界), 或对原问题不可行 (栗: 解是(i42) 因为没有某些约束, 则此时加上失落的约束便可排除不可行解)
- 以此循环, 直到松弛问题的解可行, 那么该解也是原问题的最优解。
而通过行生成方法, 可能只需很少的约束条件, 这种搜索约束条件的次序与问题应该存在某些关系, 考虑采用强化学习学到选择约束的策略, 如果这个是与问题相关的确定性策略(固定则是人类史的一个重要结论)
TSP中, subtour elimination 约束数目是指数级的 (TSP 的 Complete Formulation 约束貌似没这么多, 算了..), 故适用于行生成方法.
非凸优化问题如何转化为凸优化问题的方法:
- 修改目标函数,使之转化为凸函数
- 抛弃一些约束条件,使新的可行域为凸集并且包含原可行域
![697cc710643510df63436bbcb90d0fa0.png](https://i-blog.csdnimg.cn/blog_migrate/12a9cdfc1a59aa76a1efcd75f29c3ea1.png)
谨慎分割 (User Cut, 橙红线@Fig.2)
去掉外围实数解的分割(图中虚线部分), 逐渐得到整数向量集合的最小凸包 一般情况很难直接得到最小凸包, 但是可以割掉部分无用空间, 提升算法搜索效率.
Branch-and-Cut 是一族 User Cut
大致分割 (Lazy Cut, 橙黄线@Fig.2)
去掉那些不需要的整数, (比如图中方向求x-y最大值, 显然用平行x+y的线来割更有意义) 在实际问题中,最优解所需要的约束条件往往远远小于原问题的约束条件个数。例如几万个约束条件,实际只有几百个是用来刻画最优解的。那么这个时候,割平面方法便可以大大提速线性规划的求解。求最小约束集1
平束法 (Cutting Planes Mθd. 割平面法; Gomory Cuts)
世界被切割成数学的收束线
平束法主要用于求解整数(或混合整數)线性规划问题的方法 (平束这一线性约束条件, 是指用于切割原空间的相对原空间的平直亚空间), 可以看作是一种行(线性不等式)生成方法
核心思路: 先不考虑问题的整数性约束上, 求解相应的线性规划问题. 若线性规划问题的最优解恰好是整数解,则此解即为整数规划问题的最优解。若否, 则增加一个新的约束条件, 称为割平面, 其须有两条性质:
- 从线性规划问题的可行域中至少割掉目前的非整数最优解
- 不割掉任何整数可行域,然后在缩小的可行域上继续解线性规划问题。重复以上做法,经有限次切割后,必可在缩小的可行域的一个整数极点上达到整数规划问题的最优解4
- cutting-plane oracle 切平面预言器 (找到切平面)
- Neutral and deep cuts
- Unconstrained minimized
- localization algorithms 定位算法
- specific cutting -plance methods 特定切平面法
- epigraph cutting-plane method 上镜图切平面法
对于纯整数线性规划问题:
割平面法首先考虑原问题抛却整数约束後的线性规划问题(这里特称为原问题的线性松弛规划 Linear Relaxation Problem, LRP):
因为
平束法每次找到(选取)满足
不同的平束法的优劣, 在于线性约束选取的次数
记整数间隙 (additive integrality gap):
由于可行域不断缩减, 所以:
定义积分差距闭合(Integrality Gap Closure)比率 (可通过专业解算器解算评估):
Gomory's Integer Cut:
是不是要在Cut类型上做文章? 能不能得到贴合图的 Cut 类型
比较切割平面方法的典型方法是通过在整个算法中添加的剪切次数:更好的方法是在添加较少数量的切割后终止的方法。然整数规划的算法复杂度关联于:
- 整数变量的个数n (指数关系)
- 约束不等式的个数m
平划法 (Branch Mθd. 分支定界法; Strong Branch Rules)
full strong branching
three machine learning branchers:
- learning-to-score approach
- ExtraTrees learning-to-rank approach SVMRANK
- LMART SVMrank[27]andaLambdaMART
分支定界法框架 (Branch and Bound Algorithm, B&B) 分支定界法是解決整数规划問題最核心的精确算法框架. 假设問題目的是求解目标函数最小化, 其核心思想便是把这个NP难的问题分解成求解一个个 LP 问题 (均是P問題), 并且在求解的过程中实时追踪原问题的上界(最优可行解)和下界(最优线性松弛解). B&B 算法中的一个关键步骤是选择一个分數量去分支, 其或显著影响生成的搜索树的大小.因此, 分支规则是流行的組合優化解算器(combinatorial optimization solvers)的核心, 是广泛研究的重点. 分支规则 强分支(Strong Branching): 一種分支策略始终致使生成最小的 B&B 树. 它通过在分支之前计算每個候选变量的预期邊界改进来达到此要求, 但卻需要为每个候选项解决LP×2. (实践中難以接受), 混合分支(Hybrid Branching): 流行的 B&B 解算器所依賴的分支策略, 其僅在求解过程开始时计算强分支分数, 而後逐渐转换为更简单的启发式方法:
- 冲突分数(conflict score);
- 伪成本(pseudo-cost);
- 以上两者的手工結合.
![1fe22616f1df8674aae315493b6b53ad.png](https://i-blog.csdnimg.cn/blog_migrate/40a58b6f05e83b52828c3ecdf27453eb.jpeg)
舉個栗子: 現在一個目標函數Z取最小, Z有m个k自由度整变量和n個實數變量 n个k自由度整变量, 最坏的情况需要n^kd次分支(子线性规划问题)。。。 我們一開始鬆弛所有變量,通過綫性規劃得到鬆弛的最小下界(鬆弛最優解),并維護一個臨時的全局上界 每次決定展開一個系列分支(增加一個變量的約束條件), 若當前節點解高過上界或者無解則不展開分支 每次展開到葉子節點(加滿約束), 將解與上界比較, 若低於上界, 則更新其為新的上界。 s B&B 收斂性 (Convergence) 在解空間無窮大時,当上界和下界非常接近时,可结束迭代: 上界-下界 < Δ or (上界-下界)/上界 < Δ
空間無限大,還是需要提升搜索效率:
- 近似算法 (Approximation Algorithms)
- 启发式算法 (Heuristic Algorithms)
- 遗传算法 (Generic Algorithm)
- Evolutionary Algorithms
這些算法不能求得整数规划的最优解,但是却能在短时间(通常多项式时间)内给出一个较好的可行解
割平面方法 (Cutting Planes Method) 增加分支定界效率的一個重要技巧:
极端情况, 不知道不需要的整数, 只砍掉中间实数:
实际是垂直于某一坐标轴的二分割:
![8de2e4c6fbb9cb424f08cf8297f35b24.png](https://i-blog.csdnimg.cn/blog_migrate/aaf2cf8a31add6a940d10d5e9126c9ea.png)
Learn to Cut ..;
CO 中使用 ML 的两个动机。
研究人员假定对 CO 算法的决策有理论和/或经验性知识,但希望通过机器学习来近似其中一些决策来减轻计算负担。
专家的知识并不令人满意,ML 可以通过反复试验来训练模型。
CO 算法所使用的算法决策, 其函数称为 策略(Policy),即,在给定所有可用信息的情况下,
Branch & Cut
B&B + Cut Selection
干货 | 10分钟掌握branch and cut(分支剪界)算法原理附带C++求解TSP问题代码www.cnblogs.com一族规划问题中, 搜索复杂度天然地与变量数目与约束数目
呈正相关.
不同规划问题, 搜索复杂度还与约束函数的形式复杂度相关...
线性规划的复杂度和连续变量呈多项式级关系, 其还与约束数目呈关系 整数规划的复杂度和整数变量的个数 n 近呈指数关系; 其还与约束数目呈一定关系.
整数规划 可以看作于 线性规划 上 增加变量为整数这一复杂形式的规划, 也可以看成 定义域的改变, 找到一个 同等看待的视角正是证明的关键 -- 王漫超
- 如何选取初始约束
- 如何一步步地增加约束(feasibility cut和optimality cut)
Benders分解在整数 (Benders Decomposition, BDec; Benders, J.F.)
使用 子问题 (primal problem) 来寻找合适的约束不断添加到 松弛主问题 (relaxed master problem) 中。子问题可以给上界(UB),松弛主问题可以给下界(LB),不断迭代就可以逐步找到最优解
固定复杂变量(无关痛痒?), 解决简单变量构成的子问题
线性规划是以复杂变量为参数, 利用割平面将线性规划问题作为参变量, 使得
Benders' Decomposition: 把整数和实数变量隔离做分解, 未完待续
BENDERS DECOMPOSITION WITH GAMSweb.stanford.edu问题模型:
展开:
拆开来写:
主问题:
以及包含求最优函数的次问题 (这里是泛函问题. 注: 解空间无穷的规划问题中,
对偶问题 (尝试给约束增加系数来使得问题明了, 于是问题变为找到合适的系数):
参考:
天津炭栗:数论(二) 对偶与备份zhuanlan.zhihu.com![f58330fbcfed0966568711ab39a0049d.png](https://i-blog.csdnimg.cn/blog_migrate/61a3b90af59dda5a5c3ce1a342e48557.jpeg)
Step:
- 求解当前问题的松弛主问题 RMP, 得到y*∈Y, 得到的q*用来更新下界LB。
- 将y*代入对偶子问题(DSP)求解. (求解DSP的最优解时介入网络):
- 若DSP存在最优解,假设是在极点α'处取得,则用 α'(b-By) + fy' 更新上界UB,并且给主问题MP 添加约束条件 α'(b-By) ≤ q (可以用 RL 做 α', )
- 若DSP存在无界最优解,假设是在极线α'处取得,则 给主问题MP 添加约束条件 α'(b-By) ≤ 0 (可以用 RL 做 α')
- 直至LB ≥ UB, 否则回到 1
problem,比如10个,然后有个subproblem,用来add constraints on the fly.如此循... Benders应用得很成功的案例,比如multi-commodity network flow problem.
列生成方法
与行生成法对偶?共轭? 增加变量个数
广义 Dantzig-Wolfe 分解法(分解整数变量)
(Benders分解的对偶方法)
常用于有一部分约束条件有明显的”对角线分块“结构
使用子问题(primal problem)来寻找合适的约束不断添加到松弛主问题(relaxed master problem)中。对于最小化问题,子问题可以给下界(LB),松弛主问题可以给上界(UB),不断迭代就可以逐步找到最优解。
dual problem
返回(可能具有停滞性)的操作采取。该策略是我们想要使用 ML 学习的功能,我们在下面显示了两个动机如何自然地产生两个学习设置。 在使用 ML 应用roximate 决策的情况下,由于演示,通常通过模仿学习来学习策略,因为预期的行为由专家(也)向 ML 模型显示(演示)称7B为预言器,即使它不一定是最佳的)
ML 与经典方法结合的切入点:
A状态如果信息足以完全描述当时的环境,马尔科夫决策过程设置。 端到端学习: 利用机器学习来解决离散优化问题的第一个想法是训练 ML 模型直接从输入实例输出解决方案
![a7fcb8941f5d39185feb06f05296cada.png](https://i-blog.csdnimg.cn/blog_migrate/7471a07d48deb79b235958174a41ddb2.png)
OR学习
![9d78776e100710ecf359df8dc92ecb6f.png](https://i-blog.csdnimg.cn/blog_migrate/59327c6bd23a764164e228b8eb2bb8ff.png)
序贯OR学习
![eb9fe7659ecd8d4904ba628a55474f3e.png](https://i-blog.csdnimg.cn/blog_migrate/87bf725566e9fe167d1042d40f687852.png)
f
![b75c6d1389fc41a91e6ccdf9cf46dbbb.png](https://i-blog.csdnimg.cn/blog_migrate/ca9e519d8f1562f18112402a41d80190.png)
强化學習(Reinforcement Learning, RL) 與 B&B 框架 Марков 决策过程 (Markov Decision Process, MDP) 建模 由於 B&B 框架下的求解過程是序貫決策過程, 故可以同化为 MDP
![a9ef4041b2ae2ee181303187939464a7.png](https://i-blog.csdnimg.cn/blog_migrate/0bcdd3b57cbd7eae21cdb788f35b8c32.jpeg)
決策過程的第t時刻, 解算器處於狀態
- 扩展了 B&B 树
- 解决两个子LRP (进行任何内部启发式)
- 选择要拆分的下一个叶节点 (在必要的情况下修剪树)
這樣構成了一個新的狀態
RUA! [1]Exact Combinatorial Optimization with Graph Convolutional Neural Networks 文章結合了模仿学习和专用图形卷积神经网络模型, 給出了在 MILP 中解决 B&B 變量選擇问题的方法.
- 采用标准强化学习算法在早期通常非常缓慢: 随机初始化策略执行不佳,導致周期過長;
- MDP 非常大: 一旦选择了与实例对应的初始状态, 该过程的其余部分就被实例特化.
模仿學習 這裏使用强分支规则通过行为克隆(behaiver cloning)进行训练 (计算成本高, 但会产生小 B&B 树). 記錄下專家策略(狀態-動作對:
![9047d28281a4f1b461c49f054908d853.png](https://i-blog.csdnimg.cn/blog_migrate/6745e51fa877fa10f88438473546e19a.png)
二部图 (described in Figure 3) 的一边是与 MILP 中的约束相对应的节点, 在当前节点的 LRP 中每行一个, 其特征矩阵为
![f7c335564ccfc866d980b31bef4e36fc.png](https://i-blog.csdnimg.cn/blog_migrate/026a50904873241065aa482eba177076.png)
On one side of the graph are nodes corresponding to the constraints in the MILP, one per row in the current node’s LP relaxation, with C ∈ R[m×c] their feature matrix. On the other side are nodes corresponding to the variables in the MILP, one per LP column, with V ∈ R[n×d] their feature matrix. An edge (i,j) ∈ E connects a constraint node i and a variable node j if the latter is involved in the former, that is if A[i,j]≠0, and E ∈ R^[m×n×e]represents the (sparse) tensor of edge features. Note that under mere restrictions in the B&B solver (namely, by enabling cuts only at the root node), the graph structure is the same for all LPs in the B&B tree, which reduces the cost of feature extraction. The exact features attached to the graph are described in the supplementary materials. We note that this is really only a subset of the solver state, which technically turns the process into a partially-observable Markov decision process [6], but also that excellent variable selection policies such as strong branching are able to do well despite relying only on a subset of the solver state as well. 策略參數化 文獻将变量选择策略
- 无论输入图的大小如何,它们都是明确定义的;
- 它们的计算复杂度直接与图的密度相关,这使得它是处理通常稀疏的理想选择;
- 它们是置换不变的,即无论节点的出现顺序如何,它们总是产生相同的输出.
模型以二部圖状态表示作为输入, 并以两个交织半卷积的形式执行单图卷积. 根據输入图的二部结构, 图卷积可以分解为两个连续的过程 -- 变量到约束; 约束到变量:
On learning and branching: a surveycerc-datascience.polymtl.ca
Strong Branch
Branchorbi.uliege.behh
Machine Learning for Combinatorial Optimization: a Methodological Tour d'Horizon
参考
- ^Exact Combinatorial Optimization with Graph Convolutional Neural Networks