2014-09-21 83 views
0

我想請求您爲我處理約一週的問題提供幫助。我一直在尋找解決方案。官方文件不夠準確,在這個問題上什麼也沒說。將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個collumns併爲每個這些列的兩個約束,它給約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' 

什麼會更interresting是有這樣的:

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

有誰有一個想法如何實現這一目標?

回答

0

您的輸入數據(即food.csv)與您解析的輸出數據不匹配。

請發佈正確的數據(即輸入數據和期望輸出數據),所以我們可以幫助您。

很容易解決你的問題。您可以在../examples/csv文件夾(運輸模型)中的GLPK/MathProg分發文件中看到CSV數據示例。它使用csv作爲輸入和輸出。

這是語法的例子(如下)。

set I; /*罐頭廠*/

set J; /* markets */

set K dimen 2; /*運輸通道*/

param d {i in I,j in J}; /*距離在數千英里IN 「CSV」 */

表tab_distance的 「distances.csv」: ķ< - [植物,市場],D〜距離;