正在将CSV数据读取到下标集中



我想请你帮我处理一个大约一周的问题。我一直在到处寻找解决方案。官方文件不够准确,对此事只字未提。

问题如下:这是我的CSV文件"food.CSV"的一部分。在这里,我只复制了6列,只是为了对数据进行一个小预览。

Name    Index   A   E   K   C
Rice    1   0   0   0   0
Lentils 2   0.39    5   0.05    44
Carrot  3   167.05  7   132 59
Potato  4   0.03    0   21  74
Apple   5   0.38    1   6   0.04

我正在使用table语句将它导入GNU MathProg线性程序中。问题是,对于每一列,我都必须使用分隔的参数。我更喜欢将列索引到单个二维参数中,这样我就可以轻松地对它们进行迭代。

set fields;
param kc{i in 1..card(fields)}, symbolic; # symbolic only for the example, normally it's numeric
table data IN "CSV" "food.csv": fields <- [Index], kc~Kcal;

问题是,通过这种方式,我必须为每列使用单独的参数,如果我有大约40个collomn和每列两个约束,它会在分隔的行中给出大约80个约束,如果我想更改某些内容,我需要更改80行代码,因为我无法迭代列并简化它。

我把从CSV文件中解析出来的内容放在这里。

Display statement at line 213
kc[1] = '1.12'
kc[2] = '3.53'
kc[3] = '0.41'
kc[4] = '0.86'
kc[5] = '0.48'
kc[6] = '3.89'
kc[7] = '0.36'
kc[8] = '1.89'
kc[9] = '8.84'
kc[10] = '0.72'
kc[11] = '1.2'
kc[12] = '2.95'
kc[13] = '6.54'
kc[14] = '5.41'
kc[15] = '0.81'
kc[16] = '1.49'
kc[17] = '0.4'

更令人困惑的是:

kc[1][1] # first entry, first column
kc[1][2] # first entry, second column
kc[2][5] # second entry entry, fifth column

有人知道如何做到这一点吗?

您的输入数据(即food.csv)与您解析的输出数据不匹配。

请发布正确的数据(即输入数据和期望输出数据),以便我们可以帮助您。

解决你的问题很容易。您可以在..中看到GLPK/MathProg分发文件中CSV数据的示例/examples/csv文件夹,运输模型。它使用csv作为输入和输出。

这是语法示例(如下)。

集合I;/*罐装工厂*/

集合J;/*市场*/

集合K二聚体2;/*运输车道*/

参数d{i在i中,j在j中};/*以千英里为单位的距离*/

table tab_distance IN"CSV"distance.CSV":K<-[工厂,市场],d~距离;

相关内容

  • 没有找到相关文章

最新更新