#include "cdualcplexcolonnesthermiques.h" #include #include #include CDualCplexColonnesThermiques::CDualCplexColonnesThermiques(bool internal_silent, bool silent, bool writeToFile): CDualCplexUneColonneThermique(internal_silent, silent, writeToFile) { } CDualCplexColonnesThermiques::~CDualCplexColonnesThermiques() { } void CDualCplexColonnesThermiques::ajoute_thermiques() { // définition des zones m_cplex->addZoneVerticale( "production>=demande", H()); m_cplex->addZoneHorizontale( "production thermique min", J()); m_cplex->addZoneHorizontale( "production thermique plus", J()); m_cplex->addZoneVerticale( "unicité colonnes nucléaires", I()); // fonction objectif // coeff: coût de la production thermique unitaire par semaine // variables associées : énergie produite, continue (entre pmin et pmax) m_cplex->setZoneHorizontale( "production thermique min" ); for (powerplants1_t j; jaddToObj( j, 1, 1, CPlexModel::Continuous, coutTherm.v ); } m_cplex->setZoneHorizontale( "production thermique plus" ); for (powerplants1_t j; jaddToObj( j, 0, 1, CPlexModel::Continuous, coutTherm.v ); } // remplissage de Z // satisfaction de la demande m_cplex->setZoneVerticale( "production>=demande"); // partie droite : demande, opérateur >= for (week_t h=(week_t) 0; haddToRHS( h, CPlexModel::GreaterThan, EDEM(h).v ); // m_cplex->addToRHS( h, CPlexModel::Equals, EDEM(h).v ); // production des centrales thermiques par semaine (matrices identité) m_cplex->setZoneHorizontale( "production thermique min" ); for (powerplants1_t j; jaddToZ( h, j, EMIN(j,h).v ); } m_cplex->setZoneHorizontale( "production thermique plus" ); for (powerplants1_t j; jaddToZ( h, j, (EMAX(j,h)-EMIN(j,h)).v ); } // unicité des colonnes nucléaires m_cplex->setZoneVerticale( "unicité colonnes nucléaires" ); for (powerplants2_t i; iaddToRHS( i, CPlexModel::Equals, 1 ); } }