【运筹学】整数规划建模技巧

news2024/12/28 5:08:22

在整数规划建模中,经常会使用到0-1变量来辅助建模,将模型表述为IP模型或BIP模型,下面是一些常见的整数规划建模技巧

使用辅助0-1变量实现“非此即彼”约束

如下图所示,有两条约束,希望只有其中一条起到约束的作用,该怎么处理呢

在这里插入图片描述
处理方式如下图,M是一个较大的数,当约束的右边加上M时,无论 x 1 x_1 x1 x 2 x_2 x2在取在取值范围之内的任意值,式子都是成立的,即该约束无效,没有起到限制变量取值的作用。那么只需要让其中一个约束失效即可,通过在两个约束的右边分别添加 M y 1 My_1 My1 M y 2 My_2 My2,并让 y 1 + y 2 = 1 y_1+y_2=1 y1+y2=1来实现

在这里插入图片描述

保留N个约束中的K个

要保留N个约束中的K个,原理和上面也是相同的,即在每个约束的右边添加 M y n My_n Myn,然后让 ∑ i = 1 N y i = N − K \sum_{i=1}^{N}{y_i}=N-K i=1Nyi=NK即可,这样有 N − K N-K NK个约束的右边被添加上了M,这些约束失效,能发挥作用的约束只有K个
在这里插入图片描述

函数有N个可能的值

函数有N个可能的值,只需要给每个值乘以一个0-1变量,并通过 ∑ i = 1 N y i = 1 \sum_{i=1}^{N}{y_i}=1 i=1Nyi=1让这些值只有一个生效即可
在这里插入图片描述

固定收费问题

常见的固定收费问题如:当购买了一个设备之后,首先需要支出设备购买的费用,后续还需要支出设备每个周期的回收费用。通过使用 x j ≤ M y j x_j\le My_j xjMyj,当 x j > 0 x_j>0 xj>0 时, y j = 1 y_j=1 yj=1必须成立,限制函数必须加上一个固定费用 k j k_j kj
在这里插入图片描述

二进制表示法代替整数变量

当一个模型存在大量0-1变量和少量整数变量时,无法直接使用高效的BIP算法,这时候可以使用二进制表示法将原有的整数变量分解成多个0-1变量。当一个整数 x x x的范围为[0,u]时,可以参考下图的方式将其分解为N个0-1变量
在这里插入图片描述
具体的案例如下图所示在这里插入图片描述

分段函数建模

当一个函数是一个分段分数时,即处于不同区域的 x x x,其对应的函数表达式 f ( x ) f(x) f(x)是不同的,在处理这种问题的时候,建模的方式如下:
设一个 n 段线性函数 f ( x ) 的分点为 b 1 ≤ ⋯ ≤ b n ≤ b n + 1 ,可以引入 w k 和 z k 将 x 和 f ( x ) 分别表示为   x = ∑ k = 1 n + 1 w k b k f ( x k ) = ∑ k = 1 n + 1 w k f ( b k ) 其中 w k 和 z k 满足下面的关系: w 1 ≤ z 1 ,   w 2 ≤ z 1 + z 2 ,   ⋯   ,   w n ≤ z n − 1 + z n ,   w n + 1 ≤ z n z 1 + z 2 + ⋯ + z n = 1 ,   z k = 0 或 1 w 1 + w 2 + ⋯ + w n + 1 = 1 ,   w k ≥ 0   ( k = 1 , 2 , ⋯   , n + 1 ) \text{设一个}n\text{段线性函数}f\left( x \right) \text{的分点为}b_1\le \cdots \le b_n\le b_{n+1}\text{,可以} \text{引入}w_k\text{和}z_k\text{将}x\text{和}f\left( x \right) \text{分别表示为\\\\\\\\\\\\\\\\\\\\\\\\\ } \\ x=\sum_{k=1}^{n+1}{w_kb_k} \\ f\left( x_k \right) =\sum_{k=1}^{n+1}{w_kf\left( b_k \right)} \\ \text{其中}w_k\text{和}z_k\text{满足下面的关系:} \\ w_1\le z_1,\ w_2\le z_1+z_2,\ \cdots ,\ w_n\le z_{n-1}+z_n,\ w_{n+1}\le z_n \\ z_1+z_2+\cdots +z_n=1,\ z_k=0\text{或}1 \\ w_1+w_2+\cdots +w_{n+1}=1,\ w_k\ge 0\ \left( k=1,2,\cdots ,n+1 \right) \\ 设一个n段线性函数f(x)的分点为b1bnbn+1,可以引入wkzkxf(x)分别表示为 x=k=1n+1wkbkf(xk)=k=1n+1wkf(bk)其中wkzk满足下面的关系:w1z1, w2z1+z2, , wnzn1+zn, wn+1znz1+z2++zn=1, zk=01w1+w2++wn+1=1, wk0 (k=1,2,,n+1)
如果无法理解上面的模型处理方式的话,可以仔细理解下面的图片
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

CVE-2023-4120:百卓智能Smart多业务安全网关智能管理平台SQL注入漏洞复现

文章目录 百卓智能Smart多业务安全网关智能管理平台SQL注入CVE-2023-4120 复现0x01 前言0x02 漏洞描述0x03 影响平台0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 百卓智能Smart多业务安全网关智能管理平台SQL注入CVE-2023-4120 复现 0x01 前言 免…

漏刻有时物联网环境态势感知大数据(设备列表、动态折线图)

物联网环境下的态势感知是指对物联网环境中的各种要素进行全面、实时、准确的监测、分析和预测,以实现网络态势的全面掌握和安全威胁的及时响应和处理。具体而言,态势感知以物联网环境为基础,利用各类传感器、数据采集设备和其他相关工具,对物联网设备、资产、数据流等进行…

Windows批处理

目录 echo off:关闭命令的回显功能,这样在执行脚本时不会显示每条命令的具体执行过程。建议将此行放在批处理脚本的首行。 rem:用于添加注释,后面可以跟上注释内容。注释的作用是对脚本进行说明或提醒,不会被执行。 …

大数据软件项目的应用行业

大数据软件项目可以应用于各种不同的行业,以帮助组织更好地理解和利用其数据资产,从而做出更明智的决策、提高效率并推动创新。以下是一些主要行业,大数据软件项目可以发挥重要作用的示例,希望对大家有所帮助。北京木奇移动技术有…

BaseQuickAdapter触底刷新实现

触底刷新实现 使用BaseQuickAdapter,在适配器中实现 LoadMoreModule即可,如下加上即可,无需多写代码 以下为分页实现: 视图中 // 获取加载更多模块loadMoreModule blogAdapter.getLoadMoreModule();loadMoreModule.setOnLoadMo…

滴滴出行回归:应对监管风暴,放眼全球增长

来源:猛兽财经 作者:猛兽财经 总结: (1)在遭遇监管挫折和市场份额下降后,滴滴出行正在恢复增长势头。 (2)尽管竞争激烈,但凭借强大的品牌和先进的技术,滴滴出…

如何精细化管理嵌入式软件项目?ACT汽车电子与软件技术周演讲回顾

2023 ACT汽车电子与软件技术周已于8月18日在中国上海落下帷幕。展会现场,龙智技术支持部负责人、Atlassian认证专家叶燕秀与龙智技术工程师邱洁玉共同为观众带来了主题为“更好、更快、更安全:嵌入式开发中的最佳实践与工具链构建”的演讲,分…

无代码集成API服务平台连接更多应用

场景描述: 基于API服务平台的开放能力,无代码集成API服务平台连接多个应用。通过Aboter搭建业务自动化流程,实现多个应用的数据集成。 常用接口能力: 生活服务交通地理金融商业企业管理开发技术快递物流实名核验网络通讯… 常…

虹科干货 | 不是吧,Redis Enterprise也能当向量数据库来用?

什么是向量相似性搜索啊? 例如,你需要搜索一棵发财树的图片,如果用传统数据库来检索,你大概率会在茫茫树丛中错失心仪的发财树。但是,向量相似性搜索能用向量来表示所有树的特征,这样就能够通过计算向量之间…

漏刻有时数据可视化大屏引导页设计2(偏移卡片、动态数字翻牌、countUp.min.js)

引入外部文件 <title>漏刻有时引导页</title><script src="js/jquery-3.3.1.min.js"></script><script src="js/countUp.min.js"></script><link rel="stylesheet" href="css/common.css">…

怎么查看电脑配置?只需三招,让你轻松get!

电脑配置对于了解计算机的性能和功能至关重要。无论是为了升级硬件、解决问题还是购买新电脑&#xff0c;查看电脑配置都是必不可少的。那你知道怎么查看电脑配置吗&#xff1f;本文将介绍3种查看电脑配置的方法&#xff0c;从而让您轻松获取所需信息。 方法1&#xff1a;使用W…

ARM汇编学习录 1 -基础概念

指令集概述 现阶段有四个不同的指令集 名称概述ARM3232位指令集Thumb16位指令集,ARM32子集,提供高密度低功耗Thumb232位指令集,ARMv6T2 引入.是thumb超集ARM6464位指令集 note&#xff1a; ARM某一个时刻只能运行单独ARM指令集或者Thumb指令,通过CPSR的T标志位决定. 如何当前…

论文笔记 A theory of learning from different domains

domain adaptation 领域理论方向的重要论文. 这篇笔记主要是推导文章中的定理, 还有分析定理的直观解释. 笔记中的章节号与论文中的保持一致. 1. Introduction domain adaptation 的设定介绍: 有两个域, source domain 与 target domain. source domain: 一组从 source dist.…

mybatis-plus 多数据源配置

1. 双数据库创建 两个数据库各有一张表 2. yml中配置双数据库 下面的配置来源于mybatis-plus官网 spring:datasource:dynamic:primary: master #设置默认的数据源或者数据源组,默认值即为masterstrict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,fal…

wpf webBrowser控件 常用的函数和内存泄漏问题

介绍 WebBrowsers可以让我们在窗体中进行导航网页。 WebBrowser控件内部使用ie的引擎&#xff0c;因此使用WebBrowser我们必须安装ie浏览器&#xff08;windows默认安装的&#xff09;。 使用 直接在xmal中使用webBrowser控件 <WebBrowser x:Name"WebBrowser1"…

Springboot使用ProcessBuilder创建系统进程执行shell命令备份数据库

文章目录 概要1、查看mysql版本2、相关依赖3、具体代码技术细节 概要 Springboot执行shell命令备份数据库。 1、查看mysql版本 mysql --version2、相关依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-star…

单位脉冲信号转换直流信号变换器 隔离的频率(脉冲)变送器

主要特性 将单位脉冲信号转换成直流电压或电流信号。 精度等级&#xff1a;0.1 级、0.2 级、0.5 级。产品出厂前已检验校正&#xff0c;用户可以直接使用。 国际标准信号输入: 0-5KHz/0-10KHz/1-5KHz等 0-5V/0-10V/1-5V 等电压信号,0-10mA/0-20mA/4-20mA 等电流信号。 …

下载安装包,platform的含义

安装包platform的含义 每次安装某个软件时&#xff0c;会让你选择platform&#xff0c;遇到 满脸问号❓❓❓❓❓❓❓❓❓❓❓❓ windowLinux x86_64Linux aarch64macOS aarch64macOS aarch64macOS aarch64deb aarch64 其中window大家都很熟悉&#xff0c;wndows系统 安装 选…

java基础之组合和继承

为了避免重复代码太多&#xff0c;导致代码不好维护&#xff0c;大家需要学会如何复用代码&#xff0c;代码复用的两种方式&#xff0c;组合和继承 组合&#xff1a;在新类中创建现有类的对象 has-a 继承&#xff1a;创建现有类的新类 is-a 依赖&#xff1a;uses-a UML关系 继承…

Tailwind CSS浅析与实操

Tailwind CSS 一、Tailwind CSS简介 What is Tailwind CSS Tailwind CSS| TailwindCSS中文文档 | TailwindCSS中文网官方解释&#xff1a;只需书写 HTML 代码&#xff0c;无需书写 CSS&#xff0c;即可快速构建美观的网站。本质上是一个工具集&#xff0c;包含了大量类似 fle…