#ifndef CPLEX_H #define CPLEX_H #include "../tuning.h" #include #include #include #include #include #include #include #include using namespace std; class DualAscent; class Selecteur{ // protected: public: CPlexMutable m_cplex ; //m_clique : vector = coefficients ; double = right hand side (plus faible valeur en cas de contrainte multiple) std::map, double> m_cliques ; void ajoute_contraintes(constraint_t type_1=C14, constraint_t type_2=C21); /** * Vérifie si la contrainte existe déjà. * Si oui, garde le membre de droite le plus petit * @param mclique Contraintes précédentes * @param coefs Membre de gauche * @param rhs Membre de droite */ void ajoutContrainte(std::vector& coefs, double rhs); public: Selecteur(std::string name = "selecteur"); ~Selecteur(); std::vector resolution(); std::vector< std::vector > populate() ; virtual void setproblemdata() = 0; void setOption( CPlexModel::ParallelMode mode ) { m_cplex.setOption( mode ) ; } void setOption( CPlexModel::OptionDouble option, double val) { m_cplex.setOption( option, val ); } }; #endif