如何将已求解的变量从ILOGCPLEX导出到MATLAB



我正在使用IBM ilog cplex优化器来解决一个大整数编程问题。我必须依靠MATLAB来生成数据集,我可以将其以适当的格式复制到.dat文件中。有了这个.dat文件,我可以解决IBMilog-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

您可以使用fscanf从Matlab 中读取

相关内容

  • 没有找到相关文章

最新更新