当前位置: 首页 > news >正文

MATLAB中调用CPLEX求解工具箱

1. 安装CPLEX

建议安装CPLEX12.10学术版win-x86-64,安装包及安装步骤可参见参考网址1

2. 安装yalmip

YALMIP作为MATLAB的优化求解工具包,可以统一调用gurobi、cplex等多种求解器,十分方便,工具包开源免费下载,YALMIP官网

3. 在matlab的“设置路径”中,导入yalmip的文件路径

该文件是下载yalmip所得,直接将完整文件解压后剪切到matlab的toolbox文件目录下,然后再导入文件目录即可:


4. 在matlab的“设置路径”中,导入CPLEX安装后含MATLAB的文件路径

我将CPLEX安装在了以下路径 D:\CPLEX,故导入以下文件夹及其子文件 D:\CPLEX\cplex\matlab


5. 在matlab命令窗口中输入yalmiptest命令:

可以看到CPLEX已被导入!


由上图可知,很多类型的优化问题可直接使用CPLEX的Solver进行求解!


6. 运行几个调用CPLEX的求解案例

求解经典TSP问题

% 利用yamlip\CPLEX求解TSP问题
clear;clc;close all;
d = load('tsp_dist_matrix.txt')';
n = size(d,1);
% 决策变量
x = binvar(n,n,'full');
u = sdpvar(1,n);
% 目标
z = sum(sum(d.*x));
% 约束添加
C = [];
for j = 1:ns = sum(x(:,j))-x(j,j);C = [C,   s  == 1];
end
for i = 1:ns = sum(x(i,:)) - x(i,i);C = [C, s  == 1];
end
for i = 2:nfor j = 2:nif i~=jC = [C,u(i)-u(j) + n*x(i,j)<=n-1];endend
end
% 参数设置
ops = sdpsettings('verbose',0,'solver','cplex');
% 求解
result  = optimize(C,z);
if result.problem== 0value(x)value(z)
elsedisp('求解过程中出错');
end

其中,用到了tsp_dist_matrix.txt文件,内容如下。

0 7 4 5 8 6 12 13 11 18
7 0  3 10 9 14 5 14 17 17
4 3 0 5 9 10 21 8 27 12
5 10 5 0 14 9 10 9 23 16
8 9 9 14 0 7 8 7 20 19
6 14 10 9 7 0 13 5 25 13
12 5 21 10 8 13 0 23 21 18
13 14 8 9 7 5 23 0 18 12
11 17 27 23 20 25 21 18 0 16
18 17 12 16 19 13 18 12 16 0

运行结果如下

Version identifier: 12.10.0.0 | 2019-11-26 | 843d4de2ae
CPXPARAM_MIP_Display                             1
Tried aggregator 1 time.
Reduced MIP has 92 rows, 99 columns, and 396 nonzeros.
Reduced MIP has 90 binaries, 0 generals, 0 SOSs, and 0 indicators.
Presolve time = 0.00 sec. (0.20 ticks)
Probing time = 0.00 sec. (0.15 ticks)
Tried aggregator 1 time.
Detecting symmetries...
Reduced MIP has 92 rows, 99 columns, and 396 nonzeros.
Reduced MIP has 90 binaries, 0 generals, 0 SOSs, and 0 indicators.
Presolve time = 0.00 sec. (0.27 ticks)
Probing time = 0.00 sec. (0.16 ticks)
MIP emphasis: balance optimality and feasibility.
MIP search method: dynamic search.
Parallel mode: deterministic, using up to 16 threads.Node log . . .
Best integer =   7.700000e+01  Node =       0  Best node =   7.700000e+01
Clique cuts applied:  4ans =NaN     0     0     1     0     0     0     0     0     00   NaN     0     0     0     0     1     0     0     00     1   NaN     0     0     0     0     0     0     00     0     1   NaN     0     0     0     0     0     00     0     0     0   NaN     1     0     0     0     00     0     0     0     0   NaN     0     1     0     00     0     0     0     1     0   NaN     0     0     00     0     0     0     0     0     0   NaN     0     11     0     0     0     0     0     0     0   NaN     00     0     0     0     0     0     0     0     1   NaNans =77

截图如下:

由此证明CPLEX与MATLAB联调成功,可使用MATLAB中调用CPLEX这一强大的求解工具箱!


参考网址

  1. matlab2022+yalmip+cplex安装教程,win11 x64

  2. Cplex安装教程与使用介绍

  3. [Matlab]使用yalmip和cplex求解器求解规划问题

http://www.xdnf.cn/news/160741.html

相关文章:

  • Python + Playwright:如何在Docker 容器运行测试?
  • 0x27 A* + 0x28 IDA*
  • Adobe Photoshop(PS)2022 版安装与下载教程
  • 前端开发本地配置 HTTPS 全面详细教程
  • HackMyVM - Chromee靶机
  • 人工智能:入门阶段学习路径
  • per-task affinity 是什么?
  • 30天通过软考高项-第四天
  • Python循环语句-for循环(基础语法,range语句,临时变量作用域,嵌套应用)
  • 【计算机视觉】CV实战项目- DFace: 基于深度学习的高性能人脸识别
  • leetcode201.数字范围按位与
  • S参数的含义
  • 如何搭建和管理 FTP 服务器
  • 电商秒杀系统技术栈与难点解析 - Java架构师面试实战
  • 《Vue3学习手记5》
  • Redux和MobX有什么区别
  • 通过Golang实现快速实现MCP Server
  • 如何创建成员内部类数组
  • 小刚说C语言刷题——1109加密四位数
  • [笔记] MCPO搭建教程
  • 河南联通光猫超级管理员账号设置
  • 2025新版修复蛇年运势测试风水起名系统源码
  • VS BUG(6) LINK : fatal error LNK1158: 无法运行“rc.exe”
  • 自动化运维:从工具到实践的全面解析
  • C语言中转义字符的定义与使用详解
  • 基于ssm的仓库管理系统(源码+数据库)
  • 开源AI视频FramePack发布:6GB显卡本地运行
  • 大模型奖励建模新突破!Inference-Time Scaling for Generalist Reward Modeling
  • 用Python做有趣的AI项目1:用 TensorFlow 实现图像分类(识别猫、狗、汽车等)
  • CrewAI Community Version(二)——Agent