【管理运筹学】第 5 章 | 整数规划 (2,割平面法及 0-1 变量的特性)

news2025/1/17 15:24:49

文章目录

  • 引言
  • 三、割平面法
  • 四、0-1 型整数规划
    • 4.1 0-1 变量的特性
      • 4.1.1 投资问题
      • 4.1.2 约束条件满足个数问题
  • 写在最后


引言

前文我们介绍了整数规划的一种求解方法——分支定界法,可以求解纯整数和混合整数规划问题。现在我们来学习另一种整数规划求解方法——割平面法。

接着,我们还会涉及到 0-1 整数规划的一些内容,是整数规划的一种特殊情形。


三、割平面法

割平面法是受整数规划几何解释的启发而形成的,根据前文的讨论,整数规划的最优解一定是在线性规划松弛问题的最优解附近。

在这里插入图片描述
那么,是否可以增加一些附加的约束,将松弛问题最优解附近不含整数解的可行域的多余部分分割来对最优解进行搜索呢?下面我们通过例子来感受割平面法的工作原理。

用割平面法求解下列整数规划问题。
在这里插入图片描述
解: 用单纯形法求解线性规划松弛问题,得到的最优单纯形表如下:

在这里插入图片描述

其松弛问题最优解为 ( x 1 = 3.75 , x 2 = 1.5 , z = 37.5 ) (x_1=3.75,x_2=1.5,z=37.5) (x1=3.75,x2=1.5,z=37.5) 。两个基变量均不满足整数要求。割平面通过加入割约束,来割除多余部分。加入割约束的方法为:

从非整数基变量对应的约束条件中任选一个。假定选取第二个,即 x 1 x_1 x1 在最优单纯性表中对应约束。该约束可表示为: x 1 + 0.125 x 3 + 0.375 x 4 = 3.75 x_1+0.125x_3+0.375x_4=3.75 x1+0.125x3+0.375x4=3.75 将上式所有非整数系数写成一个整数和纯正小数之和,即 x 1 + ( 0 + 0.125 ) x 3 + ( 0 + 0.375 x 4 ) = 3 + 0.75 x_1+(0+0.125)x_3+(0+0.375x_4)=3+0.75 x1+(0+0.125)x3+(0+0.375x4)=3+0.75 接着将所有整数项移到等式右边,小数项移到等式左边,可得: x 1 − 3 = 0.75 − 0.125 x 3 − 0.375 x 4 x_1-3=0.75-0.125x_3-0.375x_4 x13=0.750.125x30.375x4 上式,等式左端为整数,则右端也必须为整数。右端 x 3 , x 4 x_3,x_4 x3,x4 均为非负整数,要求等式右端为整数的话,则等式右端要小于等于 0 ,即 0.75 − 0.125 x 3 − 0.375 x 4 ≤ 0 0.75-0.125x_3-0.375x_4 \leq 0 0.750.125x30.375x40 整理即 − x 3 − 3 x 4 ≤ − 6 -x_3-3x_4 \leq -6 x33x46 。将其化为等式,添加到之前的最优单纯形表中,利用对偶单纯形法继续求解,得到最优整数解为 ( x 1 = 2 , x 2 = 3 , z = 34 ) (x_1=2,x_2=3,z=34) (x1=2,x2=3,z=34)

新加入的割约束方程不会割除任何整数解,即原问题的所有整数解都满足新增加的割约束。


四、0-1 型整数规划

0-1 型整数规划的变量 x i x_i xi 仅取值 0 或 1 。称 x i x_i xi 为 0-1 变量或二进制变量。这一条件可以用以下约束来代替: x i ≤ 1 , x i ≥ 0 , 整数 x_i \leq 1,x_i \geq0,整数 xi1,xi0,整数

4.1 0-1 变量的特性

面对实际问题中比如逻辑条件或顺序要求等特殊的约束条件,引入 0-1 变量可以非常巧妙地加以表示。下面讨论几个问题,大家就能感受到了。

4.1.1 投资问题

某投资公司可用于投资的资金总额为 b b b ,有若干个项目可供选择投资,假设其中第 j j j 个项目每年可获取利润 c j c_j cj ,所需要的资金是 a j a_j aj ,问如何建立模型来选定最佳组合的投资项目,以取得最佳利润。

这个问题是比较棘手的,但如果引入一个 0-1 变量,建模就变得较为直观和轻松了。因为每一种项目只有两种状态,因此,令 x j = 1 x_j=1 xj=1 表示投资了第 j j j 个项目, x j = 0 x_j=0 xj=0 表示不投资该项目。可列出如下规划模型:
在这里插入图片描述
0-1 变量还可以帮助我们满足现实投资问题中特殊的要求,如下列举了一些例子。

排斥需求—— 某几个项目(假设为第 1,4,5 个项目)中至多只能选一个,约束方程可以表示为 x 1 + x 4 + x 5 ≤ 1. x_1+x_4+x_5 \leq 1. x1+x4+x51.

优先级需求—— 选择了第 2 个项目时,才能考虑选择第 3 个项目,约束可表示为 x 3 ≤ x 2 . x_3 \leq x_2. x3x2. 同时选择了第 1,2 个项目时,才能考虑选择第 3 个项目,则约束方程可表示为 2 x 3 ≤ x 1 + x 2 . 2x_3 \leq x_1+x_2. 2x3x1+x2.

不可缺需求—— 第 3,4 个项目至少要有一个选择投资,则约束方程可表示为 x 3 + x 4 ≥ 1. x_3+x_4 \geq 1. x3+x41.

4.1.2 约束条件满足个数问题

用下式表示 p p p 个约束条件方程: ∑ j = 1 n a i j x j ≤ b i , i = 1 , 2 , … , p \sum_{j=1}^na_{ij}x_j \leq b_i,i=1,2,\dots,p j=1naijxjbi,i=1,2,,p y i y_i yi 为 0-1 变量,如果让第 i i i 个约束条件起作用,则 y i y_i yi 取 1 ,否则取 0 ,即有下式: ∑ j = 1 n a i j x j ≤ b i + ( 1 − y i ) M , i = 1 , 2 , … , p \sum_{j=1}^na_{ij}x_j \leq b_i+(1-y_i)M,i=1,2,\dots,p j=1naijxjbi+(1yi)M,i=1,2,,p 其中, M M M 是很大的整数。此时如何 y i y_i yi 为 0 ,则不等式右端为 b i + M b_i+M bi+M ,显然对任意 x x x 均满足,因此不具有约束力。

若要求必须满足 k k k 个约束条件,可添加条件 ∑ y i = k \sum y_i=k yi=k 。要求至少满足 k k k 个约束条件,可添加条件 ∑ y i ≥ k . \sum y_i \geq k. yik.


写在最后

后文将介绍 0-1 整数规划的解法,是比较重要的内容。

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

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

相关文章

【Java 动态数据统计图】动态数据统计思路案例(动态,排序,containsKey)五(117)

需求:前端根据后端的返回数据:画统计图; 1.动态获取地域数据以及数据中的平均值,按照平均值降序排序; 说明: X轴是动态的,有对应区域数据则展示; X轴 区域数据降序排序;…

CloudQuery:更好地管理你的 OceanBase 数据库

前言:作为 OceanBase 的生态合作伙伴,CloudQuery(简称“CQ”) 最新发布的社区版 2.2.0 新增了 OceanBase 数据库,为企业使用 OceanBase 数据库提供全面的支持。包括连接与认证、查询与分析、数据安全与权限管理&#x…

同伦问题与同伦算法

同伦问题 据我所知,这篇博客是CSDN上少数几篇讲同伦算法的博客之一考虑同伦算法的目的 扩大初值选取范围解决非线性代数方程组的全部解计算问题 同伦算法中的基本概念 考虑求的解人为地引入参数t,构造一个函数族使得 同时假设的解已知,从出发可以求解对…

Matplotlib数据可视化(三)

目录 1.绘图的填充 1.1 曲线下方区域的填充 1.2 填充部分区域 1.3 两条曲线之间的区域填充 1.4 直接使用fill进行填充 1.绘图的填充 绘图的填充可以调用fill_between()或fill()进行填充。 1.1 曲线下方区域的填充 x np.linspace(0,1,500) y np.sin(3*np.pi*x)*np.exp…

Python功能制作之3D方块

介绍 用python写一个黑窗口,窗口里面有一个白色的3D方块,左键按下后移动可以旋转以各个视角来看方块。 当然有需要的话,可以自己在代码中去更改颜色,直接通过RBG的参数进行更改即可。 做了两个函数:init[初始化]和d…

坦克大战-kotlin

坦克大战 游戏需求👇核心玩法👇👇界面原型👇👇成品演示👇 游戏开发1.代码实现 源码下载 专栏简介 💒个人主页 📰专栏目录 点击上方查看更多内容 📖心灵鸡汤&#x1…

<CodeGeeX>基于大模型的全能AI编程助手

CodeGeex官网 智谱AI官网 CodeGeex是由清华大学 KEG 实验室和智谱 AI 公司于2023共同训练的代码生成模型 CodeGeeX 开发的AI助手。它基于深度学习技术,能够针对用户的问题和要求提供适当的答复和支持。CodeGeex的功能包括代码生成、自动添加注释、代码翻译以及智能问…

Unity制作一个简单的登入注册页面

1.创建Canvas组件 首先我们创建一个Canvas画布,我们再在Canvas画布底下创建一个空物体,取名为Resgister。把空物体的锚点设置为全屏撑开。 2.我们在Resgister空物体底下创建一个Image组件,改名为bg。我们也把它 的锚点设置为全屏撑开状态。接…

看完这篇文章,被这个学习技巧狠狠吸引了!

思政课程的学习不仅仅是课堂知识的传授,更是培养学生全面发展和积极参与社会的能力的过程。学生应该认真学习思政课程,积极思考,结合自己的实际情况,形成独立的思考和判断。 通过思政通学习小程序的多样化知识,学生可以…

剑指Offer37.序列化二叉树 C++

1、题目描述 请实现两个函数,分别用来序列化和反序列化二叉树。你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结…

利用css动画和定时器setTimeout,实现上传图片进度条

思路 利用css动画和js定时器&#xff08;setTimeout&#xff09;&#xff0c;实现简单的进度条。 优势 不使用 setInterval&#xff0c;减少js代码量&#xff0c;业务代码更加简洁。 示意图 上传中上传成功上传失败 代码 html <!-- img-wrap有两种状态&#xff1a;u…

【O2O领域】Axure外卖订餐骑手端APP原型图,外卖配送原型设计图

作品概况 页面数量&#xff1a;共 110 页 兼容软件&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;外卖配送、生鲜配送 作品申明&#xff1a;页面内容仅用于功能演示&#xff0c;无实际功能 作品特色 本品为外卖订餐骑手端APP原型设计图&#x…

以太网(一):PoE供电

一、定义&#xff1a; PoE系统包括供电端设备&#xff08;PSE&#xff09;和受电端设备&#xff08;PD&#xff09;两部分PoE&#xff08;Power over Ethernet&#xff09;&#xff1a;​是一种可以在以太网中透过双绞线来传输电力与数据到设备上的技术PSE&#xff08;Power S…

ROS局部路径规划器插件teb_local_planner规划流程概括总结

本部分文章主要用于对ROS局部路径规划器插件teb_local_planner的规划流程进行梳理&#xff0c;并概括总结&#xff0c;本部分计划包含5~6篇文章&#xff0c;各文章主要内容如下&#xff1a; ☆第一篇&#xff1a;主要介绍ROS导航包Navigation中的 Movebase节点中的路径规划的相…

1000元到3000元预算的阿里云服务器配置大全

1000元、2000元或3000元预算能够买的阿里云服务器配置有哪些&#xff1f;可以选择ECS通用算力型u1云服务器、ECS计算型c7或通用型g7实例规格&#xff0c;当然&#xff0c;如果选择轻量应用服务器的话&#xff0c;更省钱&#xff0c;阿里云百科分享1000-3000元预算能买的阿里云服…

敏捷项目管理解决方案

Leangoo领歌是一款永久免费的专业敏捷研发管理工具&#xff0c;提供敏捷研发解决方案&#xff0c;解决研发痛点&#xff0c;打造成功产品。帮助团队实现需求、迭代、缺陷、任务、测试、发布等全方位研发管理。 敏捷产品路线图管理&#xff1a; 产品路线图是一个高层次的战略计…

Android 9.0 Vold挂载流程解析(下)

Android 9.0 Vold挂载流程解析&#xff08;上&#xff09; 前言 上一篇介绍了Android 文件系统中Vold挂载机制的总体框架&#xff0c;我们分析了vod进程的main.cpp.接下来我们分析下存储卡挂载和卸载的流程。 存储卡挂载 在上篇文章文章提到&#xff0c;监听驱动层挂载和卸…

SOLIDWORKS 2023中装配体配合的正确使用方法 硕迪科技

-SOLIDWORKS 装配体打开时是由不同的阶段和性能检查组成的。如果在创建装配体时未应用基本的配合方法&#xff0c;问题会随着时间的推移而累积&#xff0c;并且在使用时会出现明显的速度减慢。 如果您的装配体运行速度很慢&#xff0c;则很可能是在创建配合时出现了不良操作的症…

腾讯云 CODING 荣获 TiD 质量竞争力大会 2023 软件研发优秀案例

点击链接了解详情 8 月 13-16 日&#xff0c;由中关村智联软件服务业质量创新联盟主办的第十届 TiD 2023 质量竞争力大会在北京国家会议中心召开。本次大会以“聚焦数字化转型 探索智能软件研发”为主题&#xff0c;聚焦智能化测试工程、数据要素、元宇宙、数字化转型、产融合作…

Python入门--变量

变量是指在程序运行期间可以改变其值的数据类型。在Python中&#xff0c;变量可以指定任何数据类型&#xff0c;如字符串、整数、浮点数等。 要创建一个变量&#xff0c;我们必须先指定变量的名称&#xff0c;然后将其赋值。在Python中&#xff0c;变量名可以是任何有意义的名…