如何解决如何将求解的变量从 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 读取
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。