#include "selecteur_1.h" #include #include #include Selecteur_1::Selecteur_1() : Selecteur() { } Selecteur_1::~Selecteur_1() { } void Selecteur_1::setproblemdata() { /* Création des vecteurs de contraintes de clique */ m_cliques.clear(); ajoute_contraintes ( C14, C21 ); /* définition des zones */ m_cplex.addColonne( "colonnes nucléaires", CPlan::getNbPlans() ); m_cplex.addColonne( "production thermique", H() ); m_cplex.addLigne( "production=demande", H() ); m_cplex.addLigne( "unicité colonne nucléaire", I() ); m_cplex.addLigne( "contraintes de clique", m_cliques.size() ); /// l'objectif est de minimiser une combinaison linéaire des éléments de zobj (en ligne) /// donc de trouver des valeurs pour NUMCOLS variables // coeff: coût des colonnes nucléaires (centrale nucléaire) // variables associées : binaires (0 ou 1) m_cplex.setColonne( "colonnes nucléaires" ); for ( size_t p=0; pm_cout.v ); // coeff: coût de la production thermique unitaire par semaine // variables associées : énergie produite, continue (entre pmin et pmax) m_cplex.setColonne( "production thermique"); for ( week_t h=(week_t) 0; hm_colonne[h].v ); // production de la centrale thermique par semaine (matrice identité) m_cplex.setColonne( "production thermique" ); for (week_t h=(week_t)0; hm_i, p, 1 ); /// contraintes de cliques m_cplex.setLigne( "contraintes de clique" ); m_cplex.setColonne( "colonnes nucléaires" ); // partie droite : partie droite de la contrainte de clique // partie gauche : partie gauche de la contrainte de clique size_t c=0 ; for (std::map, double>::iterator it=m_cliques.begin(); it!=m_cliques.end(); c++, it++) { m_cplex.addToRHS( c, CPlexModel::LowerThan, it->second ); for (size_t p=0; pfirst[p] ); } } /* END setproblemdata */