整数规划-割平面法

整数规划-割平面法

  • 割平面法思想
  • Gomory's割平面法原理
  • 实例

谨以此博客作为学习期间的记录。

割平面法思想

在之前,梳理了分支定界法的流程:分支定界法
除了分支定界法,割平面法也是求解整数规划的另一个利器。
我们已经知道,线性规划的可行域是一个凸集,而最优点将会在凸集的某个顶点处取到。而如果凸集的顶点都是整数点,那这样的话只要使用单纯形法即可求得整数最优解。

就像下图的凸包所示,在实际情况中,线性规划的可行域往往交点都不在整数点处,如果能找到整数点的一个凸包,那整数规划问题即可转化为普通的线性规划问题。但是想找到这样的一个凸包是非常困难的,只能使用某种方法去不断的逼近这个凸包。

这就是割平面法的思想:不断地向原问题中添加约束去逼近这个整数凸包,从而使得解出来的解为整数解。
在这里插入图片描述

Gomory’s割平面法原理

在上面提到了,通过不断添加约束去逼近一个整数凸包,那么该如何去添加约束呢?也就是如何确定割平面这是本部分的重点。
确定割平面的算法有很多,暂时先以较为基础的Gomory’s 分数割平面算法介绍,后续如果用到更多其他割平面再进行补充。
先看一个标准整数规划问题
m i n c T x s . t . { A x = b x ≥ 0 x ∈ Z n \begin{align*} min \quad & \mathbf{c}^T \mathbf{x} \\ s.t. \quad & \begin{cases} \mathbf{Ax} =\mathbf{b} \\ \mathbf{x} \geq \mathbf{0}\\ \mathbf{x} \in \mathbb{Z}^n \end{cases} \\ \end{align*} mins.t.cTx Ax=bx0xZn

当使用单纯形法求解整数规划问题时,可以将问题划分为基变量(Basic Variables)和非基变量(Non-Basic Variables)。在标准形式的整数规划问题中,可以进行如下的续写:
令基变量为 x B \mathbf{x}_B xB,非基变量为 x N \mathbf{x}_N xN。整数规划问题可以表示为:
min ⁡ c T x = c B T x B + c N T x N \min \mathbf{c}^T \mathbf{x} = \mathbf{c}_B^T \mathbf{x}_B + \mathbf{c}_N^T \mathbf{x}_N mincTx=cBTxB+cNTxN
约束条件:
B x B + N x N = b x B , x N ≥ 0 x ∈ Z n \begin{align*} \mathbf{B} \mathbf{x}_B + \mathbf{N} \mathbf{x}_N &= \mathbf{b} \\ \mathbf{x}_B, \mathbf{x}_N &\geq \mathbf{0} \\ \mathbf{x} &\in \mathbb{Z}^n \end{align*} BxB+NxNxB,xNx=b0Zn
其中:

  • c T = [ c B T , c N T ] \mathbf{c}^T = [\mathbf{c}_B^T, \mathbf{c}_N^T] cT=[cBT,cNT] 是目标函数的系数向量, c B \mathbf{c}_B cB 对应基变量的系数, c N \mathbf{c}_N cN 对应非基变量的系数。
  • B \mathbf{B} B N \mathbf{N} N 分别是基变量和非基变量对应的约束矩阵的子矩阵。
  • x B \mathbf{x}_B xB x N \mathbf{x}_N xN 分别是基变量和非基变量向量。

现在将整数约束松弛掉,使用单纯形法进行求解,多次迭代后模型收敛。收敛后的问题可以表述如下:

min ⁡ f 0 + c N T x N \min \quad f_0 + \mathbf{c}_N^T \mathbf{x}_N minf0+cNTxN
约束条件:
x B + B − 1 N x N = B − 1 b x B , x N ≥ 0 \begin{align*} \mathbf{x}_B + \mathbf{B}^{-1}\mathbf{N} \mathbf{x}_N &= \mathbf{B}^{-1}\mathbf{b} \\ \mathbf{x}_B, \mathbf{x}_N &\geq \mathbf{0} \\ \end{align*} xB+B1NxNxB,xN=B1b0
其中 f 0 = c B T x B f_0 = \mathbf{c}_B^T \mathbf{x}_B f0=cBTxB在求解之后为一个常数。
那么将上述约束变形即可得到 x B + ⌊ B − 1 N ⌋ x N ≤ ⌊ B − 1 b ⌋ \mathbf{x}_B + \lfloor\mathbf{B}^{-1}\mathbf{N} \rfloor \mathbf{x}_N \leq \lfloor \mathbf{B}^{-1}\mathbf{b} \rfloor xB+B1NxNB1b将其与原约束相减可以得到
( B − 1 N − ⌊ B − 1 N ⌋ ) x N ≥ B − 1 b − ⌊ B − 1 b ⌋ (\mathbf{B}^{-1}\mathbf{N} - \lfloor\mathbf{B}^{-1}\mathbf{N} \rfloor )\mathbf{x}_N \geq \mathbf{B}^{-1}\mathbf{b} - \lfloor \mathbf{B}^{-1}\mathbf{b} \rfloor (B1NB1N⌋)xNB1bB1b
这个约束可以割掉小数解得部分,原因如下。
如果最终解出来的仍为小数解,表示为[ x B , x N x_B,x_N xB,xN],其中 x B x_B xB为小数解, x N = 0 x_N = 0 xN=0,那么就有 B − 1 b \mathbf{B}^{-1}\mathbf{b} B1b也为小数,那么就有 B − 1 b − ⌊ B − 1 b ⌋ > 0 \mathbf{B}^{-1}\mathbf{b} - \lfloor \mathbf{B}^{-1}\mathbf{b} \rfloor > 0 B1bB1b>0,而 x N = 0 x_N = 0 xN=0就导致不等式右边大于0,不等式左边等于0.不等式不成立。因此为了使不等式成立,就需要满足最终的解为不能有小数解。

实例

m a x z = 4 x 1 − x 2 s . t . { 7 x 1 − 2 x 2 ≤ 14 x 2 ≤ 3 2 x 1 − 2 x 2 ≤ 3 x 1 , x 2 ≥ 0 x ∈ Z n (整数限制) \begin{align*} max \quad &z = 4x_1 - x_2 \\ s.t. \quad & \begin{cases} 7x_1-2x_2 \leq 14 \\ x_2 \leq 3\\ 2x_1-2x_2 \leq 3\\ x_1,x_2 \geq 0\\ \mathbf{x} \in \mathbb{Z}^n \quad \text{(整数限制)} \end{cases} \\ \end{align*} maxs.t.z=4x1x2 7x12x214x232x12x23x1,x20xZn(整数限制)
可行域如下
在这里插入图片描述
求解松弛子问题1

m a x z = 4 x 1 − x 2 s . t . { 7 x 1 − 2 x 2 + x 3 = 14 x 2 + x 4 = 3 2 x 1 − 2 x 2 + x 5 = 3 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 \begin{align*} max \quad &z = 4x_1 - x_2 \\ s.t. \quad & \begin{cases} 7x_1-2x_2+x_3 = 14 \\ x_2 + x_4 = 3\\ 2x_1-2x_2 +x_5 = 3\\ x_1,x_2,x_3,x_4,x_5 \geq 0\\ \end{cases} \\ \end{align*} maxs.t.z=4x1x2 7x12x2+x3=14x2+x4=32x12x2+x5=3x1,x2,x3,x4,x50
求解得到

Optimal objective value: 8.428571428571429
x1: 2.857142857142857
x2: 3.0
x3: 0.0
x4: 0.0
x5: 3.2857142857142865

以x1,x2,x5作为基变量,对约束进行等价变换(把约束中基变量的系数矩阵变为单位阵),变换之后的问题如下
m a x z = 4 x 1 − x 2 s . t . { 1 x 1 + 0 x 2 + 1 7 x 3 + 2 7 x 4 + 0 x 5 = 20 7 0 x 1 + 1 x 2 + 0 x 3 + 1 x 4 + 0 x 5 = 3 0 x 1 + 0 x 2 − 2 7 x 3 + 10 7 x 4 + 1 x 5 = 23 7 x 1 , x 2 , x 3 , x 4 , x 5 ≥ 0 \begin{align*} max \quad &z = 4x_1 - x_2 \\ s.t. \quad & \begin{cases} 1x_1+0x_2+\frac{1}{7}x_3+\frac{2}{7}x_4+0x_5 = \frac{20}{7} \\ 0x_1+1x_2 +0x_3+ 1x_4+0x_5 = 3\\ 0x_1+0x_2 -\frac{2}{7}x_3+\frac{10}{7}x_4+1x_5 = \frac{23}{7}\\ x_1,x_2,x_3,x_4,x_5 \geq 0\\ \end{cases} \\ \end{align*} maxs.t.z=4x1x2 1x1+0x2+71x3+72x4+0x5=7200x1+1x2+0x3+1x4+0x5=30x1+0x272x3+710x4+1x5=723x1,x2,x3,x4,x50
选择第一个约束,构造得到割平面不等式 1 7 x 3 + 2 7 x 4 ≥ 6 7 \frac{1}{7}x_3+\frac{2}{7}x_4\geq\frac{6}{7} 71x3+72x476将这个约束化为标准形式 1 7 x 3 + 2 7 x 4 − s = 6 7 \frac{1}{7}x_3+\frac{2}{7}x_4-s = \frac{6}{7} 71x3+72x4s=76加入到原问题中得到子问题2。
m a x z = 4 x 1 − x 2 s . t . { 1 x 1 + 0 x 2 + 1 7 x 3 + 2 7 x 4 + 0 x 5 = 20 7 0 x 1 + 1 x 2 + 0 x 3 + 1 x 4 + 0 x 5 = 3 0 x 1 + 0 x 2 − 2 7 x 3 + 10 7 x 4 + 1 x 5 = 23 7 1 7 x 3 + 2 7 x 4 − s = 6 7 x 1 , x 2 , x 3 , x 4 , x 5 , s ≥ 0 \begin{align*} max \quad &z = 4x_1 - x_2 \\ s.t. \quad & \begin{cases} 1x_1+0x_2+\frac{1}{7}x_3+\frac{2}{7}x_4+0x_5 = \frac{20}{7} \\ 0x_1+1x_2 +0x_3+ 1x_4+0x_5 = 3\\ 0x_1+0x_2 -\frac{2}{7}x_3+\frac{10}{7}x_4+1x_5 = \frac{23}{7}\\ \frac{1}{7}x_3+\frac{2}{7}x_4-s = \frac{6}{7}\\ x_1,x_2,x_3,x_4,x_5,s \geq 0\\ \end{cases} \\ \end{align*} maxs.t.z=4x1x2 1x1+0x2+71x3+72x4+0x5=7200x1+1x2+0x3+1x4+0x5=30x1+0x272x3+710x4+1x5=72371x3+72x4s=76x1,x2,x3,x4,x5,s0
求解得到

Optimal objective value: 7.500000000000002
x1: 2.0000000000000004
x2: 0.5000000000000004
x3: 1.0000000000000004
x4: 2.4999999999999996
x5: 0.0
s: 0.0

选择x1,x2,x3,x4作为基变量,继续对约束进行等价变换。
变换之后的问题如下:

m a x z = 4 x 1 − x 2 s . t . { 1 x 1 + 0 x 2 + 0 x 3 + 0 x 4 + 0 x 5 + 1 s = 2 0 x 1 + 1 x 2 + 0 x 3 + 0 x 4 − 1 2 x 5 + 1 s = 1 2 0 x 1 + 0 x 2 + 1 x 3 + 0 x 4 − 1 x 5 − 5 s = 1 0 x 1 + 0 x 2 + 0 x 3 + 1 x 4 + 1 2 x 5 − 1 s = 5 2 x 1 , x 2 , x 3 , x 4 , x 5 , s ≥ 0 \begin{align*} max \quad &z = 4x_1 - x_2 \\ s.t. \quad & \begin{cases} 1x_1+0x_2+0x_3+0x_4+0x_5+1s = 2 \\ 0x_1+1x_2 +0x_3+ 0x_4-\frac{1}{2}x_5+1s = \frac{1}{2}\\ 0x_1+0x_2+1x_3+0x_4-1x_5-5s = 1\\ 0x_1+0x_2+0x_3+1x_4+\frac{1}{2}x_5-1s = \frac{5}{2}\\ x_1,x_2,x_3,x_4,x_5,s \geq 0\\ \end{cases} \\ \end{align*} maxs.t.z=4x1x2 1x1+0x2+0x3+0x4+0x5+1s=20x1+1x2+0x3+0x421x5+1s=210x1+0x2+1x3+0x41x55s=10x1+0x2+0x3+1x4+21x51s=25x1,x2,x3,x4,x5,s0
选择第二个继续构造不等式得到 1 2 x 5 ≥ 1 2 \frac{1}{2}x_5\geq\frac{1}{2} 21x521标准化之后为 1 2 x 5 − s 1 = 1 2 \frac{1}{2}x_5-s_1 = \frac{1}{2} 21x5s1=21加入到原问题中得到子问题3:
m a x z = 4 x 1 − x 2 s . t . { 1 x 1 + 0 x 2 + 0 x 3 + 0 x 4 + 0 x 5 + 1 s = 2 0 x 1 + 1 x 2 + 0 x 3 + 0 x 4 − 1 2 x 5 + 1 s = 1 2 0 x 1 + 0 x 2 + 1 x 3 + 0 x 4 − 1 x 5 − 5 s = 1 0 x 1 + 0 x 2 + 0 x 3 + 1 x 4 + 1 2 x 5 − 1 s = 5 2 1 2 x 5 − s 1 = 1 2 x 1 , x 2 , x 3 , x 4 , x 5 , s ≥ 0 \begin{align*} max \quad &z = 4x_1 - x_2 \\ s.t. \quad & \begin{cases} 1x_1+0x_2+0x_3+0x_4+0x_5+1s = 2 \\ 0x_1+1x_2 +0x_3+ 0x_4-\frac{1}{2}x_5+1s = \frac{1}{2}\\ 0x_1+0x_2+1x_3+0x_4-1x_5-5s = 1\\ 0x_1+0x_2+0x_3+1x_4+\frac{1}{2}x_5-1s = \frac{5}{2}\\ \frac{1}{2}x_5-s_1 = \frac{1}{2}\\ x_1,x_2,x_3,x_4,x_5,s \geq 0\\ \end{cases} \\ \end{align*} maxs.t.z=4x1x2 1x1+0x2+0x3+0x4+0x5+1s=20x1+1x2+0x3+0x421x5+1s=210x1+0x2+1x3+0x41x55s=10x1+0x2+0x3+1x4+21x51s=2521x5s1=21x1,x2,x3,x4,x5,s0
求解得到

Optimal objective value: 7.0
x1: 2.0
x2: 1.0
x3: 2.0
x4: 2.0
x5: 1.0
s: 0.0
s1: 0.0

得到了整数解。

博客中涉及到的代码

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能优化算法应用:基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于广义正态分布算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.广义正态分布算法4.实验参数设定…

Grafana二进制部署并配置prometheus数据源

1、获取grafna二进制安装包 https://grafana.com/grafana/download?pggraf&plcmtdeploy-box-1 grafana官网下载地址 [rootambari-hadoop1 ~]# cd /opt/module/grafana/ [rootambari-hadoop1 grafana]# pwd /opt/module/grafana2、在安装自己的安装目录执行 wget https:…

国漫风向标!2023年玄机科技斩获6项腾讯金鹅荣誉

12月16日,2023腾讯视频金鹅荣誉发布,玄机科技凭借其卓越的制作实力和市场认可度,斩获了6项大奖!这一荣誉的背后,是玄机科技无数次的创新与突破,也是对其不懈努力的肯定与鼓励。 玄机科技一直以其精良的制作…

半导体晶圆制造SAP:助力推动新时代科技创新

随着科技的迅猛发展,半导体行业成为了推动各行各业进步的重要力量。而半导体晶圆制造作为半导体产业链的核心环节,其效率和质量的提升对于整个行业的发展起着决定性的作用。在这个高度竞争的行业中,如何提升制造过程的效率、降低成本&#xf…

显示器屏幕oled的性能、使用场景、维护

OLED显示器屏幕具有许多独特的性能和使用场景,以下是关于OLED显示器屏幕的性能、使用场景和维护的详细介绍: 一、性能 色彩鲜艳:OLED显示器屏幕能够呈现出更加鲜艳的色彩,色彩饱和度高,色彩还原性好,可以给…

Linux命令指南

Linux上显示某个进程的线程方式 方法一&#xff1a;PS 在ps命令中&#xff0c;“-T”选项可以开启线程查看。下面的命令列出了由进程号为的进程创建的所有线程。 ps -T -p <pid>“SPID”栏表示线程ID&#xff0c;而“CMD”栏则显示了线程名称。 方法二&#xff1a; T…

【Python从入门到进阶】45、Scrapy框架核心组件介绍

接上篇《44、Scrapy的基本介绍和安装》 上一篇我们学习了Scrapy框架的基础介绍以及环境的搭建&#xff0c;本篇我们来学习一下Scrapy框架的核心组件的使用。 下面的核心组件的介绍&#xff0c;仍是基于这幅图的机制&#xff0c;大家可以再回顾一下&#xff1a; 注&#xff1a;…

2023年浙大城市学院新生程序设计竞赛(同步赛)G

登录—专业IT笔试面试备考平台_牛客网 题意 思路 首先想法非常单一&#xff0c;一定是去枚举操作点&#xff0c;然后看它染白和不染的价值差值 也就是说&#xff0c;把一个黑色结点染白之后&#xff0c;对哪些结点的价值会影响 不难想象其实就是操作结点的子树和该点连通的…

【C++】开源:FLTK图形界面库配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍FLTK图形界面库配置与使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0…

Kali Linux—借助 SET+MSF 进行网络钓鱼、生成木马、获主机shell、权限提升、远程监控、钓鱼邮件等完整渗透测试(二)

远控木马 SET 同时集成了木马生成工具&#xff0c;可以生成木马并调用MSF框架对远程主机进行控制。直接使用MSF生成木马并控制主机的可参考之前另一篇博文&#xff1a;渗透测试-Kali入侵Win7主机。 控制主机 1、运行 SET&#xff0c;选择创建攻击载荷和监听器&#xff1a; 2…

漏洞复现-红帆OA iorepsavexml.aspx文件上传漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

D3839|完全背包

完全背包&#xff1a; 首先01背包的滚动数组中的解法是内嵌的循环是从大到小遍历&#xff0c;为了保证每个物品仅被添加一次。 for(int i 0; i < weight.size(); i) { // 遍历物品for(int j bagWeight; j > weight[i]; j--) { // 遍历背包容量dp[j] max(dp[j], dp[j…

连接服务器出现内部错误的原因与解决方案

服务器作为重要的数据存储和处理中心&#xff0c;其稳定性和可靠性对于企业和个人的业务运营至关重要。然而&#xff0c;在实际应用中&#xff0c;我们经常会遇到连接服务器时出现内部错误的情况。根据用户反馈显示&#xff0c;远程桌面出现内部错误的问题由来已久&#xff0c;…

Kali Linux—借助 SET+MSF 进行网络钓鱼、生成木马、获主机shell、权限提升、远程监控、钓鱼邮件等完整渗透测试(一)

社会工程学—世界头号黑客凯文米特尼克在《欺骗的艺术》中曾提到&#xff0c;这是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段。 SET最常用的攻击方法有&#xff1a;用恶意附件对目标进行 E-mail 钓鱼攻击、Java Applet攻…

xp的viostor驱动无法获取磁盘序列号的分析

深信服的viostor驱动在获取序列号的时候&#xff0c;多了一个IDE处理的代码&#xff0c;位置在1128处。它会在刚开机加载viostor.sys时机被调用&#xff0c;然后去读取注册表HKLM\\SYSTEM\CurrentControlSet\Services\viostor\Parameters的IDESNCompat&#xff0c;若为1则有此功…

第十四节TypeScript 联合类型

1、简介 联合类型可以通过管道&#xff08;|&#xff09;将变量设置多种类型&#xff0c;赋值时可以根据设置的类型来赋值。 注意&#xff1a;只能赋值指定的类型&#xff0c;如果赋值其它类型就会报错的。 2、创建联合类型的语法格式&#xff1a; Type1|Type2|Type3 实例&a…

【PostGIS】PostgreSQL15+对应PostGIS安装教程及空间数据可视化

一、PostgreSQL15与对应PostGIS安装 PostgreSQL15安装&#xff1a;下载地址PostGIS安装&#xff1a;下载地址&#xff08;选择倒数第二个&#xff09; 1、PostgreSQL安装 下载安装包&#xff1b;开始安装&#xff0c;这里使用默认安装&#xff0c;一直next直到安装完成&…

小狐狸ChatGPT系统 不同老版本升级至新版数据库结构同步教程

最新版2.6.7下载&#xff1a;https://download.csdn.net/download/mo3408/88656497 小狐狸GPT付费体验系统如何升级&#xff0c;该系统更新比较频繁&#xff0c;也造成了特别有用户数据情况下升级时麻烦&#xff0c;特别针对会员关心的问题出一篇操作教程&#xff0c;本次教程…

WT2605C高品质音频蓝牙语音芯片:外接功放实现双声道DAC输出的优势

在音频处理领域&#xff0c;双声道DAC输出能够提供更为清晰、逼真的音效&#xff0c;增强用户的听觉体验。针对这一需求&#xff0c;唯创知音的WT2605C高品质音频蓝牙语音芯片&#xff0c;通过外接功放实现双声道DAC输出&#xff0c;展现出独特的应用优势。 一、高品质音频处理…

Java 并发编程(八)-异步编程-CompletableFuture

目录 一、异步编程 1、CompletableFuture应用 1.1、CompletableFuture介绍 1.2、CompletableFuture应用 1.2.1、supplyAsync 1.2.2、runAsync 1.2.3、thenApply&#xff0c;thenApplyAsync 1.2.4、thenAccept&#xff0c;thenAcceptAsync 1.2.5、thenRun&#xff0c;t…