Salut à tous.
Voila, pour un petit projet académique de programmation linéaire, j'ai du faire un modèle qui simule la production, le transport et la consommation d'électricité au Danemark. J'ai chargé mon modèle dans un fichier .mod pour GLPSol, mais au moment de lancer le solveur, celui-ci me dit que mon modèle est sur-contraint, alors que normalement, il n'est pas censé l'être...
Je vous joint le code du fichier .mod, si vous avez des idées de ce qui pourrait clocher...
Merci!Code:# Modèle du problème de recherche opérationnelle correspondant # à la gestion des flux d'électricité au Danemark. # créé par *moi*, *mon_mail* # # # ######################################################################## # DECLARATION DES VARIABLES # ######################################################################## set I; # Villes set J; # Centrales autres que thermiques set K; # Arretes set L; # Plages horaires set Z; # Centrales thermiques param M{k in K, i in I}; param N{k in K, i in I}; param d{k in K}; # Architecture du graphe orienté : arrêtes entrantes, sortantes et # distances. M[k,i] = 1 si la liaison indexée k entre dans la ville i. #N[k,i] = 1 si la liaison indexée k sort de la ville i. #d[k] est égale à la longueur de la liaison k. param cv{i in I}; param gv{i in I}; param mv{i in I}; param pv{i in I}; param pi{i in I}; param gi{i in I}; #géographie et présence des industries dans les villes. Par exemple, cv[i]=1 si la ville indexée i est la capitale, etc. param aff; #affaiblissement due a la perte de charge param c{j in J}; #cout de production de l'énergie hors centrales thermiques param s{z in Z}; #coût de production de l'énergie pour les centrales thermiques param loc{i in I, j in J}; # localisation centrales hors thermiques. loc[i, j] = 1 veut dire que la centrale indexée j se trouve dans la ville i. param loct{i in I, z in Z}; # localisation des centrales thermiques. loct[i, z] = 1 veut dire que la centrale thermiquée indexée z se trouve dans la ville i. param p{j in J, l in L}; # production des centrales autres que thermiques. p[j,l] représente la production de la centrale indexée j dans la tranche horaire l. param dcv{l in L}; param dgv{l in L}; param dmv{l in L}; param dpv{l in L}; param dgi{l in L}; # demande des différentes entités en électricité. Par exemple, dgv[l] représente la demande d'une grande ville dans la tranche horaire l. var q{z in Z, l in L} >= 0; #production des centrales thermiques. q[z,l] est la production de la centrale z dans la plage horaire l. var f{k in K, l in L}>= 0; # flux d'électricité. f[k,l] est la quantité d'électricité qui circule dans la liaison indexée k pendant la tranche horaire l. ######################################################################## # MODELISATION DU PROBLEME # ######################################################################## minimize production: sum{z in Z, l in L} s[z] * q[z, l]; #Minimisation du cout global de production pour les centrales thermiques. cout unitaire x production = cout de production. s.t. circulation{i in I,l in L}: sum{k in K} f[k, l] * ((1-d[k]*aff/100) * M[k, i] - N[k, i]) +sum{j in J} p[j, l] * loc[i, j] + sum{z in Z} q[z, l] * loct[i, z] - cv[i] * dcv[l] - gv[i] * dgv[l] - mv[i] * dmv[l] - pv[i] * dpv[l] -gi[i] * dgi[l] - pi[i] * dgi[l] * 0.5 == 0; #prise en compte du fonctionnement du reseau electrique. électricité entrante - électricité sortante + électricité produite - électricité consommée = 0 pour chaque couple (i,l). s.t. adaptation1{z in Z, l in {2..24}}: q[z, l-1]/2 <= q[z, l]; s.t. adaptation2{z in Z, l in {2..24}}: 2 * q[z, l-1] >= q[z, l]; #prise en compte de la lenteur de reaction des centrales thermiques lors d'un changement de rythme de production s.t. seuil{z in Z, l in L}: q[z, l] <= 18727; # seuil de production des centrales thermiques (là il est censé y avoir les données, mais il y en a trop pour qu'elles puissent être affichées sur le forum) end;
-----