【管理运筹学】第 5 章 | 整数规划 (3,隐枚举法计算步骤)

news2024/11/24 7:00:39

文章目录

  • 引言
  • 四、0-1 整数规划
    • 4.2 0-1 整数规划的解法
      • 4.2.1 0-1 规划模型标准型
      • 4.2.2 隐枚举法计算步骤
  • 写在最后


引言

经过前文,了解以及体会到 0-1 变量的特性后,我们来研究该如何去求解这类特殊的 0-1 整数规划模型。


四、0-1 整数规划

4.2 0-1 整数规划的解法

既然是整数规划,那么所有可行解的数量便是有限的,全枚举法便是一种算法。检查每个变量取 0 或 1 的所有组合,满足所有约束条件并使得目标函数最优的组合就是 0-1 整数规划的最优解。

若 0-1 变量有 n 个,需要检查 2 n 2^n 2n 个变量组合。当 n n n 数量较大时,想要靠全部列举出来,几乎是不可能的。

下面介绍一种隐枚举法,只要检查全部变量组合的一部分组合就可以求出最优解,这有点像前面讲过的分支定界法。

4.2.1 0-1 规划模型标准型

首先,要应用隐枚举法进行求解,必须将原模型化为如下标准型。

在这里插入图片描述

其中, c j ≥ 0 c_j \geq 0 cj0 b i b_i bi 可以是正数、负数或 0 ,所有约束条件必须是 ” ≤ ” ”\leq ” 型。

和平常的标准型有一些不同,不用化成等式,右端可以是负数,但是必须是求最小。

如果所给的模型不是标准形式,可以通过如下方法进行变换。

  1. 如果目标函数求最大,可将目标函数乘 -1 。
  2. 如果变量 x j x_j xj 对应的目标函数系数 c j ≤ 0 c_j \leq 0 cj0 ,可以用 ( 1 − x j ) (1-x_j) (1xj) 替换 x j x_j xj ,最后记得还原结果。
  3. 如果约束条件为 “ ≥ ” “\geq” 形式,将其乘上 -1 。
  4. 如果约束条件为 “ = ” “=” = 形式,将其变为一个 " ≥ " "\geq" "" 和一个 " ≤ " "\leq" "" ,将前者乘以 -1 。

4.2.2 隐枚举法计算步骤

隐枚举法首先令全部变量为 0 ,检验解是否可行。若可行, z = 0 z=0 z=0 ,已取得最优解;若不可行,则令一个变量取值为 0 或 1 ,称为固定变量。固定变量每一个值对应一个子问题,可将问题分为两个子域,其余未被指定取值的变量称为自由变量。

根据标准型要求,这些自由变量的系数均为非负,令所有自由变量为 0 ,加上固定变量的取值,组合该子域的解。经过检验,或停止分支,或继续指定固定变量,直至没有自由变量或全部子域停止分支为止。

其流程图如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
由于第 3,4,5,均有停止分支的情况,对于这些子域自由变量取 0 或 1 值的所有可能组合都被隐含地考虑了,不必再一一列举。所以这种方法称为隐枚举法,可大大减少计算量。

同时,实际解题中,指定固定变量时,可优先指定目标函数系数最小的变量,加快计算速度。


写在最后

隐枚举法求解过程还是相对复杂和繁琐些,对待每一步都需要理清思路和逻辑。下篇文章我们来学习指派问题的相关内容。

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

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

相关文章

【Maven教程】(二)安装配置篇:手把手教你安装及配置Maven环境~

Maven安装配置篇 1️⃣ 在 Windows 上安装 Maven1.1 下载及安装 Maven1.2 升级 Maven 2️⃣ 在基于UNIX 的系统上安装 Maven2.1 下载和安装2.2 升级 Maven2.3 安装目录分析2.4 设置 HTTP 代理 3️⃣ 在 IDE中安装Maven插件 1️⃣ 在 Windows 上安装 Maven 在安装 Maven 之前&a…

【面试专题】Java核心基础篇②

📃个人主页:个人主页 🔥系列专栏:Java面试专题 目录 1.接口和抽象类有什么区别? 2.两个对象的 hashCode() 相同,则 equals()也一定为 true,对吗? 3.说一说hashCode()和equals()的…

一般文章让你了解mybatis,以及如今在Java开发的地位!

一.了解mybatis! A.什么是mybatis? MyBatis是一个开源的持久层框架,它简化了在Java应用程序中使用关系型数据库的开发工作。MyBatis提供了将SQL语句和Java代码进行解耦的能力,使得应用程序可以通过简单的配置来访问数据库&#x…

【AI视频教程】只需5步,AI作出鸡你太美视频

1.视频效果 黄昏见证虔诚的信徒 2.准备工作 制作视频效果,需要准备下面3个条件: 准备stable diffusion的环境剪辑一段【鸡你太美】原版视频stable diffusion安装sd-webui-IS-NET-pro插件 2.1部署stable diffusion环境 部署步骤参考制作ikun图片的文章…

软件开发中常用数据结构介绍:C语言队列

工作之余来写写C语言相关知识,以免忘记。今天就来聊聊C语言实现循环队列,我是分享人M哥,目前从事车载控制器的软件开发及测试工作。 学习过程中如有任何疑问,可底下评论! 如果觉得文章内容在工作学习中有帮助到你&…

基于springboot+vue的考研资讯平台(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

Python中Setup.py的作用是什么

Python中Setup.py的作用是什么 今天就跟大家聊聊有关Python中Setup.py的作用是什么,可能很多人都不太了解,为了让大家更加了解. 1. 为什么需要对项目分发打包? 平常我们习惯了使用 pip 来安装一些第三方模块,这个安装过程之所以简单&#…

高项4.项目管理核心技术.

第一部分 项目管理概论 价值驱动的项目管理知识体系: 十二项原则;生命周期四个阶段;五个过程组;十大PM知识领域;八大绩效域;外加价值交付系统; 自1987 年以来, PMBOK 一直是基于过程的项目管理标准的重要代表,项目管理从业者一 直坚持基于过程的项目管理方法。随着…

用python从零开始做一个最简单的小说爬虫带GUI界面(1/3)

目录 前言 三节博客内容概要 PyQt5的配置 设置软件的快捷启动方式 1. 用于设计界面的程序 2. 将Qt Designer设计出来的ui文件转化为py文件 3. 可以把py文件打包成可执行的exe文件 4. 将ico图片放在qrc文件中,再将qrc文件转换成py…

Axios跨域请求处理

问题背景: vue 项目用 axios 进行请求的时候,总是报“Access to XMLHttpRequest at ‘http://localhost:8889/api/login’ from origin ‘http://localhost:8080……’”的错误 实际上就是前后端分离的情况下,发生了跨域的问题 跨域定义&…

AWS SDK 3.x for .NET Framework 4.0 可行性测试

前言 为了应对日益增长的网络安全挑战, 越来越多的互联网厂商已经陆续开始或者已经彻底停止了对 SSL 3 / TLS 1.0 / TLS1.1 等上古加密算法的支持. 而对于一些同样拥有悠久历史的和 AWS 服务相关联的应用程序, 是否可以通过仅更新 SDK 版本的方式来适应新的环境. 本文将以 Win…

PyTorch模型性能分析与优化

动动发财的小手,点个赞吧! 训练深度学习模型,尤其是大型模型,可能是一项昂贵的支出。我们可以使用的管理这些成本的主要方法之一是性能优化。性能优化是一个迭代过程,我们不断寻找提高应用程序性能的机会,然…

基于Java+SpringBoot+vue前后端分离在线动漫信息系统设计实现

基于JavaSpringBootvue前后端分离在线动漫信息系统设计实现(程序源码毕业论文) 大家好,今天给大家介绍基于JavaSpringBootvue前后端分离在线动漫信息系统设计与实现,本论文只截取部分文章重点,文章末尾附有本毕业设计完…

基于单片机串口控制直流电机调速

一、系统方案 (2)本设计采用STC89C5单片机作为主控器,串口控制直流电机调速,串口助手发送1-8,改变电机速度,数码管显示对应速度。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 TMOD0x21;//定…

Linux学习之ssh和scp

ls /etc/ssh可以看到这个目录下有一些文件,而/etc/ssh/ssh_config是客户端配置文件,/etc/ssh/sshd_config是服务端配置文件。 cat -n /etc/ssh/sshd_config | grep "Port "可以看一下sshd监听端口的配置信息,发现这个配置端口是22…

代码随想录算法训练营之JAVA|第三十三天|738. 单调递增的数字

今天是第33天刷leetcode,立个flag,打卡60天,如果做不到,完成一件评论区点赞最高的挑战。 算法挑战链接 738. 单调递增的数字https://leetcode.cn/problems/monotone-increasing-digits/ 第一想法 题目理解:找到一个…

2023国赛数学建模B题思路模型代码 高教社杯

本次比赛我们将会全程更新思路模型及代码,大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社…

C++进阶 类型转换

本文简介:介绍C中类型转换的方式 类型转换 C语言中的类型转换为什么C需要四种类型转换C强制类型转换static_castreinterpret_castconst_castdynamic_cast RTTI(了解)总结 C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型…

数据同步后数据总条数对不上的问题解决

文章目录 [toc] 1.问题2.解决办法2.1)设置合理的线程池参数2.2)设置url连接参数2.3) 优化msql的系统参数2.4)使用CountDownLatch减法计数器和数据插入的公共方法新开一个事务2.5)sql批量注入器执行成功后,当前线程slee…

蛊卦-拨乱反正

目录 前言 卦辞 爻辞 总结 前言 题外话,今天占卜时,看错了,以为占到了蛊卦(后续会对自己的占卦经历进行补充,不断完善这个易经学习的专栏),那顺便就学习一下蛊卦,蛊惑人心&#…