#ifndef CPLEXMUTABLE_H #define CPLEXMUTABLE_H #include using std::string; /** @author Antoine Rozenknop */ class CPlexMutable : public CPlexModel { public: CPlexMutable(std::string nom, ObjectiveSense obj_sense = Minimisation, ProblemType = Linear, bool internal_silent = true, bool silent = true, bool writeToFile = false, bool with_names = false ); void init() ; void reinit() ; void set_problem_type(ProblemType); void set_variable_type(string colonnes, Type); virtual ~CPlexMutable(); /// option void setOption( ParallelMode ); void setOption( OptionDouble, double ) ; /// appelle Cplex et renvoie la valeur de la fonction objectif double resolution(); std::vector populate(); double feasopt(); void write_pb(); void write_sol(); void write_names(); /// rappelle Cplex après ajout de nouvelles colonnes et renvoie la valeur de la fonction objectif double newcolumns_resolution(); /// récupère la valeur des variables d'une zone horizontale std::vector getResult(std::string zoneH); /// récupère la valeur des variables d'une zone horizontale pour une solution trouvée par "populate" std::vector getResult(int sol_id, std::string zoneH); /// récupère la valeur des coûts réduites d'une zone horizontale std::vector getReducedCosts(std::string zoneH); /// récupère la valeur des variables duales d'une zone verticale std::vector getDuals(std::string zoneV); /// récupère la valeur de l'infaisabilité d'une zone verticale std::vector getInfeasibilities(std::string zoneV); /// récupère le statut du cplex bool getInfeasible(); /// définition de zones /// ces deux fonctions renvoient l'index de la zone créée size_t addLigne ( std::string nom, size_t taille ); size_t addColonne( std::string nom, size_t taille ); /// suppression d'une ou plusieurs colonnes (zone horizontale) void removeZoneHorizontale ( std::string nom ); /// ajout d'éléments à Z void addToZ( size_t row, size_t col, double val ); /// ajout d'éléments à la partie droite void addToRHS( size_t row, Sense comp, double val, double range = 0 ); /// ajout des bornes et du type des variables et de leur coefficient dans la fonction objectif void addToObj( size_t col, double min, double max, Type type, double coeff ); }; #endif