运筹优化学习10:分支定界算法求解整数规划问题及其Matlab实现(上)

简介: 运筹优化学习10:分支定界算法求解整数规划问题及其Matlab实现

1 从一个示例入手

原始题目:

20191011201759494.jpg

分支定界的计算过程:

20191011201606955.jpg

由上述示例可知:


在第一次分支时,我们的左侧分支得到的最优解是原问题的一个可行解,终止此分支,将其视为原问题的一个上界;右侧分支得到了-18.5的最优解,但不是原问题的可行解,继续对其进行分支,此时问题的界为【up = -16, lb = -18.5】

第二次分支时,左侧分支得到-17.4的可行解,但不是原问题的可行解,继续分支;右侧分支无可行解;此时问题的界更新为【up = -16, lb = -17.4】

第三次分支时,左侧分支得到原问题的可行解-17,停止搜索;右侧分支得到了-15.5的最优解,但不是原问题的可行解,且劣于之前确定的界限,停止搜索。

得到原问题的最优解为-17

分支定界算法的搜索过程是一个树结构的搜索,每次分支过程都是在解决原始问题的一个子问题。我们将原始的整数线性规划问题松弛为线性规划问题中,得到的线性规划问题的最优解就相当于分支的根节点,其作为所有分支节点的起点进行搜索;在完成一次分支后,如果得到的最优解是原问题的可行解,我们将停止对该分支进行继续搜索;如果不是原问题的可行解,我们会做一次上下界的检查,如果子问题不能产生更好的解,我们将会砍掉该分支;如果位于确定的上下界内,则继续对该分支进行搜索;当所有的分支都不能得到更好的解时,我们就认为得到了问题的最优解,算法即终止。显然,上述过程可以被视为一种目标明确的枚举过程。


2 关于松弛的你要知道的几个概念


松弛模型是为了针对离散优化变量指数级增长而设计的一种辅助性求解方法,其核心在于放松原问题的某些约束或目标函数,使之更易求解,确保对松弛问题的深入分析得到原问题的最优解。


对于整数规划问题,最好的松弛办法为将离散变量松弛为连续变量。


对于优化问题P和R而言,若问题P的可行解都是问题R的可行解,且R的最优解与P的最优解更优或相等,我们便将问题R称为问题P的松弛问题。


P和R的解空间如下图所示:


灰色椭圆为松弛问题最优解所处于的区域

黑点为原问题的最优解

白色椭圆为问题P的可行解范围

最外侧为松弛问题的解空间。


20191011204706559.png


显然,我们可以得出如下结论:


松弛问题R的不行解,对于问题P绝对是不可行的;

如果松弛问题P的最优解是原问题P的可行解,则其必然是原问题P的最优解;

对于最大值模型,松弛问题R的最优解提供了原问题P的上界,且原问题的每一个可行解都可以作为原问题的一个下界;

对于最小值问题,松弛问题R的最优解提供了原问题P的下界,且原问题的每个可行解都可以作为原问题的上界;


3 算法框架

有了上面的知识铺垫,我们就可以对分支定界算法的算法进行系统全面的描述了。

3.1 基本框架


1. Using a heuristic, find a solution xh to the optimization problem. Store its value, B = f(x_h). (If no heuristic is available, set B to infinity.) B will denote the best solution found so far, and will be used as an upper bound on candidate solutions.


2. Initialize a queue to hold a partial solution with none of the variables of the problem assigned.


3. Loop until the queue is empty:


     3.1. Take a node N off the queue.


     3.2. If N represents a single candidate solution x and f(x) < B, then x is the best solution so far. Record it and set B ← f(x).


     3.3. Else, branch on N to produce new nodes Ni. For each of these:


            3.3.1. If bound(N_i) > B, do nothing; since the lower bound on this node is greater than the upper bound of the problem, it will never lead to the optimal solution, and can be discarded.


            3.3.2. Else, store Ni on the queue.


英文看不懂,来个中文的:


20191011223326630.png

再来一个更为直观的流程图:

2019101421560813.png

3.2 三种搜索策略


广度优先策略(Breadth-first search,BFS):横向搜索,将同层的节点搜索完毕之后,在进行下一次的搜索;这种搜索可以用FIFO queue实现。首先介绍三种搜索策略:

深度优先策略(Depth-first search, DFS):纵向搜索,将一个分支走到底,然后再开下一个分支的搜索;这种搜索可以用LIFO queue也就是栈【后进先出】实现

最佳优先搜索(Best-First Search,BFS):基于广度优先策略,先对同层节点使用估价函数对所有节点进行估价,选择估值最小的节点遍历,直至得到最优解位置。可使用优先队列priority queue来实现。


相关文章
|
16天前
|
算法 数据安全/隐私保护 计算机视觉
基于Retinex算法的图像去雾matlab仿真
本项目展示了基于Retinex算法的图像去雾技术。完整程序运行效果无水印,使用Matlab2022a开发。核心代码包含详细中文注释和操作步骤视频。Retinex理论由Edwin Land提出,旨在分离图像的光照和反射分量,增强图像对比度、颜色和细节,尤其在雾天条件下表现优异,有效解决图像去雾问题。
|
16天前
|
算法 数据可视化 安全
基于DWA优化算法的机器人路径规划matlab仿真
本项目基于DWA优化算法实现机器人路径规划的MATLAB仿真,适用于动态环境下的自主导航。使用MATLAB2022A版本运行,展示路径规划和预测结果。核心代码通过散点图和轨迹图可视化路径点及预测路径。DWA算法通过定义速度空间、采样候选动作并评估其优劣(目标方向性、障碍物距离、速度一致性),实时调整机器人运动参数,确保安全避障并接近目标。
111 68
|
25天前
|
算法 数据安全/隐私保护
室内障碍物射线追踪算法matlab模拟仿真
### 简介 本项目展示了室内障碍物射线追踪算法在无线通信中的应用。通过Matlab 2022a实现,包含完整程序运行效果(无水印),支持增加发射点和室内墙壁设置。核心代码配有详细中文注释及操作视频。该算法基于几何光学原理,模拟信号在复杂室内环境中的传播路径与强度,涵盖场景建模、射线发射、传播及接收点场强计算等步骤,为无线网络规划提供重要依据。
|
26天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
26天前
|
算法
基于龙格库塔算法的锅炉单相受热管建模与matlab数值仿真
本设计基于龙格库塔算法对锅炉单相受热管进行建模与MATLAB数值仿真,简化为喷水减温器和末级过热器组合,考虑均匀传热及静态烟气处理。使用MATLAB2022A版本运行,展示自编与内置四阶龙格库塔法的精度对比及误差分析。模型涉及热传递和流体动力学原理,适用于优化锅炉效率。
|
24天前
|
移动开发 算法 计算机视觉
基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真
本项目基于分块贝叶斯非局部均值优化(OBNLM)算法实现图像去噪,使用MATLAB2022A进行仿真。通过调整块大小和窗口大小等参数,研究其对去噪效果的影响。OBNLM结合了经典NLM算法与贝叶斯统计理论,利用块匹配和概率模型优化相似块的加权融合,提高去噪效率和保真度。实验展示了不同参数设置下的去噪结果,验证了算法的有效性。
|
23天前
|
算法 决策智能
基于SA模拟退火优化算法的TSP问题求解matlab仿真,并对比ACO蚁群优化算法
本项目基于MATLAB2022A,使用模拟退火(SA)和蚁群优化(ACO)算法求解旅行商问题(TSP),对比两者的仿真时间、收敛曲线及最短路径长度。SA源于金属退火过程,允许暂时接受较差解以跳出局部最优;ACO模仿蚂蚁信息素机制,通过正反馈发现最优路径。结果显示SA全局探索能力强,ACO在路径优化类问题中表现优异。
|
6月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
266 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
6月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
157 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
6月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
129 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码