【问题标题】:how can imposrt csv file to cplex如何将csv文件导入cplex
【发布时间】:2019-05-07 00:45:07
【问题描述】:

我有一个 CSV 文件,其中包含从节点 i 到节点 j 的距离以及节点的权重。此文件要测试尝试解决 p 中值问题的 CPLEX 代码。我是新的 CPLEX 用户,我不知道如何从 CSV 文件中获取距离和权重。我尝试使用 Excel 文件中的数据测试此代码,并得到了答案。但是,因为我想要使用大型数据集,所以需要导入 CSV 文件而不是 Excel 工作表。你能帮我知道我应该如何阅读我的d 专栏和w 专栏吗?下面我带来了我的 CSV 文件的代码和图像

 int w[demands]=...;
 float d[demands][facilities]=...;



 }[CSV file][1]

【问题讨论】:

  • 感谢您的回复。

标签: csv cplex opl


【解决方案1】:

为了从任何基于文本的文件格式读取数据,您可以使用脚本和IloOplInputFile。这允许您逐行读取文件。然后,您可以拆分 CSV 分隔符上的行并提取必填字段。

您可以在 CPLEX 论坛here 上找到一个示例: 假设你有这个文件demand.csv(第一个字段给出第一个索引,第二个字段给出第二个索引,第三个字段给出值)

1;1;5
1;2;10
1;3;15
2;1;20
2;2;25
2;3;30

这段代码初始化d数组:

range demands = 1..2;
range facilities = 1..3;
float d[demands][facilities];
execute {
   var f = new IloOplInputFile("demand.csv");
   while (!f.eof) {
      var data = f.readline().split(";");
      if (data.length == 3) // Beware of empty lines
         d[Opl.intValue(data[0])][Opl.intValue(data[1])] = Opl.floatValue(data[2]);
   }
   writeln(d);
}

d 数组也是如此。

【讨论】:

猜你喜欢
  • 2017-06-30
  • 2019-11-07
  • 2011-03-24
  • 2015-10-04
  • 2017-09-05
  • 1970-01-01
  • 2011-04-07
  • 2012-06-20
相关资源
最近更新 更多