【管理运筹学】第 5 章 | 整数规划 (1,问题提出与分支定界法)

news2024/12/29 11:47:37

文章目录

  • 引言
  • 一、整数规划问题的提出
    • 1.1 整数规划的数学模型
    • 1.2 整数规划问题的求解
  • 二、分支定界法
    • 2.1 分支与定界
    • 2.2 基本求解步骤
      • (一)初始化
      • (二)分支与分支树
      • (三)定界与剪枝
      • (四)搜索迭代
    • 2.3 分支定界法的应用
  • 写在最后


引言

整数规划是数学规划的一个重要分支,在实际中有非常广泛的应用背景,例如著名的指派问题、背包问题和旅行商问题。同时,它又是最难求解的问题之一,所以整数规划领域一直都比较活跃。


一、整数规划问题的提出

1.1 整数规划的数学模型

线性规划的一个重要假设是决策变量可取非整数的连续值,然而这一假设在很多情况下是不满足的。一般称对决策变量有整数要求的数学规划问题为整数规划问题(Integer Programming,可简称 IP )。

根据变量取值的限制形式,整数规划又分为三种:

  1. 纯整数规划(IP):所有决策变量都取整数值。
  2. 混合整数规划(MIP):部分决策变量取整数值。
  3. 0-1 整数规划(BIP):整数变量只能取 0 或 1 。其又可分为纯 0-1 和混合 0-1 整数规划。

显然,如果把整数限制去掉,整数规划就成为了线性规划,此线性规划问题称为整数规划的线性规划松弛问题

1.2 整数规划问题的求解

既然整数规划问题只是加了一个整数约束,那可不可以先求松弛问题的最优解出来,让最优解取整,就得到整数规划的最优解呢?

答案是否定的,如果只是对最优解进行取整,有可能与最优整数解相差甚远,而且有可能取整后不满足约束条件,不可行。
在这里插入图片描述

但是我们可以得到如下整数规划的最优解和松弛问题的最优解之间的关系:

对于求 m a x max max 问题,松弛问题的最优目标函数值 ≥ \geq 整数规划问题的最优目标函数值。

这也很好理解,松弛问题的可行解包含了整数规划的所有可行解,自然最优目标函数值不会小于整数规划问题的最优值。

如果线性规划松弛问题的可行域有界的话,整数规划的解是有限的。理论上讲,可以通过穷举法,把每个点都算出来比较大小。不过对于整数变量较多的问题,计算时间相当大,无法派上实际用场。

目前比较成熟的求解方法是分支定界法和割平面法,下面依次来介绍一下。


二、分支定界法

2.1 分支与定界

通过之前的讨论,我们可以发现如下几个事实:

  1. 如果求解一个整数规划的线性规划松弛问题,恰好得到最优解都取整数,那么,这个解也一定是相应整数规划问题的最优解。
  2. 如果松弛问题的最优解不是整数,那么,整数规划问题的最优解一定不会比它好。也就是说,对于求最大的问题,线性规划松弛问题的最优解值是整数规划问题解值的上界
  3. 如果求解过程中已经出现一个整数解,那么,整数规划问题的最优解值一定不会比它差。也就是说,求出的一个整数解值是整数规划问题解值的一个下界

如果用 z 0 z_0 z0 表示线性规划松弛问题的最优解值,用 z i z_i zi 表示找到的某个整数解值, z ∗ z^* z 为最优整数解值, z ‾ \underline{z} z 表示下界, z ‾ \overline{z} z 表示上界,则极大化整数规划问题的最优整数解 z ∗ z^* z 满足如下关系: z ‾ = z i ≤ z ∗ ≤ z 0 = z ‾ \underline{z}=z_i \leq z^* \leq z_0 = \overline{z} z=zizz0=z
如果能找到一种方法,不断降低上界,提高下界,最后使得上界等于下界,就可以搜索到最优整数解。分支定界法就是按照这一原理设计的。它从求解线性规划松弛问题开始,将松弛问题分成许多小的子域,这一过程称为分支;通过分支和找到更好的整数解来不断修改问题的上下界,这一过程称为定界,这就是分支定界法名称由来。

2.2 基本求解步骤

(一)初始化

对给定的整数规划问题,放松整数约束,求解它的线性松弛问题。如果得到的解是整数,该解即为整数规划的最优解。否则,所得到的线性规划松弛解作为整数规划问题最优解的初始上界。初始下界一般可设为负无穷。

(二)分支与分支树

从任何一个问题或子问题的不满足整数要求的变量中,选出一个进行处理的过程称为分支。分支通过加入一对互斥的约束将一个(子)问题分解为两个受到进一步约束的子问题,并强迫不为整数的变量进一步逼近整数值。

举个例子,比如松弛问题最优解为 x 1 = 4.81 , x 2 = 1.82 x_1=4.81,x_2=1.82 x1=4.81,x2=1.82 。可以先选中变量 x 1 x_1 x1 ,其整数部分为 4 4 4 ,则可以添加一个约束为 x 1 ≤ 4 x_1 \leq 4 x14 ,作为一个子问题。添加约束 x 1 ≥ 5 x_1 \geq 5 x15 作为新的子问题。利用第 4 章的内容,添加新约束条件可以不重新计算,分别求出两个子问题的最优解。

分支砍掉了 4 4 4 5 5 5 之间的非整数域,缩小了搜索的区域。

子问题若不满足整数要求,还可继续向下进行分支,分支可以形成一个倒置的分支树。树的根节点是线性规划松弛解,它有两个后续子节点,每个子节点又会有两个子节点,分支可继续进行下去,直到找到一个整数节点或该节点不可行时为止。
在这里插入图片描述

为方便起见,我们称前导节点称为父节点,后续节点为子节点。分支树上的每一个节点都代表一个子问题,如果该子问题还没有求解过,称该节点为打开节点,已求解过的节点称为关闭节点。

(三)定界与剪枝

通过不断地分支和求解各个子问题,分支定界发不断修正其上下界的过程称为定界。上界通常由各打开节点中最大的目标函数值来确定。,下界则由已经找到的最好的整数解来确定。求解任何一个子问题都有以下三种可能结果:

  1. 子问题无可行解。此时无需继续往下分支,该节点因为不可行而关闭。因为往下分支的子问题是添加了约束条件的,肯定同样不可行。
  2. 得到一个整数解,则不必往下分支,该节点因为有一个整数解也被关闭。如果该整数解是目前最好的整数解,则被记录下来,并且它的值作为新的下界。
  3. 得到一个非整数解时才有可能进一步向下分支,是否向下分支取决于该节点的目标函数值是否优于下界(目前最好整数解值)。分支树的一个重要特点是各节点的目标函数严格有序,即子节点的目标函数值一定不会大于父节点的目标函数值。所以只有当该节点的目标函数值大于下界时,才有必要向下分支,因为后续节点才有可能有更好的整数解。因此存在以下两种情况:
    a)目标函数值大于下界,继续向下分支。
    b)目标函数值小于等于下界,因剪枝而关闭。

(四)搜索迭代

每完成一次分支过程即完成一次搜索。在搜索的过程中,每当下界被修改后,都应检查所有打开的节点中,那些目标函数值小于新下界的节点。这些节点是要被剪掉的,因此而关闭。所有节点关闭表明搜索已经完成。如果此时没有找到任何整数解,则该问题没有整数解;否则搜索过程中得到的最好整数解就是该问题的最优解。

2.3 分支定界法的应用

光有文字这样干说有点抽象,下面结合一个具体例子来说明分支定界法的具体使用。

在这里插入图片描述
解: 先不考虑整数限制,利用单纯形法求解松弛问题 B B B,其最优单纯形表为:

在这里插入图片描述

得到最优解为: x 1 = 4.81 , x 2 = 1.82 , z 0 = 356 x_1=4.81,x_2=1.82,z_0=356 x1=4.81,x2=1.82,z0=356 显然,两个决策变量均不符合整数约束条件。此时可记 z 0 z_0 z0 为最优目标函数值的上界 z ‾ \overline{z} z 。当 x 1 = x 2 = 0 x_1=x_2=0 x1=x2=0 时,符合整数要求,此时 z = 0 z=0 z=0 ,可作为下界,因此整数规划问题 A A A 的最优解 z ∗ z^* z 满足 0 ≤ z ∗ ≤ 356 0 \leq z^* \leq 356 0z356

对问题 B B B 增加一个约束条件 x 1 ≤ 4 x_1 \leq 4 x14 ,构成问题 B 1 B_1 B1 。增加约束条件 x 1 ≥ 5 x_1 \geq 5 x15 ,构成问题 B 2 B_2 B2 。将约束条件化为等式后补加到最优单纯形表中,令新增加的松弛变量为基变量,继续求解。可得到两个子问题的最优解如下表所示。

在这里插入图片描述

问题 B 1 B_1 B1 目标函数值较好,可更新上界 z ‾ = z 1 = 349 \overline{z}=z_1=349 z=z1=349 ,由于未出现整数解,因此下界仍为 0 。因此整数规划问题 A A A 的最优解 z ∗ z^* z 满足 0 ≤ z ∗ ≤ 349 0 \leq z^* \leq 349 0z349

子问题 B 1 B_1 B1 的目标函数值较大,故先将其进行分支,添加约束条件 x 2 ≤ 2 x_2 \leq 2 x22 ,得到子问题 B 3 B_3 B3 ,添加约束条件 x 2 ≥ 3 x_2 \geq 3 x23 ,得到子问题 B 4 B_4 B4 。分别进行求解,可得到如下结果。

在这里插入图片描述

可知, B 3 B_3 B3 已经满足整数要求,不必继续分支,且为第一个整数解,故直接可更新下界为 z ‾ = z 3 = 340 \underline{z}=z_3=340 z=z3=340 。问题 B 4 B_4 B4 由于最优解值小于下界,故直接关闭。问题 B 2 B_2 B2 的最优解值大于下界,可继续进行,并更新上界为 z ‾ = z 2 = 341 \overline{z}=z_2=341 z=z2=341 。因此整数规划问题 A A A 的最优解 z ∗ z^* z 满足 340 ≤ z ∗ ≤ 341 340 \leq z^* \leq 341 340z341

对问题 B 2 B_2 B2 分别添加约束条件 x 2 ≤ 1 x_2 \leq 1 x21 x 2 ≥ 2 x_2 \geq 2 x22 ,分别构成问题 B 5 B_5 B5 B 6 B_6 B6 。进行求解,得到如下结果。

在这里插入图片描述
z 5 z_5 z5 由于小于下界,故问题 B 5 B_5 B5 关闭。问题 B 6 B_6 B6 因不可行而关闭。

至此,所有节点均已关闭,其分支过程如下图所示。
在这里插入图片描述
得到最优整数解为 x 1 = 4 , x 2 = 2 , z ∗ = 340 x_1=4,x_2=2,z^*=340 x1=4,x2=2,z=340 ,即为原问题 A A A 的最优解。


写在最后

分支定界法可求解纯整数规划和混合整数规划问题,计算量比穷举法小,更为优越。

整数规划求解方法还有割平面法,我们下一篇文章再来介绍。另外,0-1 型整数规划求解法也将会放在第 5 章中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/882198.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正中优配:2023新股上市涨跌幅规则?新股上市涨跌幅限制为几天?

A股与美股不同,股票存在涨跌幅限制,那么,2023新股上市涨跌幅规矩?新股上市涨跌幅限制为几天?下面正中优配为我们预备了相关内容,以供参阅。 2023年新股上市涨跌幅存在以下规矩: 1、主板初次公开…

mock.js引发的报错Corrupted zip: missing xxx bytes

背景: 之前项目没引入mock.js,出于产品要宣传售卖该项目,后端那套服务需要真实场景,和产品经理商量下前端出个假数据的页面,所以复制几个页面mock数据用于产品宣传 首先了解下mock.js Mock 是一种用于模拟数据和行为的…

【QT】 QFileQFileInfo文件操作

很高兴在雪易的CSDN遇见你 ,给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享QT对文件的操作技术,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞关注,小易会继续努力分享,一起进步! 你的点…

恢复已被删除,但是能然有进程调用的文件

当Linux计算机受到入侵时,常见的情况是日志文件被删除,以掩盖攻击者的踪迹。管理错误也可能导致意外删除重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志。有时可以通过lsof来恢复这些文件。 当进程打开了某个文…

【枚举边+MST+组合计数】CF1857G

Problem - 1857G - Codeforces 题意: 思路: 首先观察一下样例: 可以发现对于每一对点,贡献是 s - 这对点对应的环的最大边 1 那么这样就有了 n^2 的做法 然后,根据惯用套路,枚举树上的点对问题可以转…

深入解析美颜SDK:算法、效果与实现

在当今数字化社会中,图像处理和美化技术已经成为了许多应用领域的重要组成部分,尤其在视频直播领域,美颜技术更是无处不在。直播美颜SDK作为一种集成的软件工具包,为开发者和应用提供了强大的美颜功能。 一、算法原理 磨皮算法…

理解RDMA SGL

1. 前言 在使用RDMA操作之前,我们需要了解一些RDMA API中的一些需要的值。其中在ibv_send_wr我们需要一个sg_list的数组,sg_list是用来存放ibv_sge元素,那么什么是SGL以及什么是sge呢?对于一个使用RDMA进行开发的程序员来说&…

Python教程(9)——Python变量类型列表list的用法介绍

列表操作 创建列表访问列表更改列表元素增加列表元素修改列表元素删除列表元素 删除列表 在Python中,列表(list)是一种有序、可变的数据结构,用于存储多个元素。列表可以包含不同类型的元素,包括整数、浮点数、字符串等…

服务器如何防止cc攻击

对于搭载网站运行的服务器来说,cc攻击应该并不陌生,特别是cc攻击的攻击门槛非常低,有个代理IP工具,有个cc攻击软件就可以轻易对任何网站发起攻击,那么服务器如何防止cc攻击?请看下面的介绍。 服务器如何防止cc攻击&a…

只需要自动售货机,商业模式立马大变样!

随着互联网、大数据和人工智能的蓬勃发展,商业模式正以前所未有的方式融合,其中自动售货机作为新零售模式的一颗璀璨明珠,正引领着购物体验的革命。这个巧妙的结合将消费者的便利、数据的智能分析以及科技的创新融为一体,重新定义…

【日常积累】HTTP和HTTPS的区别

背景 在运维面试中,经常会遇到面试官提问http和https的区别,今天咱们先来简单了解一下。 超文本传输协议HTTP被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果…

你的汽车充电桩控制板可能比你的智能手机还要智能?

你是否想过,你的汽车充电桩控制板可能比你的智能手机还要智能?今天我们就来聊聊这个话题。 汽车充电桩控制板的智能性让充电过程更加高效、安全。首先,它具备自检功能,就像你的手机一样,不仅能检查出设备的工作状态,还…

[杂症]PLSQL很卡

PLSQL症状如下: 1、PLSQL隔段时间没用再执行语句时会很卡2、就是很卡,干啥都卡 目前网上的方法汇总如下: 1、Tools >> Preferesnces >> Oracle >> Connection 打开自动连接 勾选检查连接、勾选所有会话,设置成…

正中优配:牛市旗手“又行了”

8月15日早盘,A股首要指数呈弱势盘整态势,截至记者发稿时,沪指小幅翻红,深证成指、创业板指依然飘绿。 中拉升;周一活泼的酒店、旅游板块则震荡调整;房地产板块盘中震荡,体现较弱。 “牛市旗手”…

软件测试简历撰写与优化,让你面试邀约率暴增99%!

如何撰写一份优秀的简历呢??这是一个求职者都会遇到的问题,今天就来详细带大家写一份软件测试工程师职位的简历!希望能给各位软件测试求职者一个带来帮助! 个人简历是求职者给招聘单位发的一份简要介绍。包含自己的基本…

grafana 的 ws websocket 连接不上的解决方式

使用了多层的代理方式,一层没有此问题 错误 WebSocket connection to ‘wss://ip地址/grafana01/api/live/ws’ failed: 日志报错 msg“Request Completed” methodGET path/api/live/ws status403 解决方式 # allowed_origins is a comma-separated list of o…

Qt扫盲- Graphics View框架理论综述

Graphics View框架理论综述 一、概述二、Graphics View 体系结构1. The Scene2. The View3. 图元 Item 三、图形视图坐标系统1. 图元Item的坐标2. Scene Scene坐标3. View 视图坐标4. 坐标映射 四、关键特性1. 缩放和旋转2. 打印3. 拖放4. 鼠标指针和 提示5. 动画6. OpenGL渲染…

在Vscode中,使用Shift + Alt + F导致本来一行的代码变成多行,看起来贼难受

在VSCode中,我们经常安装各种插件,本人采用的时vuter插件,但是在使用这个插件的时候,我发现,使用Shift Alt F,对整个前端vue界面进行代码格式化的时候,本来是一行就可以展示的代码&#xff0c…

揭穿DevOps的5个谣言!

据不完全统计,软件故障每年都会给企业造成数十亿美元的损失,这也是为什么拥有一个可靠的软件交付流程是如此重要的原因,而DevOps能够帮助我们实现这一目标。 尽管如今DevOps如今已在大量企业中落地,但人们对DevOps其实存在很多误…

0基础转行产品经理可行吗?如何操作才靠谱?

在多年的产品经验中,遇到了很多朋友同事咨询转行做产品的可行性,在沟通的过程中,大家都普遍认为零基础转行产品,对于一个已经有工作经验的人来说,是不是需要付出很大的努力,之前走的路就全白费了&#xff0…