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

文章目录

  • 引言
  • 三、割平面法
  • 四、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.mzph.cn/news/49976.shtml

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

相关文章

Java 中使用 ES 高级客户端库 RestHighLevelClient 清理百万级规模历史数据

🎉工作中遇到这样一个需求场景:由于ES数据库中历史数据过多,占用太多的磁盘空间,需要定期地进行清理,在一定程度上可以释放磁盘空间,减轻磁盘空间压力。 🎈在经过调研之后发现,某服务…

MyBatid动态语句且模糊查询

目录 什么是MyBtais动态语句??? MyBatis常用的动态标签和表达式 if标签 Choose标签 where标签 MyBatis模糊查询 #与$的区别 ​编辑 MyBatis映射 resultType resultMap 什么是MyBtais动态语句???…

视频转音频mp3怎么弄?

视频转音频mp3怎么弄?在很多人看来,音频就是视频中的一部分,其实这时是一定道理的,视频是一种包含图像和有声音的多媒体文件,没有声音的视频是不完美的。时代发展到现在,短视频已经融入了我们生活的方方面面…

【日常积累】Linux中vi/vim的使用

概述 vim是由vi发展演变过来的文本编辑器,因其具有语法高亮显示、多视窗编辑、代码折叠、支持插件等功能,由于其功能相比vi来说更加强大,所以在实际工作中的使用更加广泛。 vim工作模式 Vim具有多种工作模式,常用的工作模式有&…

微服务架构2.0--云原生时代

云原生 云原生(Cloud Native)是一种关注于在云环境中构建、部署和管理应用程序的方法和理念。云原生应用能够最大程度地利用云计算基础设施的优势,如弹性、自动化、可伸缩性和高可用性。这个概念涵盖了许多方面,包括架构、开发、…

Prometheus+Grafana+AlertManager监控Linux主机状态

文章目录 PrometheusGrafanaAlertManager监控平台搭建开始监控Grafana连接Prometheus数据源导入Grafana模板监控Linux主机状态 同系列文章 PrometheusGrafanaAlertManager监控平台搭建 Docker搭建并配置Prometheus Docker拉取并配置Grafana Docker安装并配置Node-Exporter …

Python系统学习1-9-类三之特征

一、封装 数据角度:将一些基本数据类型复合成一个自定义类型。 优势:将数据与对数据的操作相关联。 代码可读性更高(类是对象的模板)。 行为角度:向类外提供必要的功能,隐藏实现的细节。 优势&#xff…

【VRTK4.0运动专题】手柄控制物体移动和旋转

文章目录 原理预设体将两轴转化为位置向量或角度后,调用运动脚本的方法,对指定的物体进行移动或旋转 步骤1、将轴转化为位置向量或角度: 建轴转化预设体,关联两轴,2、准备带有要用方法的运动脚本: 建功能物…

在线图片怎么转换成PDF?在线图片转换成PDF步骤介绍

文件格式要转化不知道怎么办?想要网上下载文件格式转换软件,但是却不知道下载哪个好?今天小编小编就给大家分享一下靠谱的小圆象PDF转换器工具,想知道这款软件好不好用?在线图片怎么转换成PDF?那就进来看看吧。 在线图片怎么转换成PDF 小圆象PDF转换…

requests模板成功下载,但是不能在pycharm中运行

在做实验的过程中,需要用到requests,但是在pycharm中成功下载,仍然无法使用,找了很久,解决方法如下: 进入win中的命令提示符 下载requests模块 pip install requests输入python显示你的python的基本信息&…

什么是软件压力测试?软件压力测试工具和流程有哪些?

软件压力测试 一、含义:软件压力测试是一种测试应用程序性能的方法,通过模拟大量用户并发访问,测试应用程序在压力情况下的表现和响应能力。软件压力测试的目的是发现系统潜在的问题,如内存泄漏、线程锁、资源泄漏等,…

基于灵动微MM32F3270微控制器的监护仪

监护仪是各类医用电子仪器中应用极为普遍的一种。监护仪不仅可以提高护理工作的效率,更重要的是,它为更全面、更准确的掌握患者病情,提高医疗服务质量提供了更可靠的保障。 基于灵动微MM32F3270微控制器的监护仪: -信号采集&…

Fabric.js 元素选中状态的事件与样式

本文简介 带尬猴! 你是否在使用 Fabric.js 时希望能在选中元素后自定义元素样式或选框(控制角和辅助线)的样式? 如果是的话,可以放心往下读。 本文将手把脚和你一起过一遍 Fabric.js 在对象元素选中后常用的样式设置…

Java IO流(五)Netty实战[TCP|Http|心跳检测|Websocket]

Netty入门代码示例(基于TCP服务) Server端 package com.bierce.io.netty.simple; import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGro…

激活函数总结(十七):激活函数补充(PELU、Phish)

激活函数总结(十七):激活函数补充 1 引言2 激活函数2.1 Parametric Exponential Linear Unit(PELU)激活函数2.2 Phish激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、…

自平衡性:保持数据结构稳定的关键

自平衡性是一种重要的数据结构属性,它确保在执行插入、删除等操作后,数据结构能够自动进行调整,以保持整体的平衡状态。平衡的数据结构可以提供更快的操作性能,避免极端情况下的低效操作,同时保持树或其他结构的整体稳…

Idea Maven 构建,运行Java程序,二次开发Jmeter

Idea Maven 构建 1. maven下载2. Idea 配置3. 配置Maven镜像4. 在Maven项目pom.xml中添加依赖5. 创建jar包,更新pom,执行代码 1. maven下载 【官网】https://maven.apache.org/download.cgi 【其他版本】https://dlcdn.apache.org/maven/maven-3/ 2. …

KubeSphere 社区双周报 | Java functions framework 支持 SkyWalking | 2023.8.4-8.17

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2023.08.04-2023.…

Vant 4.6.4发布,增加了一些新功能,并修复了一些bug

导读Vant 4.6.4发布,增加了一些新功能,并修复了一些bug等。 新功能 feat(area-data): 更新芜湖的县区数据,由 nivin-studio 在 #12122 中贡献feat(Locale): 添加塞尔维亚语到国际化,由 RogerZXY 在 #12145 中贡献feat(ImagePreview): 添加 c…

matlab使用教程(22)—非线性优化函数的设置

1.设置优化选项 可以使用由 optimset 函数创建的 options 结构体来指定优化参数。然后,可以将 options 作为输入传递给优化函数,例如,通过使用以下语法调用 fminbnd x fminbnd(fun,x1,x2,options) 或使用以下语法调用 fminsearch x f…