2

1 週間ほど取り組んでいる問題について、ご協力をお願いしたいと思います。私はどこでも解決策を探していました。公式文書は十分に正確ではなく、そのことについて何も述べていません。

問題は次のとおりです。これは、私の 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

ステートメントを使用して、GNU MathProg 線形プログラムにインポートしていますtable。問題は、列ごとに個別のパラメーターを使用することを余儀なくされていることです。簡単に反復できるように、列を単一の 2 次元パラメーターにインデックス付けすることをお勧めします。

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 列のような列と、それらの列のそれぞれに 2 つの制約がある場合、約 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