运筹学_4.整数规划

文章目录

  • 引言
  • 4.1 分枝定界方法求解整数规划问题
    • 整数规划的分类
    • 整数规划解法概述
    • 分支定界法
  • 4.2 0-1整数规划
    • 0-1整数规划的数学模型
    • 隐枚举法求解0-1规划问题
  • 4.3 指派问题(分配问题)的匈牙利解法
    • 指派问题的数学模型
    • 指派问题的匈牙利解法

引言

规划中的决策变量(全部或部分)限制为整数,称为整数规划。根据变量的取值性质,又可以分为全整数规划,混合整数规划,0-1整数规划等。在整数规划中,如果所有变量都限制为整数,则称为纯整数规划;如果仅一部分变量限制为整数,则称为混合整数规划。整数规划的一种特殊情形是0-1规划,它的决策变量仅限于0或1。整数规划是数学规划中一个较弱的分支,目前只能解决中等规模的线性整数规划问题,而非线性整数规划问题,还没有好的办法。同时不同于前面的线性规划问题,整数规划和0-1规划问题至今尚未找到一般的多项式解法。

4.1 分枝定界方法求解整数规划问题

整数规划的分类

整数规划是决策变量部分或全部取整数的规划问题,有以下分类:

  • 整数线性规划(ILP)
    目标函数:线性
    约束条件:都是线性的
    决策变量:都是整数变量

  • 混合整数线性规划(MILP)
    目标函数:线性
    约束条件:都是线性的
    决策变量:包含两种类型 ①连续变量(可以取任意实数值)②整数变量(只能取整数值,通常包括二进制变量,即0或1)

  • 整数非线性规划(INLP)
    目标函数:非线性
    约束条件:可以是线性或非线性的
    决策变量:都是整数变量

  • 混合整数非线性规划(MINLP)
    目标函数:非线性的
    约束条件:可以是线性或非线性的
    决策变量:包含两种类型 ①连续变量(可以取任意实数值)②整数变量(只能取整数值,通常包括二进制变量,即0或1)

整数规划解法概述

  • 当人们开始接触整数规划问题时,常会有如下两种初始想法:因为可行方案数目有限,因此经过一一比较后,总能求出最好方案。仅限于决策变量很少的情况,一旦决策变量增多,无法求解
  • 先放弃变量的整数性要求,解一个线性规划问题,然后用“四舍五入”法取整数解,这种方法,只有在变量的取值很大时,才有成功的可能性,而当变量的取值较小时,特别是0-1规划时,往往不能成功。

分支定界法

  • 原问题的松驰问题:任何整数规划(IP),凡放弃某些约束条件(如整数要求)后,所得到的问题(P)都称为(IP)的松驰问题
    最通常的松驰问题是放弃变量的整数性要求后,(P)成为线性规划问题。

  • 分支定界法步骤:
    求解原问题对应的松驰问题,可能会出现下面几种情况

    • 若所得的最优解的各分量恰好是整数,则这个解也是原整数规划的最优解,计算结束
    • 若松驰问题无可行解,则原整数规划问题也无可行解,计算结束
    • 若松驰问题有最优解,但其各分量不全是整数,则这个解不是原整数规划的最优解,转下一步
      • 分支:从不满足整数条件的基变量中任选一个xl进行分枝,它必须满足 x 1 ≤ [ x 1 ] x_1≤[x_1] x1[x1] x 1 ≥ [ x 1 ] + 1 x_1≥[x_1]+1 x1[x1]+1中([ ]表示取整)的一个,把这两个约束条件加进原问题中,形成两个互不相容的子问题(两分法)
      • 定界:把满足整数条件各分枝的最优目标函数值作为上(下)界,用它来判断分枝是保留还是剪枝
      • 剪枝:把那些子问题的最优值与界值比较,凡不优或不能更优的分枝全剪掉,直到每个分枝都查清为止
  • 例子
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4.2 0-1整数规划

0-1整数规划的数学模型

在这里插入图片描述

隐枚举法求解0-1规划问题

在这里插入图片描述

4.3 指派问题(分配问题)的匈牙利解法

指派问题的数学模型

  • 定义
    有n项不同任务,恰好分配n个人分别完成,每个人完成各项任务的效率不同;现假设必须指派每一人去完成一项任务,需考虑怎样把n项任务指派给n个人,使得完成n项任务的总的效率最高,这就是指派问题

指派问题的匈牙利解法

数学建模(四)整数规划—匈牙利算法

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

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

相关文章

个人开发者能用TensorFlow做什么

个人开发者可以使用 TensorFlow 实现许多有趣且有用的机器学习和深度学习项目。以下是一些具体的应用和项目示例: 1. 图像处理 图像分类:训练一个模型将图片分类到不同类别,如猫和狗的分类。物体检测:检测图像中的多个对象及其位…

【备战蓝桥杯】蓝桥杯省一笔记:算法模板笔记(Java)

蓝桥杯 0、快读快写模板1、回文判定2、前缀和3、差分4、二分查找5、快速幂6、判断素数7、gcd&lcm8、进制转换9、位运算10、字符串常用API11、n的所有质因子12、n的质因子个数13、n的约数个数14、n阶乘的约数个数15、n的约数和16、阶乘 & 双阶乘17、自定义升序降序18、动…

2024盘古石初赛(服务器部分)

赛后总结 这次初赛就有20道服务器部分赛题,做的情况一般,错了5道题这样,主要原因就是出在第二个网站服务器没有重构起来 今天来复现一下 这次的服务器部分我直接用仿真仿起来就开找了 第一台IM前期配置 先把网配置好,然后ssh…

C++常用算法函数

1、排序 &#xff1a;std::sort #include <algorithm> #include <vector>std::vector<int> v {4, 2, 5, 3, 1}; std::sort(v.begin(), v.end()); // 将v中的元素按升序排序2、查找: std::find #include <algorithm> #include <vector>std::ve…

如此简单,一文带你玩转接口自动化上(Python + Pytest + Requests + Allure )

一. 前言 哈喽大伙们好&#xff0c;好久不见距离上次更新博客已经有一年之久了&#xff0c;这将近一年的时间小编主要的时间都花在了实习和24届校招上面了&#xff0c;最终也是收获满满&#xff0c;选择了一个还不错的offer&#xff0c;感谢一路走来的自己和身边朋友的帮助&…

基于Three.js实现的3D立方体动画

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 基于Three.js实现的3D立方体动画 应用场景 该代码段适用于需要在网页中创建交互式3D场景的场景。例如&#xff0c;可以用于展示产品、创建游戏或制作视觉效果。 基本功能 此代码段使用Three.js库创建了一个…

汽车企业如何通过神秘顾客调查确保销售服务规范

在当今竞争激烈的汽车市场&#xff0c;购车体验已成为消费者选择品牌的重要考量因素。为了确保汽车门店的销售服务符合规范&#xff0c;许多汽车企业开始采用神秘顾客调查这一策略。 那么&#xff0c;汽车企业在进行神秘顾客调查时&#xff0c;应该从那些方面着手才能保证调查…

【机器学习】随机森林:深度解析与应用实践

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 随机森林&#xff1a;深度解析与应用实践引言1. 随机森林基础1.1 什么是随机森林…

Android更新优化 - 增量更新是如何节省用户时间和流量的

增量更新和全量更新 我想玩过大型手游的人都知道&#xff0c;手游的安装包非常大&#xff0c;因为资源图片众多。而你每次更新都把所有文件都更新下来&#xff0c;是非常耗时的&#xff0c;对吧。耗时是一个方面&#xff0c;有些人在户外开的是移动网络&#xff0c;动不动就几…

计算机组成原理·海明编码及其实验

前言&#xff1a;海明编码这一块在刚开始的时候没有弄懂&#xff0c;后面通过做实验、复习慢慢摸清了门道。在学习计算机组成原理的过程中&#xff0c;实验实践是很重要的&#xff0c;它会让你去搞清楚事情背后的原理&#xff0c;逼着你学会你没听懂的东西。这篇文章会从海明码…

Check Point 安全网关任意文件读取漏洞复现(CVE-2024-24919)

Check Point 安全网关任意文件读取漏洞复现(CVE-2024-24919) 1.漏洞描述 Check Point Security Gateways 是 Check Point Sofware 提供的一系列 网络安全Q解决方案。这些解决方案包括下一代防火墙(NGFW)、数据中心安全网关和 A1驱动的量子网关&#xff0c;旨在为企业提供针对…

@Value 读取环境变量配置

在项目开发过程中&#xff0c;有必要使用一些灰色规则&#xff08;即仅用于开发使用过程中的逻辑控制变量&#xff09;。 比如&#xff0c;本地开发中&#xff0c;一些业务逻辑需要调用第三方代码&#xff0c;但又在本地调不通&#xff0c;怎么办。只能通过 if(本地开发) {mock…

JavaScript基础知识1(引入方式、注释、输入输出、变量、数组)

JavaScript基础知识1&#xff08;引入方式、注释、输入输出、变量、数组&#xff09; javascript 引入方式内部方式外部形式 注释和结束符单行注释多行注释 结束符 输入和输出输出输入 alert(你好JS);document.write(js我来了);console.log(看看对不对);prompt(输入您的姓名&am…

cxgrid列内容居中

笑掉大牙&#xff0c;需要这个功能了&#xff0c;找遍了全网&#xff0c;没有一个可用的成功案例&#xff0c;唯一可用的就是表中添加字段&#xff0c;然后选择properties然后选择对齐方式&#xff0c;根本不实用&#xff0c;因为列都是动态生成的&#xff0c;不可能提前做好所…

【开源】渔具租赁系统 JAVA+Vue.js+SpringBoot+MySQL

目录 一、项目介绍 1.1渔具档案模块 1.2渔具租赁模块 1.3渔具归还模块 1.4在线留言模块 二、项目截图 三、核心代码 一、项目介绍 Vue.jsSpringBoot前后端分离新手入门项目《渔具租赁系统》&#xff0c;包括渔具档案模块、渔具租赁模块、渔具归还模块、在线留言模块和部…

当新媒体运营开始说真话,这些道理你真的懂么?沈阳新媒体运营培训

运营新人&#xff0c;尤其是刚毕业、啥都不会的大学生&#xff0c;一定要认清的现实就是&#xff1a;虽然新媒体运营这个岗位门槛比较低&#xff0c;薪资也比较香&#xff0c;但绝不是养老型的工作。 平时大家还是很忙的&#xff0c;所以一定要摒弃学生思维&#xff0c;千万别…

【数据分析】打造完美数据分析环境:Python开发环境搭建全攻略

打造完美数据分析环境&#xff1a;Python开发环境搭建全攻略 在数据分析的世界中&#xff0c;搭建一个稳定且高效的Python开发环境是至关重要的。本文将介绍三种主要的环境搭建方式&#xff1a;使用pip、Anaconda和Miniconda。 1. 使用pip从清华镜像安装Python包 pip是Pytho…

02--nginx代理缓存

前言&#xff1a;比较常用的用法反向代理&#xff0c;和缓存的一些操作&#xff0c;用虚拟环境复刻出来&#xff0c;里面参数不用详细记录&#xff0c;用作复习&#xff0c;使用时直接查找即可。环境搭建过程参考前一篇文章nginx基础。 1、基础环境 IP角色作用192.168.189.143…

编译安装gcc-11及可能遇到的bug

编译安装脚本 GCC_VERSION11.1.0 PACKAGE_DIR/path/to/gcc/source/code GCC_DIR$PACKAGE_DIR/gcc-$GCC_VERSION GCC_INSTALL_DIR/path/to/install/gccmkdir -p $GCC_INSTALL_DIR cd $GCC_INSTALL_DIR rm -rf * cd $PACKAGE_DIR rm -rf gcc-$GCC_VERSION if [ ! -f "gcc-$…

freertos初体验 - 在stm32上移植

1. 说明 freertos内核 非常精简&#xff0c;代码量也很少&#xff0c;官方也针对主流的编译器和内核准备好了移植文件&#xff0c;所以 freertos 的移植是非常简单的&#xff0c;很多工具&#xff08;例如CubeMX&#xff09;点点鼠标就可以生成一个 freertos 的工程&#xff0…