#include "cinstancereduite.h" #include "cinstance.h" using namespace std ; vector CInstanceReduite::m_DEM ; vector CInstanceReduite::m_DEM_min ; vector CInstanceReduite::m_EDEM ; vector CInstanceReduite::m_EDEM_min ; std::vector > CInstanceReduite::m_EDEM_par_scenario ; vector > CInstanceReduite::m_EMAX ; vector > CInstanceReduite::m_PMAX ; std::vector CInstanceReduite::m_moyenne_EMAX ; std::vector > > CInstanceReduite::m_EMIN_week ; std::vector > > CInstanceReduite::m_EMAX_week ; std::vector > > CInstanceReduite::m_C_week ; std::vector > CInstanceReduite::m_EMIN_moyen ; std::vector > CInstanceReduite::m_EMAX_moyen ; std::vector > CInstanceReduite::m_C_moyen ; heure CInstanceReduite::m_week_duration = (heure)0 ; // Ajout Daniel vector CInstanceReduite::m_ThProdMax ; vector CInstanceReduite::m_ThProdMin ; vector CInstanceReduite::m_ThCout ; std::vector > CInstanceReduite::m_ThMinS ; std::vector > CInstanceReduite::m_ThMaxS ; std::vector > CInstanceReduite::m_ThCoutS ; void CInstanceReduite::init() { // supposition : D(t) est constant m_week_duration = (T()/H()) * ::D(); #ifdef RED_MOYENNE calculeMoyenneDemandeParSemaine(); calculeThProdParSemaine(); // calculeThCoutParSemaine(); #endif calculeEMAXParSemaine(); calculeType1ParSemaine(); } void CInstanceReduite::calculeMoyenneDemandeParSemaine() { static tlen_t week_length = T()/H() ; m_DEM.resize( H(), (kW)0 ) ; m_DEM_min.resize( H(), (kW)INFINI); m_EDEM.resize( H(), (kWh)0 ) ; m_EDEM_min.resize( H(), (kWh)INFINI ); m_EDEM_par_scenario.resize( S(), vector(H(), (kWh) 0)); for (week_t w=(week_t)0; w >( I(), vector(H(), (kWh)0) ); m_PMAX = vector< vector >( I(), vector(H(), (kW )0) ); m_moyenne_EMAX = vector ( I(), (kWh)0 ); for (powerplants2_t i=(powerplants2_t)0; i > >( J(), vector< vector >( S(), vector( H(), (kWh)0 ))); m_EMAX_week = vector< vector< vector > >( J(), vector< vector >( S(), vector( H(), (kWh)0 ))); m_C_week = vector< vector< vector > >( J(), vector< vector >( S(), vector( H(), (euros_par_kWh)0 ))); m_EMIN_moyen = vector >( J(), vector( H() )); m_EMAX_moyen = vector >( J(), vector( H() )); m_C_moyen = vector< vector >( J(), vector( H() )); for (powerplants1_t j=(powerplants1_t)0; j(H()) ); m_ThMaxS.resize( S(), std::vector(H()) ); m_ThCoutS.resize(S(), std::vector(H()) ); for (week_t w=(week_t)0; w cout_centrale ; for (powerplants1_t j=(powerplants1_t)0; j::iterator itPp = cout_centrale.begin(); itPp!=cout_centrale.end(); itPp++) { powerplants1_t j = itPp->second ; kWh prodComp = std::min( demandeComp, ::EMAX(j,t,s) - ::EMIN(j,t,s) ); demandeComp -= prodComp ; prodMaxT += ::EMIN(j,t,s) + prodComp; prodMinT += ::EMIN(j,t,s); coutT += ::C(j,t,s) * (::EMIN(j,t,s) + prodComp) ; } m_ThMaxS[s][w] += prodMaxT ; m_ThMinS[s][w] += prodMinT ; coutS += coutT ; } m_ThCoutS[s][w] = coutS / m_ThMaxS[s][w] ; m_ThProdMax[w] += m_ThMaxS[s][w] ; m_ThProdMin[w] += m_ThMinS[s][w] ; m_ThCout[w] += m_ThCoutS[s][w] ; } m_ThProdMax[w] /=(coeff_t)S(); m_ThProdMin[w] /=(coeff_t)S(); m_ThCout[w] /= S(); } #ifdef TEST_PMAX for (week_t w=(week_t)0; w