#ifndef CPLAN_H #define CPLAN_H #include "../instance/indices.h" #include #include #include struct CNoeud ; // types de campagne de production enum noeud_t { TYPE_PREMIER, TYPE_OUTAGE, TYPE_BO, TYPE_DERNIER } ; #define TYPE(X) (X==TYPE_PREMIER ? "PREMIER" : X==TYPE_OUTAGE ? "OUTAGE" : X==TYPE_BO ? "BO" : X==TYPE_DERNIER ? "DERNIER" : "ERREUR") /** @author Antoine Rozenknop */ struct CPlan { friend std::ostream & operator <<(std::ostream & out, CPlan & plan) ; static int id ; struct CArc { CArc(const CNoeud & depart, const CNoeud & fin, double _recharge, double _reste, double _cout_reduit, double _cout); noeud_t m_type ; campaign_t m_k ; week_t m_date ; week_t m_date_fin ; double m_recharge ; double m_cout ; double m_cout_reduit ; double m_reste ; const CNoeud * m_depart ; const CNoeud * m_fin ; }; CPlan( powerplants2_t i, size_t taille_prod, powerplants2_t nb_centrales); void set_prod( size_t index, double prod ) ; void push_back( const CNoeud & dep, const CNoeud & fin, double _recharge, double _reste, double _cout_reduit, double _cout ); week_t ha(campaign_t k) { return m_ha[k] ; } // création des plans finaux void remplis_BO(std::vector & prod, std::vector & stock, std::vector & demande_restante); void remplis_BO_en_visant_bien(std::vector & prod, std::vector & stock, std::vector & demande_restante); void remplis_campagnes_non_BO( std::vector & prod, std::vector & stock, std::vector & demande_restante); void remplis_dates_outages( std::vector & dates ) ; void remplis_recharges( std::vector & recharges ) ; powerplants2_t m_i ; std::vector m_colonne ; std::vector m_fuel ; std::vector m_fuel_tp1 ; std::vector m_arcs ; double m_cout ; double m_cout_reduit ; double m_reste ; std::vector m_ha ; int m_id ; }; std::ostream & operator <<(std::ostream & out, CPlan & plan) ; #endif