2

我想就我处理了大约一周的问题寻求您的帮助。我一直在到处寻找解决方案。官方文档不够准确,对此一无所知。

问题如下:这是我的 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 个列和每个列的两个约束,它在单独的行中给出大约 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

有谁知道如何实现这一目标?

4

1 回答 1

2

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

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

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

这是语法示例(如下)。

设置我; /* 罐头植物 */

集J;/* 市场 */

设置 K 维 2;/* 运输车道 */

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

table tab_distance IN "CSV" "distances.csv" : K <- [植物、市场], d ~ distance;

于 2014-10-14T02:25:12.810 回答