优化模型:MATLAB整数规划

一、整数规划介绍

1.1 整数规划的定义

若规划模型的所有决策变量只能取整数时,称为整数规划。若在线性规划模型中,变量限制为整数,则称为整数线性规划。

1.2 整数规划的分类

整数规划模型大致可分为两类:

(1)变量全限制为整数时,称纯(完全)整数规划。

(2)变量部分限制为整数时,称混合整数规划。

1.3 求解方法分类

  • 分支定界法——可求纯或混合整数线性规划。
  • 割平面法——可求纯或混合整数线性规划。
  • 隐枚举法——求解0-1整数规划
    • 过滤隐枚举法
    • 分枝隐枚举法
  • 匈牙利法——解决指派问题
  • 蒙特卡洛法——求解各类规划问题

1.4 整数规划的数学模型

min ⁡ x f T x \underset{x}{\min}\boldsymbol{f}^T\boldsymbol{x} xminfTx

s . t . { x ( i n t c o n ) A ⋅ x ⩽ b A e q ⋅ x = b e q l b ⩽ x ⩽ u b s.t.\left\{ \begin{array}{c} \boldsymbol{x}\left( intcon \right)\\ \boldsymbol{A}\cdot \boldsymbol{x}\leqslant \boldsymbol{b}\\ Aeq\cdot \boldsymbol{x}=beq\\ lb\leqslant \boldsymbol{x}\leqslant ub\\ \end{array} \right. s.t. x(intcon)AxbAeqx=beqlbxub
式中: f \boldsymbol{f} f, x \boldsymbol{x} x, b \boldsymbol{b} b,beq,lb,ub为列向量; A \boldsymbol{A} A,Aeq为矩阵。

二、案例分析

Matlab求解混合整数线性规划的命令为

[x,fval]=intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)这里是引用

例1:利用matlab求解该整数线性规划模型。
max ⁡ z = 100 x 1 + 60 x 2 \max z=100x_1+60x_2 maxz=100x1+60x2
s . t . { 5 x 1 + 2 x 2 ⩽ 270 4 x 1 + 3 x 1 ⩽ 250 3 x 1 + 4 x 2 ⩽ 200 x 2 = 4 x 1 x 1 , x 2 为非负整数 s.t.\left\{ \begin{array}{c} 5x_1+2x_2\leqslant 270\\ 4x_1+3x_1\leqslant 250\\ 3x_1+4x_2\leqslant 200\\ x_2=4x_1\\ x_1,x_2\text{为非负整数}\\ \end{array} \right. s.t. 5x1+2x22704x1+3x12503x1+4x2200x2=4x1x1,x2为非负整数
MATLAB代码:

clc,clear
f=[-100;-60];
intcon=[1,2];
A=[5,2;4,3;3,4];
b=[270;250;200];
aeq=[-4,1];
beq=0;
lb=[0;0];
ub=[inf;inf];
[x,fval]=intlinprog(f,intcon,A,b,aeq,beq,lb,ub)
disp("x1值:" + x(1))
disp("x2值:" + x(2))
disp("最大值:" + (-fval))

求解结果:

例2:利用matlab求解下列混合整数规划问题。
min ⁡ z = − 3 x 1 − 2 x 2 − x 3 \min z=-3x_1-2x_2-x_3 minz=3x12x2x3
s . t . { x 1 + x 2 + x 3 ⩽ 7 4 x 1 + 2 x 2 + x 3 = 12 x 1 , x 2 ≫ 0 x 1 = 0 或 1 s.t.\left\{ \begin{array}{c} x_1+x_2+x_3\leqslant 7\\ 4x_1+2x_2+x_3=12\\ x_1,x_2\gg 0\\ x_1=0\text{或}1\\ \end{array} \right. s.t. x1+x2+x374x1+2x2+x3=12x1,x20x1=01
MATLAB代码:

clc,clear
f=[-3;-2;-1];
intcon=3;%只有第3个变量为整数变量
A=ones(1,3);
b=7;
aeq=[4,2,1];
beq=12;
lb=zeros(3,1);
ub=[inf;inf;1];
[x,fval]=intlinprog(f,intcon,A,b,aeq,beq,lb,ub)

求解结果:

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

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

相关文章

SQL进阶理论篇(二十):什么是SQL注入

文章目录 简介SQL注入的原理SQL注入的实例搭建sqli-labs注入环境实例一:猜测where条件判断查询语句的字段数获取当前数据库和用户信息获取MySQL中的所有数据库名称查询wucai数据库中的所有数据表查询heros数据表中的所有字段参考文献 简介 这节是纯兴趣篇了。 web…

less 查看文本时,提示may be a binary file.See it anyway?

解决办法 首先使用echo $LESSCHARSET查看less的编码 看情况设置less的编码格式(我的服务器上使用utf-8查看中文) 还要特别注意一下,Linux中存在的文本文件的编码一定要是utf - 8;(这一步很关键) 例如:要保证windows上传到Linux的…

Linux Shell 001-Bash简介

Linux Shell 001-Bash简介 本节关键字:Linux、Bash Shell、shell分类 相关指令:bash、sh、cat Shell的介绍 计算机只能认识(识别)机器语言(0和1),如(11000000 这种)。但是,我们的…

力扣(leetcode)1148和1179题(MySQL)

1148.文章浏览I 题目链接:1148.文章浏览I 解答 # Write your MySQL query statement below select distinct author_id as id from Views where author_idviewer_id order by id;1179.重新格式化部门表 题目链接:1179.重新格式化部门表 解答 …

线程池构造方法的认识

线程池中构造方法的认识 文章目录 线程池中构造方法的认识corePoolSize (核心线程数)maximumPoolSize(最大线程数)keepAliveTime(非核心线程的空闲超时时间)TimeUnitworkQueuethreadFactoryRejectedExecutionHandler拒绝策略 标准库中提供了一个ThreadPo…

uniapp自定义头部导航怎么实现?

一、在pages.json文件里边写上自定义属性 "navigationStyle": "custom" 二、在对应的index页面写上以下&#xff1a; <view :style"{ height: headheight px, backgroundColor: #24B7FF, zIndex: 99, position: fixed, top: 0px, width: 100% …

RocketMQ实践:确保消息不丢失与顺序性的高效策略

一、使用RocketMQ如何保证消息不丢失&#xff1f; 这个是在面试时&#xff0c;关于MQ&#xff0c;面试官最喜欢问的问题。这个问题是所有MQ都需要面对的一个共性问 题。大致的解决思路都是一致的&#xff0c;但是针对不同的MQ产品又有不同的解决方案。分析这个问题要从以 下几…

汽车服务品牌网站建设的作用是什么

汽车服务涵盖多个层面&#xff0c;在保修维护这一块更是精准到了车内车外&#xff0c;无论是品牌商还是市场中各维修部&#xff0c;都能给到车辆很好的维修养护服务。如今车辆的人均拥有量已经非常高&#xff0c;也因此市场中围绕汽车相关的从业者也比较多。 首先就是拓客引流…

SpringBoot找不到或无法加载主类

1&#xff0c;bug贴图 2&#xff0c;问题说明 之所以导致这个问题是因为新建项目的时候&#xff0c;项目目录是这样的com.lab.hei.springboot.dubbo.ProviderApplication 我觉得这个目录太长了&#xff0c;所以修改了目录&#xff0c;修改后cn.alisa.springboot.dubbo.Provider…

PostGreSQL:货币类型

货币类型&#xff1a;money money类型存储固定小数精度的货币数字&#xff0c;小数的精度由数据库的lc_monetary设置决定。windows系统下&#xff0c;该配置项位于/data/postgresql.conf文件中&#xff0c;默认配置如下&#xff0c; lc_monetary Chinese (Simplified)_Chi…

C++的一些零散小知识

文章目录 1、空指针nullptr的类型为std::nullptr_t2、函数定义中&#xff0c;如果不需要使用参数的值&#xff0c;可以省略参数名3、静态成员变量在C17之后可以直接在类内定义并初始化了 1、空指针nullptr的类型为std::nullptr_t 一个毫无意义的例子&#xff1a; template<…

【Oracle】修改表结构

目录 创建示例1&#xff1a;添加一个或多个列 创建示例2&#xff1a;修改列定义 创建示例3&#xff1a; 删除一列或多列 创建示例4:重命名列 创建示例5:重命名表 创建示例1&#xff1a;添加一个或多个列 -----语法&#xff1a;将新列添加到表中 ALTER TABLE table_name A…

大模型工具_QUIVR

https://github.com/StanGirard/quivr/ 24.5K Star 1 功能 整体功能&#xff0c;想解决什么问题 实现了前后端结合的 RAG 方案。构建能直接使用的应用。提出了“第二大脑”&#xff0c;具体实现也是RAG&#xff0c;但针对不同用户不同场景支持多个“大脑”并存&#xff0c;每个…

css 三角形实现方式及快速联想记忆

css实现三角形是常见的需求&#xff0c;在此记录如下 1 边框实现 原理&#xff1a;相邻的border之间会形成一条斜线(可按此联想记忆) .triangle {width: 0;height: 0;border-left: 100px solid red;border-right: 100px solid green;border-top: 100px solid blue;border-bot…

Spring Boot实践指南

一.SpringBoot入门案例 SpringBoot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化Spring应用的初始搭建以及开发过程 原生开发SpringMVC程序过程 在没有SpringBoot前&#xff1a; 1.入门案例开发步骤 &#xff08;1&#xff09;创建新模块&#xff0c;选…

PADS Layout安全间距检查报错

问题&#xff1a; 在Pads Layout完成layout后&#xff0c;进行工具-验证设计安全间距检查时&#xff0c;差分对BAK_FIXCLK_100M_P / BAK_FIXCLK_100M_N的安全间距检查报错&#xff0c;最小为3.94mil&#xff0c;但是应该大于等于5mil&#xff1b;如下两张图&#xff1a; 检查&…

数据结构-如何巧妙实现一个栈?逐步解析与代码示例

文章目录 引言1.栈的基本概念2.选择数组还是链表&#xff1f;3. 定义栈结构4.初始化栈5.压栈操作6.弹栈操作7.查看栈顶和判断栈空9.销毁栈操作10.测试并且打印栈内容栈的实际应用结论 引言 栈是一种基本但强大的数据结构&#xff0c;它在许多算法和系统功能中扮演着关键角色。…

机器学习的一些有趣的点【异常检测】

机器能不能知道自己不知道&#xff0c;而不是给出判断中的一种&#xff1f; Classifier&#xff08;分类&#xff09;Anomaly Detection&#xff08;异常检测&#xff09; 机器能不能说出为什么知道&#xff1f; 有时候可能是因为数据的问题导致了这种错觉。 机器学习是否会有错…

为什么要使用vite

vue ——&#xff09;webpack 全部读取完毕才显示&#xff1a; vite:只读取修改的部分&#xff0c;速度比较快