【发布时间】:2019-05-12 15:07:43
【问题描述】:
我的问题与我之前的问题有关。我应该对我的代码进行一些更改。我在 CSV 文件中有许多介于 1 到 100 之间的节点。我创建另一个 CSV 文件并在 100 个节点之间生成 20 个随机数,并将它们称为请求点。每个需求点都有特定的需求,即随机生成的 1 到 10 之间的数字。我想阅读这个需求点(索引)及其权重。这是我问题的第一部分?我怎么读这个? 之后,我需要在这些需求点中的每一个与所有节点之间保持距离。我不知道如何读取需求点的索引并计算它们与所有节点之间的距离。 根据我提供的代码,我需要很多地方的需求点索引。我的主要问题是我不知道如何通过 CSV 文件在 Cplex 中获取这些索引。 需求点及其需求图为: first column is demandpointindex and second column in their demands this file has 200 rows
我试过这段代码来读取需求点:
tuple demands
{
int demandpoint;
int weight;
}
{demands} demand={};
execute
{
var f=new IloOplInputFile("weight.csv");
while (!f.eof)
{
var data = f.readline().split(",");
if (ar.length==2)
demand.add(Opl.intValue(ar[0]),Opl.intValue(ar[1]));
}
f.close();
}
execute
{
writeln(demand);
}
但事实并非如此。
int n=100;
int p=5;
tuple demands
{
int demandpointindex;
int weight;
}
{demands} demand={};
execute
{
var f=new IloOplInputFile("weight.csv");
while (!f.eof)
{
var data = f.readline().split(",");
if (ar.length==2)
demand.add(Opl.intValue(ar[0]),Opl.intValue(ar[1]));
}
f.close();
}
execute
{
writeln(demand);
}
float d[demandpointindexes][facilities];
execute {
var f = new IloOplInputFile("test1.csv");
while (!f.eof) {
var data = f.readline().split(",");
if (data.length == 3)
d[Opl.intValue(data[0])][Opl.intValue(data[1])] = Opl.floatValue(data[2]);
}
writeln(d);
}
dvar boolean x[demandpointindexe][facilities];
...
【问题讨论】:
-
您能否详细说明这里到底是什么问题?看来您有读取 CSV 文件的代码,据我所知,该代码应该可以工作。也许 CSV 的格式与您预期的不同?您能否展示该 CSV 文件、预期结果和您实际获得的结果?
-
我有一个文件,其中包含 20 个请求点、它们的索引和权重。我有另一个文件,其中包含 100 个节点及其之间的距离。需求点是从 100 个节点中选择的。我不知道如何在需求点和所有节点之间建立距离矩阵。我应该获取请求点的索引以在节点中找到它们并获取距离但我不知道如何?
-
int 指数[需求点];执行 { var f = new IloOplInputFile("weight.csv"); while (!f.eof) { var data = f.readline().split(","); if (data.length == 3) index[Opl.intValue(data[0])] = Opl.intValue(data[1]); } 写入(索引); } 浮动 d[需求点][设施];执行 { var f = new IloOplInputFile("test1.csv"); while (!f.eof) { var data = f.readline().split(","); if (data.length == 3) d[demandpoints][Opl.intValue(data[1])] = Opl.floatValue(data[2]); } writeln(d); }