整数规划之分支定界法

Reference:

  1. 运筹学之分支定界法

整数规划问题和一般的线性规划问题很类似,唯一的不同点在于可行解必须是整数

这是因为对于某些实际问题,必须要求全部解或者至少部分解为整数,如,所求的解是人数,机器台数或工厂个数等。

整数规划问题一般被分成如下四个子问题:
1.分支定界法 2.割平面法 3.0—1规划及隐枚举法 4.指派问题
在此只介绍分支定界法

分支定界法的核心思想就是分枝和剪枝。当我们不考虑所求解必须是整数这个条件时,用单纯形法可求出最优解,但是这个解往往不全是整数,因此我们采用剪枝的方式一点一点缩小范围,直到所求解为整数解。

剪枝:如果某一个子问题无可行解或者最优值小于原来的下界,则称这个分支已经查清,将该支剪掉,不再计算。

现在用以下解题过程为例,做出讲解:

  • Step 1

    暂时不考虑解为整数的条件(考虑B0B_0B0​情况),因为我们是在小数解上不断进行改良才最终得到的整数解

通过单纯形法可以得到B0B_0B0​的最优解为(单纯形法在这里不是重点,所以不详细计算):
x1=2.25,x2=3.75,S0=41.25x_1=2.25,x_2=3.75,S_0=41.25x1​=2.25,x2​=3.75,S0​=41.25

因此AAA式的解上界为41.25,这是因为AAA式的解必定为BBB式解的子解。

  • Step 2
    因为x1x_1x1​和x2x_2x2​都为小数,因此我们可以任选一个进行分支,也就是运用解必须是整数这一条件加以约束。这里选用x2x_2x2​进行分支,即分别添加x2<=3x_2<=3x2​<=3和x2>=4x_2>=4x2​>=4,这是因为不确定整数解到底在那个方向能取到最优值,因此需要考虑两种情况。因此有如下两式:
    分别对两式用单纯形法进行求解得:
    B1:x1=3,x2=3且S1=39B2:x1=1.8,x2=4且S2=41B_1:x_1=3,x_2=3且S_1=39\\ B_2:x_1=1.8,x_2=4且S_2=41 B1​:x1​=3,x2​=3且S1​=39B2​:x1​=1.8,x2​=4且S2​=41
    可以看到,B1B_1B1​式的解为39,并且可行解为整数解,所以最差最差也是39了,因此原式的下界暂时为39,而41<41.25作为原式的新上界。

  • Step 3
    但是B2B_2B2​的解中仍然有小数,所以不能确定最终解是否是39,所以我们要继续对B2B_2B2​中的x2x_2x2​进行分支,即x2<=1x_2<=1x2​<=1和x2>=2x_2>=2x2​>=2。将其代入式子条件中进一步进行求解,这里要特别注意不要忘记将之前分支的条件也加进来,如下式,仍然要加入x2>=4x_2>=4x2​>=4这一前提条件:

    仍然对其使用单纯形法求解(这里已经可以看出分支定界法是多么的麻烦了,单纯形法已经用了太多次了),得出如下解:
    B3:x1=1,x2=40⁄9,S3=365⁄9B4:无可行解B_3:x_1=1,x_2= 40⁄9,S_3=365⁄9\\ B_4:无可行解 B3​:x1​=1,x2​=40⁄9,S3​=365⁄9B4​:无可行解
    因为B3B_3B3​的解中仍然有分数,所以不能作为新的下界,但由于365⁄9 < 41所以可以将其作为新的上界。

  • Step 4
    然后按照之前的方法依旧将x2x_2x2​进行分支并带入原式中得,并且得出如下解:

    可以看出两个解都是整数可行解,对比之前的下界39和上界365⁄9,发现都满足条件,因此可以得出最优解为40。

整数规划之分支定界法相关推荐

  1. 运筹说 第57期 | 整数规划的分支定界法

    通过上一期的学习,我们已经学会了整数规划问题的数学模型.割平面法.接下来就跟着小编一起,学习分支定界法吧! 1.方法简介 2.例题展示 下面,在小编通过具体算例来阐明分支定界法的基本思想和一般步骤之前 ...

  2. 运筹学1——整数规划之分支定界法与MATLAB的intlinprog函数

    1 背景 直接用fmincon求解最优化问题时,得到的结果可能是小数,但针对某一些问题,要求结果必须是整数,称为整数规划问题. 分支定界法是一种求解整数规划的算法,具体介绍可看 分支定界法MATLAB ...

  3. matlab 求极小值 一维优化,MATLABoptimization

    MATLABoptimization 所属分类:matlab例程 开发工具:matlab 文件大小:38KB 下载次数:4146 上传日期:2010-01-06 22:50:12 上 传 者:百位过 ...

  4. Book——电力系统规划与可靠性

    绪论 目前对于电力系统可靠性的研究主要包括: 一. 为电力系统的发展规划进行的长期可靠性估计(已达到实用阶段): 二. 为制定每天或每周运行计划而进行可靠性预测(处于研究阶段). 提高电力系统可靠性的 ...

  5. MATLAB实现分支定界法求解整数规划

    利用MATLAB实现分支定界法求解整数规划 classdef Model < matlab.mixin.CopyablepropertiesintconlbubsolverAineqbineqA ...

  6. 分支定界算法 matlab,分支定界法----整数规划matlab

    分支定界法的思想是:首先确定目标值的上下界 发布人:chengxu0921 发布时间:2008-7-21 18:16:27 新闻类别:分支-界限法 例1:设有A,B,C,D,E 5人从事j1,j2,j ...

  7. 整数规划--分支定界法的Matlab实现

    Matlab实现: A = [-1 3; 7 1]; b = [6; 35]; c = [-7; -9];%标准格式是求min,此题为max,需要转换一下lb = [0; 0];%x值的初始范围下界 ...

  8. 运筹学(最优化理论)学习笔记 | 分支定界法

    首先,我们需要明确一点,什么时候才会用到分支定界法? 答:整数规划的时候,因为整数规划会要求部分变量必须取整数. 求解整数规划的常规步骤是: STEP1:将整数规划去掉整数性约束,得到线性规划,俗称松 ...

  9. 整数规划matlab实例,整数规划matlab

    整数规划matlabTag内容描述: 1.例已知非线性整数规划为max z=x12+x22+3x32+4x42+2x52-8x1-2x2-3x3-x4-2x5s.t.0xi99,i=1,2,5x1+x ...

  10. 数学建模 分支限界算法求解整数规划原理以及编程实现

    引入 线性规划问题(松弛问题) 图解法: 使用图解法求出最优解,再使用四舍五入求出的整数解不满足条件 完全枚举法(穷举法):找出集合内所有满足条件的整数点,再带入不等式中,看是否有最优解 分支限界法 ...

最新文章

  1. 走在前沿的弄潮儿,怎能不会Git的那些奇技淫巧
  2. step1 . day8 C语言基础练习之指针和函数
  3. npm ERR! code EINTEGRITY npm ERR! sha1- 报错解决办法
  4. 2021-08-15
  5. Linux基本操作【作业】
  6. python计算长方体体积最简单代码_python处理DICOM并计算三维模型体积
  7. 170802、Elasticsearch5.2.2 安装问题记录
  8. C++编程积累——C++实现十进制与十六进制之间的互相转换
  9. vim怎么跳转到函数定义处_Vim、gvim操作跳转光标区块和代码块的跳转
  10. 打游戏时领悟了“向死而生”,这个AI算法真的不虚强化学习
  11. 小程序中添加客服按钮contact-button
  12. 终于等到离职这一天了--献给准备、犹豫离职中的朋友们!
  13. (转)工业机器人用什么语言编程的?
  14. 淮北职业技术学院计算机官网,淮北职业技术学院
  15. SpringBoot-注解日志 Aop注解切入点
  16. mc服务器常用指令_我的世界服务器指令大全 史上最全的服务器指令介绍
  17. 墨魂服务器维修,2013年10月22日定期维护公告
  18. vue 下载后台返回的图片
  19. Spring boot集成axis2开发webservice 服务
  20. 彻底关掉win10自动更新_WIN10 常用设置收集 便利方法收集

热门文章

  1. Windows Server 2019 Datacenter OVF 模板 百度网盘 下载
  2. HDR图像渲染滤镜软件:Topaz Adjust AI for mac
  3. windows mobile 开发常见问题
  4. 读《淘宝产品十年事》-怎样成为一名出色的产品经理
  5. python安卓吾爱_python编程视频教程v1.0.0下载_Python编程安卓版下载_吾爱游戏网
  6. MFC的坐标转换GetClientRect/GetWindowRect/ClientToScreen/GetCursorPos/ScreenToClient
  7. 在Ubuntu上安装D-link DWA-131驱动
  8. linux iso镜像安装工具,教你制作属于自己的CentOS 6.4一键自动化安装ISO镜像光盘...
  9. RX8025 RTC闹钟唤醒Alarm_D的初始化
  10. sl400上面安装ubuntu