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

Matlab-use-yalmip-and-cplex12-10/

本文同步发布于我的网站

软件版本

  • 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 × 1500 3000\times1500 3000×1500,有两种切割形状(可是更多切割形状),切割形状 p1 为长宽 ( 373 , 201 ) (373,201) (373,201),切割形状 p2 为长宽 ( 406 , 229 ) (406,229) (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:numTypesw = sizes(t, 1);h = sizes(t, 2);for i = 1:Wfprintf("构建第%d行\n",i);for j = 1:Hif i+w-1>W || j+h-1>HC = [C, x(i,j,t)==0];else% 如果在 (i, j) 放置了形状 t% 则 (i:i+w-1, j:j+h-1) 内的所有点都不能再放置其他形状for ii=i:i+w-1for jj=j:j+h-1for tt=1:numTypesif i==ii && j==jj && t==ttcontinueendC=[C,x(i,j,t)~=x(ii,jj,tt)];endendendendendend
enddisp("约束条件构建完毕");
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)
elsedisp('求解过程中出错');
end

参考文献

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Flink开发语言选择:Java vs Scala,哪种更适合你的项目?
  • RAG与LLM原理及实践(11)--- Milvus hybrid search 源码分析及思想
  • 操作符5 学习编程的第23天
  • vue项目名修改、webstorm和idea创建的项目重命名、重构项目、修改项目名称
  • 【海思SS626 | 内存管理】海思芯片的OS内存、MMZ内存设置
  • Web详解
  • 初识CSS(三)
  • redis超过内存大小是否会挂?
  • 怎么将mov视频转换成mp4?将mov视频转换成mp4的方法
  • 文心一言 VS 讯飞星火 VS chatgpt (323)-- 算法导论22.4 4题
  • 渗透测试实战-HFS远程RCE漏洞利用
  • Python爬虫——爬取bilibili中的视频
  • 数据结构(学习)2024.8.8(栈,队列)
  • 【物联网】(防水篇)电子产品如何做到IPX7级别的防水?
  • 【C++ 面试 - 基础题】每日 3 题(十三)
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • conda常用的命令
  • Elasticsearch 参考指南(升级前重新索引)
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 我有几个粽子,和一个故事
  • 用jquery写贪吃蛇
  • 关于Android全面屏虚拟导航栏的适配总结
  • # 安徽锐锋科技IDMS系统简介
  • (14)Hive调优——合并小文件
  • (4) PIVOT 和 UPIVOT 的使用
  • (5)STL算法之复制
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (ZT)一个美国文科博士的YardLife
  • (黑马点评)二、短信登录功能实现
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (三)mysql_MYSQL(三)
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (译) 函数式 JS #1:简介
  • (译)2019年前端性能优化清单 — 下篇
  • (转)ABI是什么
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .Net 路由处理厉害了
  • .NET/C# 使用反射注册事件
  • .NetCore发布到IIS
  • .NET上SQLite的连接
  • .Net中ListT 泛型转成DataTable、DataSet
  • //TODO 注释的作用
  • ::前边啥也没有
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [1127]图形打印 sdutOJ
  • [c++] 单例模式 + cyberrt TimingWheel 单例分析
  • [hdu4622 Reincarnation]后缀数组
  • [iOS开发]iOS中TabBar中间按钮凸起的实现
  • [JS7] 显示从0到99的100个数字
  • [Linux#42][线程] 锁的接口 | 原理 | 封装与运用 | 线程安全