matlab - 如何将已解决的变量从 ILOG CPLEX 导出到 MATLAB?
问题描述
我正在使用 IBM ilog cplex 优化器来解决一个大整数编程问题。我必须依赖 MATLAB 来生成数据集,我可以将它以适当的格式复制到 .dat 文件中。使用这个 .dat 文件,我可以解决 IBM ilog cplex 环境中的问题。接下来,我尝试将求解的值写入 .txt 或 .m 文件,以便可以在 MATLAB 中导入这些值并将它们用于图形表示。但是,当我尝试执行此操作时,如果变量太长,则将其写入多行,如下所示:
x_b = [0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 1 0];
因此,在 MATLAB 中将其作为数组导入变得不可能。那么,有人可以建议一个更好的方法来做到这一点吗?
谢谢。
解决方案
在 OPL CPLEX 中,如果您编写 .mod
range r=1..80;
int x_b[r]=...;
execute
{
var f=new IloOplOutputFile("exp.txt");
for(var i in r) f.writeln(x_b[i]);
f.close();
}
并使用您的 .dat
x_b = [0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 1 0];
你会得到 exp.txt
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
1
0
0
1
1
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
您可以使用 Matlab 中的 fscanf 读取
推荐阅读
- swift - 为什么我在尝试仅在 tvOS 目标上使用 Apple 登录时收到错误 7014
- mysql - 如何在mysql中将列转换为数组?
- java - 使用 Java Lambda 表达式并行查询 DynamoDb GSI
- c# - 如何在我的控制台和 wpf 应用程序之间使用非对称加密?
- spring-boot - 容器化 Spring Boot 应用程序中的 AJP 不起作用
- sql - 如何使用 PL/SQL 迭代输入变量
- java - 单击 24 小时版本时,TimePicker 错误地选择了同一时间的 12 小时版本
- csv - 将 csv 导入 Neo4j,其中多列有空单元格
- php - Nginx 可以在没有代理的情况下将 ssl_client_verify 添加到请求标头以让 Symfony 知道正在使用客户端 ssl 证书?
- dart - 如何取消字符串化(转换为非字符串)飞镖中的字符串?