Je suis novice en programmation GLPK et linéaire. J'essaye de produire des données dans un fichier .csv et il est en train de le sortir dans le fichier mais il ne sépare pas les données avec une virgule.Formater les fichiers csv de sortie dans Glpk
set I; /*equipments */
set J; /* maintenance plans */
param cost{I}; /* failure cost for equip i in I */
param maint{J};
param prob{I, J}; /* failure probab i in I under j in J */
param filename, symbolic := "out.csv";
var x{I, J} binary; /* 1 if include maintenance plan, 0 otherwise */
minimize MainCost: sum{i in I} sum{j in J} prob[i,j]*cost[i]*x[i,j];
s.t. MaintCost{j in I}: sum{(i,j) in {I, J}}(maint[j]*x[i,j]) <= 10;
s.t. Unit {i in I}: sum{j in J} x[i,j] = 1;
solve;
printf {(i,j) in {I, J}: x[i,j] = 1}
j,"," >> filename;
Voici le premier problème: Je voudrais enregistrer dans .csv STH comme 1,3,2,1, ..., 1
data;
param: I: cost:=
1 5
2 10
3 9
4 3
5 6
6 5
7 7
8 6
9 10
10 6;
param: J: maint:=
1 0
2 1
3 2 ;
param prob
: 1 2 3 :=
1 0.71349520313981 0.608394373323201 0.46473857148101
2 0.604843473690396 0.494158592651351 0.35715264359696
3 0.640260888759684 0.532400290182621 0.394600541097475
4 0.71349520313981 0.608394373323201 0.46473857148101
5 0.500170157438303 0.383902444963231 0.256863101331242
6 0.696759243580332 0.582579242310187 0.433239819885668
7 0.604843473690396 0.494158592651351 0.35715264359696
8 0.660549568442532 0.553447396825782 0.414065533311644
9 0.612144282180733 0.502294490808246 0.365501585646775
10 0.71349520313981 0.608394373323201 0.46473857148101 ;
end;
Deuxième: au lieu de "< = 10 "dans la 1ère contrainte, je voudrais avoir des valeurs différentes, par exemple 0,10,20,30,40,50 et exécuter ce sujet de code pour ces valeurs et enregistrer les valeurs dans le fichier" out.csv ". Dans ce cas précis, j'aurais dans les lignes out.csv 6 et les valeurs séparées par une virgule. Je ne peux pas mettre la fonction objectif et les contraintes dans un "pour", par exemple. Alors, des idées?
Merci beaucoup d'avance.