本文同步发布于我的网站

软件版本

  • MATLAB R2023b
  • yalmip 2021-03-31
  • CPLEX 12.10

不求新,但求适配。此版本组合经过我在两台电脑上成功安装

下载链接

链接:https://pan.baidu.com/s/1-FBktdRcaCjRw62u76SQGw?pwd=fkl5

提取码:fkl5

安装yalmip

解压 YALMIP-master.zip,并将解压出来的 YALMIP-master 文件夹移动到 MATLAB安装目录\R2023b\toolbox下。

启动MATLAB,在上方的主页中找到设置路径

点击添加并包含子文件夹

找到方才移动的 MATLAB安装目录\R2023b\toolbox\YALMIP-master 文件夹,选择文件夹

点击保存然后点击关闭

这时候去命令行测试一下是否正常工作,在MATLAB命令行中输入 yalmiptest。如果有结果,说明yalmip安装成功。

首先映入眼帘的应该是一份很长很长的清单,这是在搜索已安装的求解器。向上滑动,可以看到不同版本的 CPLEX,但是其状态都为 not found

+++++++++++++++++++++++++++++++++++++++++++++++
| Searching for installed solvers |
+++++++++++++++++++++++++++++++++++++++++++++++
| Solver| Version/module| Status|
+++++++++++++++++++++++++++++++++++++++++++++++
| BARON| | not found|
| BINTPROG| | not found|
| BISECTION| | found|
| BMIBNB| | found|
| BNB| | found|
| BONMIN| | not found|
| BPMPD| | not found|
| CBC| | not found|
| CDCS| | not found|
| CDD| CDDMEX| not found|
| CLP| CLPMEX-LP| not found|
| CLP| CLPMEX-QP| not found|
| CLP| OPTI| not found|
| CONEPROG| | found|
| CPLEX| IBM 12.10.0| not found|
| CPLEX| IBM 12.10.0| not found|
| CPLEX| IBM 12.9.0| not found|
| CPLEX| IBM 12.9.0| not found|
| CPLEX| IBM 12.8.0| not found|
| CPLEX| IBM 12.8.0| not found|
| CPLEX| IBM 12.7.1| not found|
| CPLEX| IBM 12.7.1| not found|
| CPLEX| IBM 12.7.0| not found|
| CPLEX| IBM 12.7.0| not found|
| CPLEX| IBM 12.6.3| not found|
| CPLEX| IBM 12.6.3| not found|
| CPLEX| IBM 12.6.2| not found|
| CPLEX| IBM 12.6.2| not found|
| CPLEX| IBM 12.6.1| not found|
| CPLEX| IBM 12.6.1| not found|
| CPLEX| IBM 12.6.0| not found|
| CPLEX| IBM 12.6.0| not found|
| CPLEX| IBM 12.5.1| not found|

此时,你可以 Press any key to continue test 按下任意键以继续测试,也可以 Ctrl+C 以取消继续的测试。

安装CPLEX

双击 cplex_entserv1210.win-x86-64.exe 开始安装CPLEX。该过程中只有一个选择安装路径的选择,默认/安装到你想要安装的地方即可。

(这一步我更换安装路径为 D:\Software\CPLEX1210

请记住安装路径,之后要用到。

如果您没有安装 Microsoft Visual C++ 2015 Redistributable Package (x64)的话,请点击下方链接以安装。安装的过程较为简单,在此不作赘述。

恭喜!CPLEX12.10.0已经成功安装至你指定的目录

现在回到MATLAB,继续设置路径添加并包含子文件夹,找到方才指定的CPLEX安装路径下CPLEX_Studio\cplex\matlab选择文件夹

点击保存然后点击关闭

重新在MATLAB命令行窗口中输入 yalmiptest

|           CLP|        CLPMEX-QP|   not found|
| CLP| OPTI| not found|
| CONEPROG| | found|
| CPLEX| IBM 12.10.0| found| <------!!!
| CPLEX| IBM 12.10.0| found| <------!!!
| CPLEX| IBM 12.9.0| not found|
| CPLEX| IBM 12.9.0| not found|
| CPLEX| IBM 12.8.0| not found|
| CPLEX| IBM 12.8.0| not found|
| CPLEX| IBM 12.7.1| not found|
| CPLEX| IBM 12.7.1| not found|
| CPLEX| IBM 12.7.0| not found|
| CPLEX| IBM 12.7.0| not found|

可以注意到此时找到了CPLEX求解器。

实操测试

既然已经安装好了,那么就来用一道题目测试一下吧!

假设有一块原材料木板,长宽确定为 \(3000\times1500\),有两种切割形状(可是更多切割形状),切割形状 p1 为长宽 \((373,201)\),切割形状 p2 为长宽 \((406,229)\)。在保证原材料木板利用率最高的情况下,求两种切割数量以及最后的切割位置?

代码(解不出来的,这道题不能这样做……)

clear;
W = 3000;
H = 1500;
sizes = [373, 201; 406, 229];
% W = 15;
% H = 20;
% sizes = [3, 2; 4, 5];
numTypes = size(sizes, 1); x=binvar(W,H,numTypes);
% cover=binvar(W,H); C=[];
for t = 1:numTypes
w = sizes(t, 1);
h = sizes(t, 2);
for i = 1:W
fprintf("构建第%d行\n",i);
for j = 1:H
if i+w-1>W || j+h-1>H
C = [C, x(i,j,t)==0];
else
% 如果在 (i, j) 放置了形状 t
% 则 (i:i+w-1, j:j+h-1) 内的所有点都不能再放置其他形状
for ii=i:i+w-1
for jj=j:j+h-1
for tt=1:numTypes
if i==ii && j==jj && t==tt
continue
end
C=[C,x(i,j,t)~=x(ii,jj,tt)];
end
end
end
end
end
end
end disp("约束条件构建完毕");
ops=sdpsettings('verbose',0,'solver','cplex');
area=sizes(:,1).*sizes(:,2);
z=(sum(x(:,:,1))*area(1)+sum(x(:,:,2))*area(2));
reuslt=optimize(C,z);
if result.problem == 0
% value(x)
value(z)
else
disp('求解过程中出错');
end

参考文献

一条龙教程:Matlab下使用yalmip(工具箱)+cplex(求解器)_matlab cplex一条龙-CSDN博客

从这篇博文中,我学习了基本的安装方法,但是基于MATLAB R2023b安装这位博主提供的安装包(yalmip+CPLEX12.8),运行时会出现报错,原因暂不详。

Matlab使用yalmip与cplex12.10的更多相关文章

  1. 《DSP using MATLAB》示例 Example 9.10

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  2. 《DSP using MATLAB》示例Example 8.10

    这个例子的代码我不会写,只是放一张书的截图图片在这里.以后再改进吧.

  3. 《DSP using MATLAB》示例Example 6.10

    上代码: % Pole-Zero IIR filter to Lattice-ladder structure filter b = [1, 2, 2, 1]; a = [1, 13/24, 5/8, ...

  4. Atitit MATLAB 图像处理 经典书籍attilax总结

    Atitit MATLAB 图像处理 经典书籍attilax总结 1.1. MATLAB数字图像处理1 1.2. <MATLAB实用教程(第二版)>((美)穆尔 著)[简介_书评_在线阅读 ...

  5. 基于FPGA的音频信号的FIR滤波(Matlab+Modelsim验证)

    1 设计内容 本设计是基于FPGA的音频信号FIR低通滤波,根据要求,采用Matlab对WAV音频文件进行读取和添加噪声信号.FFT分析.FIR滤波处理,并分析滤波的效果.通过Matlab的分析验证滤 ...

  6. Machine Learning – 第2周(Linear Regression with Multiple Variables、Octave/Matlab Tutorial)

    Machine Learning – Coursera Octave for Microsoft Windows GNU Octave官网 GNU Octave帮助文档 (有900页的pdf版本) O ...

  7. MATLAB介绍

    MATLAB MATLAB[1]  是美国MathWorks公司出品的商业数学软件,用于算法开发.数据可视化.数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink ...

  8. 【推荐】30个Matlab视频教程合集(含GUI视频教程)下载

    自己收集别人网盘上存的资源,分享一下[点击文件名可得到下载地址]        Matlab 7.8 基础视频教程 实例1 数据传递和多窗口编程_avi.zip 205.11 MB   Matlab ...

  9. 史上最全的Matlab资源电子书教程和视频下载合集【超级推荐】

    收藏吧,网上搜集的,费了老大劲了,推荐给有需要的人,^_^.   MATLAB课件2007北京交通大学.zip 4.87 MB   A Guide to MATLAB for Beginners an ...

  10. 描述性统计的matlab实现

    理论讲的再多不会做也白弄 直接上手 一.针对接近正态分布的(均值,方差,标准差,极差,变异系数,偏度,峰度) 这里我必须提前说明一点就是,你在写好函数后,函数的名是dts,你保存的文件名也必须是dts ...

随机推荐

  1. buuctf-web 解题过程

    [SUCTF 2019]Upload Labs 2 源码 // admin.php <?php include 'config.php'; class Ad{ public $cmd; publ ...

  2. try except 案例

    def to_split(df): # 删除不符合加班统计的记录 try: df.dropna(subset=['姓名'], inplace=True) hang_index = df[df['加班信 ...

  3. Java基于XXLJOB的定时任务实现阶梯式通知方式

    数据库表设计 CREATE TABLE `tx_order_push_info` ( `order_no` varchar(64) DEFAULT NULL COMMENT '交易单号', `orde ...

  4. 【SpringMVC】RESTful CRUD

    RESTful CRUD REST:即 Representational State Transfer.(资源)表现层状态转化.是目前最流行的一种互联网软件架构.它结构清晰.符合标准.易于理解.扩展方 ...

  5. 【Python】Python环境安装与简单代码运行

    Python环境安装与简单代码运行 视频教程链接:https://www.bilibili.com/video/BV1KG4y1t7dM/ 一.配置Python环境 1.下载Python安装包 建议使 ...

  6. Java8 Lambda Collection 的常见用法

    import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.huto ...

  7. 画个Shape留意到的东西

    这几个知识点 在 CoreGraphics 框架中有这样一个方法: public func addArc(center: CGPoint, radius: CGFloat, startAngle: C ...

  8. 依赖注入的方式( 构造函数注入 、 set 方法注入 、注解注入)

    一.构造函数注入 二.set方式注入 三.集合注入

  9. centos firewall防火墙操作指令记录

    1. 查看防火墙状态 systemctl status firewalld.service 2. 关闭防火墙 systemctl stop firewalld.service 3. 开机自动关闭防火墙 ...

  10. 判断属性值,选择性执行下一步(get element attribute指令的用法)

    应用场景: 下图线下支付,在退款前需要勾选这种支付方式,否则无法实现支付. 如果在测试脚本内即加入勾选指令,那么在下次执行的时候就会再次勾选,从而造成去除勾选的操作 对比一下勾选前后,勾选框元素内容组 ...