疫情物资储藏库建设规划问题,使用matlab+cplex+yalmib求解

news2025/8/11 6:25:43

疫情物资储藏库建设规划问题,使用matlab+cplex+yalmib求解

  • 一、Cplex安装及配置
  • 二、yalmib安装及配置
  • 三、案例分析

一、Cplex安装及配置

一、安装Cplex
Cplex 是一款商业化的规划问题求解器,支持python和matlab等常用语言,功能非常强大。可以根据需求在官网上下载到对应的版本。community-edition可以免费试用,但最多只能计算1000个变量或1000个约束条件的优化问题。
点击此处进入IMB官网进行下载:Cplex官方下载地址
二、将安装好的Cplex添加到路径
安装好之后,打开Cplex文件夹(根据你安装的位置而定),里面有一个matlab文件夹,打开matlab之和,通过添加路径的方法将“…\cplex\matlab”文件夹和其中包含的子文件夹都添加到matlab的路径之中。
在这里插入图片描述
![](https://img-blog.csdnimg.cn/ae260be37ec74b48a9ffa59d4edfe6d4.jpe
三、验证是否配置成功
方法1:在命令行输入:doc cplex
如果安装成功会显示Cplex的帮助文档。
但是请注意: 做到这一步只能说明matlab配置好了Cplex求解器,但是不能保证matlab+yalmib+cplex能够运行。因为三者各版本的兼容性不一样,比如说编者用的Matlab2019a,只能兼容Cplex12.8和与其对应的yalmib版本。换成其他版本虽然安装成功,但是后续可能无法使用。
在这里插入图片描述
方法二、安装好yamlib后,通过test来查看已经安装的求解器
详细过程见 yamlib的安装

二、yalmib安装及配置

yalmib的安装过程和Cplex类似:
一、下载安装:点击进入yalmib官网下载地址
二、将安装好的文件放入matlab安装路径下的toolbox文件夹。
三、将按照好的文件添加到matlab路径
四、使用test进行测试
在这里插入图片描述
根据这个结果,可以查看yalmib能够调用的求解器,显示了CPLEX-IBM,说明matlab+cplex+yalmib的环境已经配置好。

三、案例分析

目标函数:成本最小+时间最短

minZ_1=∑_(i∈I)▒〖f_i X〗i +∑(i∈I)▒〖〖∑_(k∈K)▒h_i^k S〗i^k X_i 〗+ω∑(i∈I)▒∑_(j∈J)▒∑_(k∈K)▒〖C_j^k q〗_ij^k 〖(d〗_ij/v_ij-T)

约束条件:

0≤S_ik≤D_ik,∀i∈I,∀k∈K (3-2)
式(3-2)表示储备库 中第 类物资的存储量不超过其最大存储能力。
∑_(j∈J)▒〖〖C_j^k q〗ijk≤S_ik,∀i∈I〗,∀k∈K (3-3)
式(3-3)表示从储备库 送往所有需求点的第 类物资数量不超过其最大储存能力。
(i∈I)▒〖q_ij^k=1,∀j∈J,∀k∈K〗 (3-4)
式(3-4)表示所有应急医疗物资储备库向应急物资需求点 提供第 类物资数量之和等于 点第 类物资需求数。
0≤q_ij^k≤1,∀i∈I,∀j∈J,∀k∈K (3-5)
式(3-5)表示应急医疗物资储备库 向应急物资需求点 提供第 类物资的数量不大于 点第 类的物资需求数。
0≤q_ij^k≤X_i,∀i∈I,∀j∈J,∀k∈K (3-6)
式(3-6)表示仅当应急储备库 被选址时,应急储备库才能提供应急物资。
∑_(i=1)^m▒〖X_i≤P〗 (3-7)
式(3-7)表示所选中的储备库 总数不大于上限P个。
X_i∈{0,1},∀i∈I (3-8)
式(3-8)表示X_i为 整数决策变量。

代码实现(全部代码请私聊):

clc
close all
clear all
warning off
%% 读取原始数据
%% 数据路径
filepath='data.xlsx';
%% 读取数据保存到结构体data中
[need_data,need_txt]=xlsread(filepath,'受灾区域物资需求量');
%step2 参数设置
% load data.mat
supplies=[supply.capacity];
demands=[demand.constant];
f=[supply.cost];
%% 变量定义
x = binvar(Supply_num_all, 1);%
y = sdpvar(Demand_num, Supply_num_all);
%% 添加约束条件
F = [x(1)+x(2)+x(3)+x(4)+x(5)+x(6)+...
    x(7)+x(8)+x(9)+x(10)<=P,...
    y(1,1)+y(1,2)+y(1,3)+y(1,4)+y(1,5)+y(1,6)+...
    y(1,7)+y(1,8)+y(1,9)+y(1,10)==demands(1),
    .
    .
    .
    .................................等式约束.................................
    y(1,1)+ y(2,1)+y(3,1)+y(4,1)+y(5,1)+y(6,1)+...
    y(7,1)+y(8,1)+y(9,1)+y(10,1)+y(11,1)<=x(1)*supplies(1),...
   .
   .
   .
   .................................不等式约束................................. ];
% %设置不确定集合,此示例为box类型
% % W = [0<=w(1)<=40,0<=w(2)<=40,0<=w(3)<=40,uncertain(w)];
%  W = [-20<=w<=20,uncertain(w)]; %uncertain(w)指明不确定性
options = sdpsettings('solver','cplex');   %设置求解器为cplex
u=0.5;
f1=sum(x.*f');
f2=hik*sum(sum(y));
T_thre=get_T_thre(dist,Vij,T);
f3=u*w*sum(sum(T_thre.*y));
f4=(1-u)*cijk*sum(sum(dist.*y));
objective =sum(f1+f2+f3+f4); %目标函数 最小化优化变量累加和
sol=optimize(F,objective,options); %优化求解

结果展示

CPXPARAM_MIP_Display 1
Tried aggregator 1 time.
MIP Presolve eliminated 110 rows and 0 columns.
Reduced MIP has 22 rows, 120 columns, and 240 nonzeros.
Reduced MIP has 10 binaries, 0 generals, 0 SOSs, and 0 indicators.
Presolve time = 0.02 sec. (0.13 ticks)
Probing time = 0.00 sec. (0.01 ticks)
Tried aggregator 1 time.
Reduced MIP has 22 rows, 120 columns, and 240 nonzeros.
Reduced MIP has 10 binaries, 0 generals, 0 SOSs, and 0 indicators.
Presolve time = 0.00 sec. (0.11 ticks)
Probing time = 0.00 sec. (0.01 ticks)
MIP emphasis: balance optimality and feasibility.
MIP search method: dynamic search.
Parallel mode: deterministic, using up to 8 threads.
Node log . . .
Best integer = 1.159707e+04 Node = 0 Best node = 0.000000e+00
Best integer = 4.498184e+03 Node = 0 Best node = 0.000000e+00
Best integer = 3.384569e+03 Node = 0 Best node = 3.138971e+03
Best integer = 3.202350e+03 Node = 0 Best node = 3.202350e+03
Implied bound cuts applied: 16
Mixed integer rounding cuts applied: 2
Gomory fractional cuts applied: 3

在这里插入图片描述
有错误之处还请批评指正。
有朋友反映说下载不了Cplex和yalmib;
这里提供一个适配matlab2019以后的Cplex+yalmib版本

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

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

相关文章

19 0A-检索服务器支持的所有DTC的状态

诊断协议那些事儿 诊断协议那些事儿专栏系列文章&#xff0c;19服务作为UDS中子功能最多的服务&#xff0c;一共有28种子功能&#xff0c;本文将介绍常用的19 0A服务&#xff1a;检索服务器支持的所有DTC的状态。此子功能不论DTC是否发生、状态如何&#xff0c;都让ECU返回所有…

1533_AURIX_TriCore内核架构_指令集信息

全部学习汇总&#xff1a; GreyZhang/g_tricore_architecture: some learning note about tricore architecture. (github.com) 学习的顺序有一点调整&#xff0c;切换到了内核的第二卷。先了解一下指令集的基本信息。第二卷主要就是讲指令集以及扩展的&#xff0c;而且基本上只…

RSA加密算法Python实现

RSA加密算法Python实现1.RSA算法简介2.RSA算法涉及的数学知识2.1互素2.2 欧拉定理2.3求模逆元2.4 取模运算2.5 最大公因数2.6 最小公倍数2.7 欧几里得算法2.8 扩展欧几里得算法3.RSA算法数学实现3.1理论3.2实践4.RSA算法代码实现4.1RSA算法代码实现14.1RSA算法代码实现21.RSA算…

STP、RSTP、MSTP

STP、RSTP、MSTP的配置 本篇介绍STP、RSTP、MSTP的配置和常用的管理命令。 STP/RSTP/MSTP简介 以太网中为了进行链路备份&#xff0c;提高网络可靠性&#xff0c;通常会使用冗余链路&#xff0c;但是这也带来了网络环路的问题。网络环路会引发广播风暴和MAC地址表振荡等问题…

连续仨月霸占牛客榜首,京东 T8 呕心沥血神作:700 页 JVM 虚拟机实战手册

虚拟机是一种抽象化的计算机&#xff0c;通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java 虚拟机有自己完善的硬体架构&#xff0c;如处理器、堆栈、寄存器等&#xff0c;还具有相应的指令系统。JVM 屏蔽了与具体操作系统平台相关的信息&#xff0c;使得 Java 程序只…

基于结构应力方法的焊接结构疲劳评估及实例分析(下篇)

作者 | 裴宪军 &#xff0c;仿真秀专栏作者 一、写在文前 焊接技术作为现代制造业中的支柱技术之一&#xff0c;是制造强国的关键保障。由于其整体性强、轻量化、经济性好等优点&#xff0c;焊接结构被广泛应用于轨道交通、航空航天&#xff0c;船舶、重型装备等领域&#xf…

LinkedIn领英开发客户方法大全(篇一)

一、准备工作 &#xff08;绝对不能小看准备工作&#xff01;&#xff01;&#xff01;&#xff01;所以我写的很详细&#xff01;&#xff01;&#xff01;&#xff09; 1.建议大家使用网页版的领英开发客户&#xff0c;并且界面语言要切换为英文&#xff01;&#xff01; 领…

你听说过LabVIEW吗?

LabVIEW是美国国家仪器公司NI的图形化的编程语言&#xff0c;LabVIEW的全称是Laboratory Virtual Instrument Engineering Workbench&#xff0c;平时我们常见的Python、C/C、Java编程语言虽然也分编译型语言和解释型语言、底层语言和高级语言等&#xff0c;但基本都是文字形式…

[附源码]java毕业设计疫情状态下病房管理平台

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Spring 如何解决循环依赖

1.什么是循环依赖&#xff1f; 循环依赖就是循环引用&#xff0c;就是两个或多个Bean相互之间的持有对方&#xff0c;比如A引用B&#xff0c;B引用C&#xff0c;C引用A&#xff0c;则它们最终反映为一个环。 我们这里以两个类A和B为例进行讲解&#xff0c;如下是A和B的声明&a…

MCE | 丙型肝炎病毒的终结之路

Harvey J. Alter 对输血相关性肝炎的系统研究表明&#xff0c;一种未知病毒是慢性肝炎的常见病因&#xff1b;Michael Houghton 使用了一种未经验证的策略&#xff0c;分离了新病毒丙型肝炎病毒 (Hepatitis C virus) 的基因组&#xff1b;Charles M. Rice 提供了最终的证据&…

C语言源代码系列-管理系统之会员计费系统

往期文章分享点击跳转>《导航贴》- Unity手册&#xff0c;系统实战学习点击跳转>《导航贴》- Android手册&#xff0c;重温移动开发 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过…

【附源码】计算机毕业设计JAVA疫情期间物资分派管理系统

【附源码】计算机毕业设计JAVA疫情期间物资分派管理系统 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; …

FEDformer里面的CZ1d

这里的x是传入的value&#xff0c;是&#xff08;1,24,128,8&#xff09;维度的。 然后&#xff0c;他提取的extra_x的维度是&#xff08;1,8,128,8&#xff09;这个维度的。 然后&#xff0c;下一步&#xff0c;将这两个xcat起来&#xff0c;不知道在干啥。 因为本来的x是&…

赵本山最有钱徒弟,曾经入股宾利投资吴京,如今又盯上歌手腾格尔

有句话叫作&#xff1a;过了山海关&#xff0c;都找赵本山。说明本山大叔在东北影响很大&#xff0c;其实他的徒弟也不弱。赵本山老师作为央视春晚小品王&#xff0c;手下弟子没有三千也有八百&#xff0c;个个都是出来拔萃身怀绝技。 这些人之所以拜本山大叔为师&#xff0c;无…

[附源码]java毕业设计医药管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Teracloud+GoodSync

TeracloudGoodSync 前言 Teracloud除了存文献外&#xff0c;它还是个云盘&#xff0c;可以搭配各种同步软件使用&#xff0c;之前在博客多终端云同步文献管理&#xff1a;ZoteroTeraCloud&#xff08;WindowsAndroid&#xff09;里提到用同步软件搭配Teracloud使用&#xff0…

使用SSM搭建图书商城管理系统(完整过程介绍、售后服务哈哈哈)

经过几位下载同学的反应、大部分运行未成功的原因有以下几点、特此记录以下。代码是完全没有问题的 项目地址&#xff1a;https://download.csdn.net/download/weixin_43304253/85811914 代码运行环境&#xff1a; tomcat&#xff1a;8 IDEA&#xff1a;2020 JDK&#xff1a;1…

vue.js毕业设计,基于vue.js前后端分离在线考试系统设计与实现(H5移动项目)

功能介绍 用户首次登陆系统需要注册一个用户或直接使用微信作为账号&#xff0c;用户在登录平台后&#xff0c;可以进行平台的操作。主要模块包括以下几点&#xff1a; 注册登录功能&#xff1a;注册普通账号登录&#xff1b;也可以直接使用微信登录&#xff1b;登录后可以修改…

【MySQL进阶】单表访问方法

【MySQL进阶】单表访问方法 文章目录【MySQL进阶】单表访问方法一&#xff1a;访问方法&#xff08;access method&#xff09;1&#xff1a;const2&#xff1a;ref3&#xff1a;ref_or_null4&#xff1a;range5&#xff1a;index6&#xff1a;all二&#xff1a;注意事项1&…