微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将求解的变量从 ILOG CPLEX 导出到 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 读取

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