数学模型:Python实现整数规划

news2025/1/24 14:44:41

上篇文章:线性规划
文章摘要:整数规划的Python实现。
参考书籍:数学建模算法与应用(第3版)司守奎 孙玺菁。
PS:只涉及了具体实现并不涉及底层理论。学习底层理论以及底层理论实现:可以参考1.最优化模型与算法——基于Python实现 渐令 粱锡军2.算法导论(原书第3版)Thomas H.Cormen Charles E.Leiserson、Ronald L.Rivest Clifford Stein
文章声明:如有发现错误,还望批评指正

文章目录

  • 整数规划简述
  • 整数规划典例
    • 标准指派问题
    • 比赛项目排序问题

整数规划简述

目标函数:
max ⁡    o r    min ⁡    y = ∑ i = 1 n a i x i \max\;or\;\min\; y=\sum\limits_{i=1}^{n}a_ix_i maxorminy=i=1naixi

约束条件:
∑ j = 1 n a i j x j ≤ o r = o r ≥ b i , i = 1 , 2 , … , m \sum\limits_{j=1}^{n}a_{ij}x_{j}\leq or = or \geq b_i,i=1,2,\dots,m j=1naijxjor=orbi,i=1,2,,m
x j ≥ 0 , j = 1 , 2 , … , n x_j\geq0,j=1,2,\dots,n xj0j=1,2,,n
x j , j = 1 , 2 , … , n x_j,j=1,2,\dots ,n xj,j=1,2,,n中部分或者全部取整

整数规划典例

标准指派问题

参考书籍1例2.6
目标函数:
min ⁡ z = ∑ i = 1 4 ∑ j = 1 5 c i j x i j \min z=\sum\limits_{i=1}^4\sum\limits_{j=1}^{5}c_{ij}x_{ij} minz=i=14j=15cijxij
约束条件:
∑ i = 1 4 x i j = 1 , j = 1 , 2 , … , 5 \sum\limits_{i=1}^4x_{ij}=1,j=1,2,\dots,5 i=14xij=1,j=1,2,,5
∑ j = 1 5 x i j ≤ 2 , i = 1 , 2 , … , 4 \sum\limits_{j=1}^{5}x_{ij}\leq2,i=1,2,\dots,4 j=15xij2,i=1,2,,4
x i j = 0 x_{ij}=0 xij=0或者 1 1 1

import numpy as np
c=np.array([[15,13.8,12.5,11,14.3],[14.5,14,13.2,10.5,15],[13.8,13,12.8,11.3,14.6],[14.7,13.6,13,11.6,14]])
import cvxpy as cp
x=cp.Variable((4,5),integer=True)
obj=cp.Minimize(cp.sum(cp.multiply(c,x)))
con=[0<=x,1>=x,cp.sum(x,axis=0)==1,cp.sum(x,axis=1)<=2]
pro=cp.Problem(obj,con)
pro.solve(solver=cp.GLPK_MI)
print(x.value)

结果如下:
在这里插入图片描述
注释:ECOS用于解决凸优化问题,GLPK_MI用于解决各种问题(离散或者连续变量,线性或者非线性的目标函数)。具体如何实现我自然不知拉。还得等学了最优化。

比赛项目排序问题

参考书籍1例2.10。数据,超链。
目标函数:
min ⁡ y = ∑ i = 1 15 ∑ j = 1 15 w i j x i j \min y=\sum\limits_{i=1}^{15}\sum\limits_{j=1}^{15}w_{ij}x_{ij} miny=i=115j=115wijxij
约束条件:
∑ j = 1 15 x i j = 1 , i = 1 , 2 , … , 15 \sum\limits_{j=1}^{15}x_{ij}=1,i=1,2,\dots,15 j=115xij=1,i=1,2,,15
∑ i = 1 15 x i j = 1 , j = 1 , 2 , … , 15 \sum\limits_{i=1}^{15}x_{ij}=1,j=1,2,\dots,15 i=115xij=1,j=1,2,,15
u i − u j + 15 x i j < = 14 , i = 1 , 2 , … , 15 , j = 2 , 3 , … , 15 u_i-u_j+15x_{ij}<=14,i=1,2,\dots,15,j=2,3,\dots,15 uiuj+15xij<=14,i=1,2,,15,j=2,3,,15
u 1 = 0 , 1 ≤ u i ≤ 14 , i = 2 , 3 , … , 15 u_1=0,1\leq u_i\leq14,i=2,3,\dots,15 u1=0,1ui14,i=2,3,,15
x i j = 0 x_{ij}=0 xij=0或者 1 , i , j = 1 , 2 , … , 15 1,i,j=1,2,\dots,15 1,i,j=1,2,,15

import pandas as pd
data=pd.read_excel("data.xlsx",header=None).fillna(0).values
import numpy as np
n=data.shape[1];w=np.zeros((n+1,n+1))
for i in range(n):
    for j in range(n):
        w[i,j]=sum(data[:,i]*data[:,j])
import cvxpy as cp
x=cp.Variable((n+1,n+1),integer=True)
obj=cp.Minimize(cp.sum(cp.multiply(w,x)))
u=cp.Variable(n+1,integer=True)
con=[cp.sum(x,axis=0)==1,cp.sum(x,axis=1)==1,x>=0,x<=1,u[0]==0,u[1:]>=1,u[1:]<=n+1]
for i in range(n+1):
    for j in range(1,n+1):
        con.append(u[i]-u[j]+(n+1)*x[i,j]<=n)
pro=cp.Problem(obj,con)
pro.solve(solver=cp.GLPK_MI)
print(x.value)
print(pro.value)

在这里插入图片描述

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

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

相关文章

谷粒商城学习笔记(三):简介-项目微服务划分图

目录 一、微服务划分图二、前后端分离三、网关四、业务微服务群五、第三方服务六、服务治理七、状态监控八、数据层 一、微服务划分图 二、前后端分离 这个项目是基于前后端分离的开发&#xff0c;需要创建一些前端项目&#xff0c;admin-vue是面向工作人员的后台管理系统&…

论文笔记--SimCSE: Simple Contrastive Learning of Sentence Embeddings

论文笔记--SimCSE: Simple Contrastive Learning of Sentence Embeddings 1. 文章简介2. 文章概括3 文章重点技术3.1 对比学习 Contrastive Learning3.2 Unsupervised SimCSE3.3 Supervised SimCSE3.4 Anisotropy3.5 Alignment and Uniformity 4. 文章亮点5. 原文传送门6. Refe…

Spring中Aop实现日志功能

文章目录 前言1.环境搭建2.设计日志记录表3.aop需要引入aspectj依赖4.日志实体类设计5.自定义日志BusiLog注解6.定义日志切面6.1 此处只使用了环绕通知6.2 Aspect中有5种通知 7.业务中使用注解8.测试8.1 测试查询8.2 测试删除 前言 上篇分享了jdk动态代理以及cglib代理&#x…

SQL注入总结

Sql注入定义&#xff1a; 就是通过把sql命令插入到web表单提交或输入域名或页面请求的查询字符串&#xff0c;最终达到欺骗服务器执行的sql命令的目的。 sql注入分类&#xff1a; 基于联合查询 基于错误回显 基于盲注&#xff0c;分时间盲注和布尔型的盲注 基于user-agen…

NIN(Network In Network)

目录 论文信息摘要批注 主要工作1. MLPCONV结构1.1为什么11卷积层可以代替MLP层1.2 批注2. Global Average Pooling(GAP)3、NIN网络结构NIN论文解读及个人理解NIN网络的代码实现&#xff08;pytorch&#xff09; 参考文献 论文信息 论文名称&#xff1a;Network In Network 论…

SQL注入—报错注入

0x00 背景 SQL注入长期位于OWASP TOP10 榜首&#xff0c;对Web 安全有着很大的影响&#xff0c;黑客们往往在注入过程中根据错误回显进行判断&#xff0c;但是现在非常多的Web程序没有正常的错误回显&#xff0c;这样就需要我们利用报错注入的方式来进行SQL注入了。这篇文章会讲…

SpringBoot集成WebSocket的两种方式

本站在2014年4月时曾全面的学习HTML5的技术&#xff0c;特写过HTML5的WebSocket示例&#xff0c;当时使用的Servlet3.0规范中的API&#xff0c;需要Tomcat7的支持&#xff08;貌似在Tomcat6的后期维护版本也增加了WebSocket的支持&#xff09;&#xff0c;早在当初该示例还是本…

SVN注册下载安装以及使用一气呵成

本博客根据SVNbucket官方视频学习制作的,这里记录本人操作的记录 视频链接: https://www.bilibili.com/video/BV1k4411m7mP?vd_sourcea4c65e14d1ff11ea858cadc164fbb59e 一 .SVN的介绍 1.SVN是什么 查阅资料可以知道 ,这是一个开放源代码的版本控制系统,管理着随时间改变的…

docsify项目部署(华为云+宝塔+centos+docker+nginx)踩坑指南

docsify部署&#xff08;华为云宝塔centosdockernginx&#xff09; &#x1f5e1;1、安装docker 首先在服务器中安装docker sudo yum install -y yum-utils由于之前我的python默认版本升级到了python3&#xff0c;但yum执行使用的是python2&#xff0c;就遇到报错 File &quo…

Hbase架构

HBase 系统遵循 Master/Salve 架构&#xff0c;由三种不同类型的组件组成&#xff1a; client 提供了访问hbase的接口提供cache缓存提高访问hbase的效率 , 比如region的信息 Zookeeper保证任何时候&#xff0c;集群中只有一个 Master&#xff1b;存储所有 Region 的寻址入口&…

基于深度学习的高精度工人阶梯检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度工人阶梯检测识别系统可用于日常生活中或野外来检测与定位工人阶梯目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的工人阶梯目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5…

Verilog基础:标识符的层次名引用

相关文章 Verilog基础&#xff1a;表达式位宽的确定&#xff08;位宽拓展&#xff09; Verilog基础&#xff1a;表达式符号的确定 Verilog基础&#xff1a;数据类型 Verilog基础&#xff1a;位宽拓展和有符号数运算的联系 Verilog基础&#xff1a;case、casex、ca…

Java8 Stream详解及创建流方法使用示例(二)

本章介绍Stream 创建流的操作&#xff1a;创建流指的是将一个集合或其他数据源转换为 Stream 流对象的过程。通常情况下&#xff0c;我们可以使用 Stream 类的静态方法来创建流对象&#xff0c;如 Stream.of()、Collections.stream() 等。这些方法将返回一个 Stream 流对象&…

【模块三:职业成长】35|模块导读:回过头来看,你觉得架构师到底是做什么的?

你好&#xff0c;我是郭东白。我们今天就正式进入模块三的学习了。 我们在开篇词里面介绍了&#xff0c;模块三的目的是向你介绍架构师的能力维度&#xff0c;以及获取这些能力的方法。既然是总结架构师成长的课程&#xff0c;那么“什么是架构师”就是一个绕不过去的话题。 …

操作系统-内存管理-虚拟内存管理

目录 一、虚拟内存定义和特征 二、请求分页管理 页表机制 缺页中断机构 地址变换机构 三、页面置换算法 3.1最佳置换算法(OPT) 3.2先进先出置换算法(FIFO) 3.3最近最久未使用置换算法(LRU) 3.4时钟置换算法(CLOCK) 3.4.1简单时钟置换算法 3.4.2改进型时钟置换算法 四、…

数据库—mysql、数据库编程(API)

1. Linux平台准备 &#xff08;1&#xff09;安装SDK开发包的命令 sudo apt-get install libmysqlclient-dev &#xff08;2&#xff09;编译时需要链接的库:-lmysqlclient 2. mysql 的初始化和清理 #include <mysql/mysql.h> MYSQL mysql1; //创建句柄 mysql_init(&…

springboot+java高校图书馆图书借阅挂失崔还系统

功本次设计任务是要设计一个图书借阅系统&#xff0c;通过这个系统能够满足图书借阅系统的管理及用户的图书借阅功能。系统的主要功能包括&#xff1a;主页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;借阅证件管理&#xff0c;挂失信息管理&#xff0c;图书信息管理…

华为OD机试真题 JavaScript 实现【快速寻找某字符】【牛客练习题】

一、题目描述 给定一个一个目标值 target和一个 元素升序的无重复数字字符串 &#xff0c;写一个函数搜索 字符串 中的 target&#xff0c;如果目标值存在返回下标&#xff08;下标从 0 开始&#xff09;&#xff0c;否则返回 -1。 二、输入描述 第一行输入一个目标值target…

pullup和pulldown在verilog中的使用方法

0 前言 这段时间涉及到了IO-PAD&#xff0c;在IO-PAD的RTL的时候注意到了pullup和pulldown&#xff0c;对这个知识比较好奇&#xff0c;就研究了一下&#xff0c;顺便记录下来&#xff0c;IO-PAD的内容等我再研究研究再考虑记录吧 >_< 1 pullup和pulldown的介绍 pullu…

springboot3错误处理机制源码分析

ErrorMvcAutoConfiguration 在springboot启动时会自动装配默认的错误处理机制 ErrorMvcAutoConfiguration springboot正在运行&#xff0c;此时发生了404的错误。&#xff08;业务错误场景&#xff09;分析底层处理流程。 1.如果在对应的controller层中设置了对应的错误处理器…