MATLAB 线性整数规划

news2024/11/15 16:00:37

CSDN

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的个人主页
🍊个人网站:小嗷犬的技术小站
🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。


本文目录

  • 什么是线性整数规划问题
  • 如何使用 MATLAB 解决线性整数规划问题
  • 附加题


什么是线性整数规划问题

整数规划问题是指在一组线性不等式约束条件下,求解一个线性目标函数的最大值或最小值的问题,且目标函数和约束条件中的变量含有整数。


如何使用 MATLAB 解决线性整数规划问题

常见的线性整数规划问题通常类似于以下形式:

min ⁡ Z = 8 x 1 + x 2 \begin{equation} \min \quad Z=8 x_{1} + x_{2} \end{equation} minZ=8x1+x2
 s.t.  { x 2  is an integer x 1 + 2 x 2 ≥ − 14 − 4 x 1 − x 2 ≤ − 33 2 x 1 + x 2 ≤ 20 \begin{equation} \text { s.t. } \left\{ \begin{array}{c} x_{2} \text{ is an integer} \\ x_{1}+2x_{2} \geq -14 \\ -4x_{1}-x_{2} \leq -33 \\ 2x_{1}+x_{2} \leq 20 \end{array} \right. \end{equation}  s.t.  x2 is an integerx1+2x2144x1x2332x1+x220

其中,公式1为目标函数,公式2为约束条件。

为了便于求解,我们可以将公式1和公式2分别写成矩阵形式:

min ⁡ Z = [ 8 1 ] ⋅ [ x 1 x 2 ] \begin{equation} \min \quad Z=\begin{bmatrix} 8 & 1 \end{bmatrix} \cdot \begin{bmatrix} x_{1} \\ x_{2} \end{bmatrix} \end{equation} minZ=[81][x1x2]
 s.t.  { x 2  is an integer [ − 1 − 2 − 4 − 1 2 1 ] ⋅ [ x 1 x 2 ] ≤ [ 14 − 33 20 ] \begin{equation} \text { s.t. } \left\{ \begin{array}{c} x_{2} \text{ is an integer} \\ \begin{bmatrix} -1 & -2 \\ -4 & -1 \\ 2 & 1 \end{bmatrix} \cdot \begin{bmatrix} x_{1} \\ x_{2} \end{bmatrix} \leq \begin{bmatrix} 14 \\ -33 \\ 20 \end{bmatrix} \end{array} \right. \end{equation}  s.t.  x2 is an integer 142211 [x1x2] 143320

这种形式便是 MATLAB 的线性整数规划的标准形式:

min ⁡ x f T x  subject to  { x(intcon) are integers A ⋅ x ≤ b A e q ⋅ x = b e q l b ≤ x ≤ u b . \min _{x} f^{T} x \text { subject to } \left\{ \begin{array}{c} \text {x(intcon) are integers} \\ A \cdot x \leq b \\ { Aeq } \cdot x={ beq } \\ l b \leq x \leq u b. \end{array} \right. xminfTx subject to  x(intcon) are integersAxbAeqx=beqlbxub.

可以调用 intlinprog 函数来求解,其语法为:

[x,fval] = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)

其中,f 为目标函数,intcon 为整数变量的下标,A 为约束条件的系数矩阵,b 为约束条件的右端项,Aeq 为等式约束条件的系数矩阵,beq 为等式约束条件的右端项,lb 为变量的下界,ub 为变量的上界。

本题便可使用如下代码求解:

f = [8 1];
intcon = 2;
A = [-1 -2; -4 -1; 2 1];
b = [14; -33; 20];

[x,fval] = intlinprog(f,intcon,A,b);

结果为:

x =
    6.5000
    7.0000

fval =
    59.0000

附加题

让我们运用上文的方法求解以下问题:

min ⁡ Z = 2 x 1 + 3 x 2 + 4 x 3 \begin{equation} \min \quad Z=2 x_{1}+3 x_{2}+4 x_{3} \end{equation} minZ=2x1+3x2+4x3
 s.t.  { x 2  is an integer x 3  is an integer x 1 + 2 x 2 + 3 x 3 ≥ 1 − x 1 − x 2 − x 3 ≤ − 1 2 x 1 + x 2 + x 3 ≤ 2 \begin{equation} \text { s.t. } \left\{ \begin{array}{c} x_{2} \text{ is an integer} \\ x_{3} \text{ is an integer} \\ x_{1}+2x_{2}+3x_{3} \geq 1 \\ -x_{1}-x_{2}-x_{3} \leq -1 \\ 2x_{1}+x_{2}+x_{3} \leq 2 \end{array} \right. \end{equation}  s.t.  x2 is an integerx3 is an integerx1+2x2+3x31x1x2x312x1+x2+x32

首先转化为标准形式:

min ⁡ Z = [ 2 3 4 ] ⋅ [ x 1 x 2 x 3 ] \begin{equation} \min \quad Z=\begin{bmatrix} 2 & 3 & 4 \end{bmatrix} \cdot \begin{bmatrix} x_{1} \\ x_{2} \\ x_{3} \end{bmatrix} \end{equation} minZ=[234] x1x2x3
 s.t.  { x 2  is an integer x 3  is an integer [ − 1 − 2 − 3 − 1 − 1 − 1 2 1 1 ] ⋅ [ x 1 x 2 x 3 ] ≤ [ − 1 − 1 2 ] \begin{equation} \text { s.t. } \left\{ \begin{array}{c} x_{2} \text{ is an integer} \\ x_{3} \text{ is an integer} \\ \begin{bmatrix} -1 & -2 & -3 \\ -1 & -1 & -1 \\ 2 & 1 & 1 \end{bmatrix} \cdot \begin{bmatrix} x_{1} \\ x_{2} \\ x_{3} \end{bmatrix} \leq \begin{bmatrix} -1 \\ -1 \\ 2 \end{bmatrix} \end{array} \right. \end{equation}  s.t.  x2 is an integerx3 is an integer 112211311 x1x2x3 112

然后使用 intlinprog 函数求解:

f = [2 3 4];
intcon = [2 3];
A = [-1 -2 -3; -1 -1 -1; 2 1 1];
b = [-1; -1; 2];

[x,fval] = intlinprog(f,intcon,A,b);

最终结果:

x =
    1.0000
    0
    0

fval =
    2.0000

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

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

相关文章

oracle官网下载指定版本的jdk

文章目录前言下载JDK环境变量前言 oracle官网下载jdk,如果是想下载指定版本的,总是提示需要你登录。如何解决呢? 下载JDK oracle官网 https://www.oracle.com 或者直达此页 https://www.oracle.com/java/technologies/downloads/archive…

springboot相关

2023.2.3 springboot的示例sagan涉及到很多软件技术,运行这个示例在Windows 7下遇到问题。将Windows 7重装为Windows 10专业版。下载了node-v18.14.0-x64.msi,安装node时可以选择安装相关的软件,例如python 3.11.0。下载python 3.11.0太慢了…

07、微服务组件Seata

1、事务简介 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数据库中,一个事务由一组SQL语句组成。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 原子性(ato…

正则表达式记录

正则用途:分割 查找 匹配 替换 1 * ?的区别 *代表匹配任意次, 包括0,1,多次代表匹配最少一次, 1或者多次?代表匹配最多1次,0,1次 2 单次边界(\b和\B) 2.1 定义 首先说一下零宽: 只匹配位置, 不匹配字符, 然后我们再来谈单词边界: 何谓单词? 在JS中, 单词的定义就是\w也…

Python中的字典

1. 前言 字典,是Python中唯一实现了映射关系的内置类型。 2.映射关系 摩斯密码就是通过映射关系来实现的。 这里的字母 A 和 .- 就是其中的一对映射关系,字母 U 和 …- 又是另一对映射关系,那么有了这张表,破解莫斯密码就不再…

矩阵相关的性质

矩阵相关的计算性质1.矩阵的某一行*一个常数2.矩阵的一行加(减)另一行3.交换矩阵的两行两个未知数两个方程线程方程组解的结构以几何的角度查看矩阵的方式初等矩阵采用初等变换的方式在矩阵的元素中进行操作 相关的性能的变化采用点阵的乘法,在矩阵的维度进行处理将…

DeepLabV3+:ASPP加强特征提取网络的搭建

目录 ASPP结构介绍 ASPP在代码中的构建 参考资料 ASPP结构介绍 ASPP:Atrous Spatial Pyramid Pooling,空洞空间卷积池化金字塔。 简单理解就是个至尊版池化层,其目的与普通的池化层一致,尽可能地去提取特征。 利用主干特征提取…

低代码开发——创新赋能企业办公模式转变

近年来,国内云计算高速发展、SAAS 软件模式快速普及、企业数字 化的需求增长等方面促进了低代码平台开发与应用的高速发展,使之成为继 RPA之后企业数字化转型的明星工具。如果说RPA 将线上流程自动化,那么低代码解决了更基础的问题&#xff…

微信小程序 java Springboot大学生心理健康测试职位推荐系统

心理测试学生端要求在系统的安卓手机上可以运行,主要实现了线上考试测试等相关信息的查看,并且根据需求进行对管理端;首页、个人中心、学生管理、职业职位管理、职位申请管理、活动类型管理、活动项目管理、活动报名管理、试卷管理、试题管理…

Python算术运算符

Python算术运算符以下假设变量: a10,b20:运算符描述实例加 - 两个对象相加a b 输出结果 30-减 - 得到负数或是一个数减去另一个数a - b 输出结果 -10*乘 - 两个数相乘或是返回一个被重复若干次的字符串a * b 输出结果 200/除 - x除以yb / a …

C++内联函数:那时我还太年轻,并不知道使用inline带来的效率,早已在暗中标好了价格

👑专栏内容:C学习笔记⛪个人主页:子夜的星的主页💕座右铭:日拱一卒,功不唐捐 文章目录一、前言二、内联函数1、起源2、概念三、与宏的区别1、宏的缺点2、两者区别四、内联函数的代价代价一:可执…

1.DjangoRestFramework【前后端分离项目搭建】

1.使用cmd创建项目 在你需要创建项目的文件夹中打开cmd,进入对应的Django的虚拟环境中输入下面语句: django-admin startproject drfproject然后使用pycharm打开项目 2.创建子apps 在tirminal中输入: python manage.py startapp user python manage.py startapp shop3.注册…

博途1200PLC/1500PLCMODBUS从站通信应用(MB_SLAVE指令)

博途PLC作为MODBUS主站通信请参看下面的文章链接: 博途PLC 1200/1500PLC MODBUS-RTU通讯优化(状态机编程)_博途plc modbus-rtu通信优化_RXXW_Dor的博客-CSDN博客博途PLC 1200/1500PLC MODBUS-RTU通讯_RXXW_Dor的博客-CSDN博客_博图modbus通讯1、1200PLC的modbus通讯,可以参看…

3.3 接口

文章目录1.接口的概念2.接口格式3.接口的特点3.1 练习-1:创建接口3.2 练习-2:创建接口实现类3.3 练习-3:创建接口测试类4.接口的用法5.接口的多继承多实现6.接口总结6.1 类与类的关系6.2 类与接口的关系6.3 接口与接口的关系6.4 抽象类与接口的区别1.接口的概念 与之前学习过的…

webpackEslint插件使用

webpackEslint插件使用 首先安装eslint-webpack-plugin npm i eslint-webpack-plugin -S 注意:如果未安装eslint>7,还需要先安装eslint npm i eslint -S 然后把插件添加到你的webpack配置,例如 const ESLintPluginreuqire(eslint-webpack-plugin) mo…

Android开发常谈—【热启动冷启动】

冷启动概述 app冷启动: 当应用启动时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用, 这个启动方式就叫做冷启动(后台不存在该应用进程)。冷启动因为系统会重新创建一个新的进程分配给…

【坤坤讲师--图】KM算法

KM算法 KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[i],顶点Yj的顶标为B[j],顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻,对于任一条边(i,j),A[i]+B[j]>=w[i,j]始终成立。KM算法的正…

Python语言零基础入门教程(一)

Python 基础语法 Python 语言与 Perl,C 和 Java 等语言有许多相似之处。但是,也存在一些差异。 在本章中我们将来学习 Python 的基础语法,让你快速学会 Python 编程。 第一个 Python 程序 交互式编程 交互式编程不需要创建脚本文件&#…

【算法竞赛模板】单调队列与单调栈

【算法竞赛模板】单调队列与单调栈一、概念解析二、单调栈三、单调队列一、概念解析 单调栈:具有单调(递增或递减)性质和栈性质的数据结构     时间复杂度为 O(n)单调队列:具有单调(递增或递减)性质和…

R22-11 《Specification of Time Synchronization》文摘

1 Introduction and functional overview【功能】Time Synchronization between different applications and/or ECUs【目的】be able to track such events in time or to trigger them at an accurate point in time.【方式】ATime Synchronization APIis offered to the App…