3#include "ClpSimplex.hpp"
4#include "CoinHelperFunctions.hpp"
5#include "CoinIndexedVector.hpp"
6#include "antares-xpansion/multisolver_interface/SolverAbstract.h"
11 CLP_PRIMAL_INFEASIBLE,
25 const std::string name_ =
"CLP";
39 [[nodiscard]]
SolverClp* clone()
const override;
71 void write_prob_mps(
const std::filesystem::path& filename)
override;
72 void write_prob_lp(
const std::filesystem::path& filename)
override;
73 void save_prob(
const std::filesystem::path& filename)
override;
74 void write_basis(
const std::filesystem::path& filename)
override;
76 void read_prob_mps(
const std::filesystem::path& filename)
override;
77 void read_prob_lp(
const std::filesystem::path& filename)
override;
78 void restore_prob(
const std::filesystem::path& filename)
override;
79 void read_basis(
const std::filesystem::path& filename)
override;
80 void set_basis(std::span<int> rstatus, std::span<int> cstatus)
override;
92 void get_obj(
double* obj,
int first,
int last)
const override;
94 void set_obj(
const double* obj,
int first,
int last)
override;
101 int last)
const override;
102 void get_row_type(
char* qrtype,
int first,
int last)
const override;
103 void get_rhs(
double* rhs,
int first,
int last)
const override;
104 void get_rhs_range(
double* range,
int first,
int last)
const override;
111 int last)
const override;
112 void get_col_type(
char* coltype,
int first,
int last)
const override;
113 void get_lb(
double* lb,
int fisrt,
int last)
const override;
114 void get_ub(
double* ub,
int fisrt,
int last)
const override;
118 std::vector<std::string>
get_row_names(
int first,
int last)
const override;
120 std::vector<std::string>
get_col_names(
int first,
int last)
const override;
129 void del_rows(
int first,
int last)
override;
130 void del_cols(
int first,
int last)
override;
138 const double* dmatval,
139 const std::vector<std::string>& row_names)
override;
145 const double* dmatval,
148 const std::vector<std::string>& col_names)
override;
149 void add_name(
int type,
const char* cnames,
int indice)
override;
150 void add_names(
int type,
const std::vector<std::string>& cnames,
int first,
int end)
override;
151 void chg_obj(
const std::vector<int>& mindex,
const std::vector<double>& obj)
override;
153 void chg_bounds(
const std::vector<int>& mindex,
154 const std::vector<char>& qbtype,
155 const std::vector<double>& bnd)
override;
156 void chg_col_type(
const std::vector<int>& mindex,
const std::vector<char>& qctype)
override;
157 void chg_rhs(
int id_row,
double val)
override;
158 void chg_coef(
int id_row,
int id_col,
double val)
override;
159 void chg_row_name(
int id_row,
const std::string& name)
override;
160 void chg_col_name(
int id_col,
const std::string& name)
override;
191 void get_basis(
int* rstatus,
int* cstatus)
const override;
195 void get_lp_sol(
double* primals,
double* duals,
double* reduced_costs)
const override;
Definition SolverAbstract.h:203
Definition SolverClp.h:22
void set_threads(int n_threads) override
Sets the maximum number of threads used to perform optimization.
Definition SolverClp.cpp:761
void del_cols(int first, int last) override
Deletes col at index first and last.
Definition SolverClp.cpp:387
void get_rows(int *mstart, int *mclind, double *dmatval, int size, int *nels, int first, int last) const override
get coefficients of rows from index first to last
Definition SolverClp.cpp:215
std::vector< std::string > get_col_names() override
Returns the names of columns.
Definition SolverClp.cpp:367
void set_algorithm(const std::string &algo) override
Sets algorithm used by solver to solve LP's.
Definition SolverClp.cpp:749
SolverClp()
Default constructor of a CLP solver.
Definition SolverClp.cpp:37
void write_prob_lp(const std::filesystem::path &filename) override
writes an optimization problem in a LP file
Definition SolverClp.cpp:98
void write_prob_mps(const std::filesystem::path &filename) override
writes an optimization problem in a MPS file
Definition SolverClp.cpp:88
void write_basis(const std::filesystem::path &filename) override
Writes the current basis to a file for later input into the optimizer.
Definition SolverClp.cpp:103
int solve_lp() override
Solves a problem as LP.
Definition SolverClp.cpp:603
void chg_col_type(const std::vector< int > &mindex, const std::vector< char > &qctype) override
Change type of some columns.
Definition SolverClp.cpp:508
void chg_bounds(const std::vector< int > &mindex, const std::vector< char > &qbtype, const std::vector< double > &bnd) override
Change bounds of some variables.
Definition SolverClp.cpp:480
void free() override
Frees all the datas contained in the Solver environment.
Definition SolverClp.cpp:79
void chg_obj_direction(bool minimize) override
Change the problem's objective function sense to minimize or maximize.
Definition SolverClp.cpp:474
int get_n_integer_vars() const override
returns number of integer variables in the problem
Definition SolverClp.cpp:169
void get_ub(double *ub, int fisrt, int last) const override
Returns the upper bounds for variables in a given range.
Definition SolverClp.cpp:296
void get_col_type(char *coltype, int first, int last) const override
Returns the column types for the columns in a given range.
Definition SolverClp.cpp:261
void get_row_type(char *qrtype, int first, int last) const override
Returns the row types for the rows in a given range.
Definition SolverClp.cpp:228
void chg_obj(const std::vector< int > &mindex, const std::vector< double > &obj) override
Change coefficients in objective function.
Definition SolverClp.cpp:465
void add_cols(int newcol, int newnz, const double *objx, const int *mstart, const int *mrwind, const double *dmatval, const double *bdl, const double *bdu, const std::vector< std::string > &col_names) override
Adds new columns to the problem.
Definition SolverClp.cpp:423
void read_basis(const std::filesystem::path &filename) override
Instructs the optimizer to read in a previously saved basis from a file.
Definition SolverClp.cpp:133
void get_mip_sol(double *primals) override
Get MIP solution of a problem (available after method "solve_mip")
Definition SolverClp.cpp:721
double get_lp_value() const override
Get the optimal value of a LP problem (available after method "solve_lp" )
Definition SolverClp.cpp:679
void get_obj(double *obj, int first, int last) const override
returns the objective function coefficients for the columns in a given range
Definition SolverClp.cpp:183
int get_splex_num_of_ite_last() const override
Get the number of simplex iterations done in the last resolution of the problem.
Definition SolverClp.cpp:684
void get_lb(double *lb, int fisrt, int last) const override
Returns the lower bounds for variables in a given range.
Definition SolverClp.cpp:286
int get_ncols() const override
returns number of columns of the problem
Definition SolverClp.cpp:154
void set_optimality_gap(double gap) override
Sets the optimality gap.
Definition SolverClp.cpp:766
void chg_coef(int id_row, int id_col, double val) override
Change a coefficient in the matrix.
Definition SolverClp.cpp:581
void init() override
Initializes a problem.
Definition SolverClp.cpp:74
void add_name(int type, const char *cnames, int indice) override
Adds a name to a row or a column.
Definition SolverClp.cpp:452
int get_nrows() const override
returns number of rows of the problem
Definition SolverClp.cpp:159
void get_rhs(double *rhs, int first, int last) const override
Returns the right-hand sides of the rows in a given range.
Definition SolverClp.cpp:236
std::vector< std::string > get_row_names() override
Returns the names of rows.
Definition SolverClp.cpp:350
void restore_prob(const std::filesystem::path &filename) override
Definition SolverClp.cpp:789
void get_cols(int *mstart, int *mrwind, double *dmatval, int size, int *nels, int first, int last) const override
get coefficients of cols from index first to last
Definition SolverClp.cpp:249
void mark_indices_to_keep_presolve(int nrows, int ncols, int *rowind, int *colind) override
Mark indices to keep during presolve (to be implemented by derived classes)
Definition SolverClp.cpp:794
void chg_row_name(int id_row, const std::string &name) override
Change the name of a constraint.
Definition SolverClp.cpp:587
void set_obj_to_zero() override
Set the objective function coefficients to zero.
Definition SolverClp.cpp:193
void set_simplex_iter(int iter) override
Sets the maximum number of simplex iterations the solver can perform.
Definition SolverClp.cpp:771
void presolve_only() override
Presolve the problem (to be implemented by derived classes)
Definition SolverClp.cpp:800
void read_prob_mps(const std::filesystem::path &filename) override
reads an optimization problem contained in a MPS file
Definition SolverClp.cpp:117
int get_col_index(const std::string &name) override
Returns the index of column named "name".
Definition SolverClp.cpp:322
double get_mip_value() const override
Get the optimal value of a MIP problem (available after method "solve_mip")
Definition SolverClp.cpp:674
void set_obj(const double *obj, int first, int last) override
Set the objective function coefficients for the columns in a given range.
Definition SolverClp.cpp:200
void del_rows(int first, int last) override
Deletes rows between index first and last.
Definition SolverClp.cpp:377
void chg_col_name(int id_col, const std::string &name) override
Change the name of a variable.
Definition SolverClp.cpp:593
void save_prob(const std::filesystem::path &filename) override
Definition SolverClp.cpp:780
void get_rhs_range(double *range, int first, int last) const override
Returns the right hand side range values for the rows in a given range.
Definition SolverClp.cpp:243
int get_row_index(const std::string &name) override
Returns the index of row named "name".
Definition SolverClp.cpp:306
void set_output_log_level(int loglevel) final
Sets log level of the solver.
Definition SolverClp.cpp:737
int get_nelems() const override
returns number of non zeros elements in the matrix, excluding objective
Definition SolverClp.cpp:164
void read_prob_lp(const std::filesystem::path &filename) override
reads an optimization problem contained in a MPS file
Definition SolverClp.cpp:128
std::string get_solver_name() const override
Returns the solver used.
Definition SolverClp.h:46
int solve_mip() override
Solves a problem as MIP.
Definition SolverClp.cpp:629
int get_number_of_instances() override
Returns number of instances of solver currently in memory.
Definition SolverClp.cpp:60
void get_basis(int *rstatus, int *cstatus) const override
Returns the current basis into the user's data arrays.
Definition SolverClp.cpp:659
void get_presolve_map(int *rowmap, int *colmap) const override
Get the presolve map (to be implemented by derived classes)
Definition SolverClp.cpp:805
void chg_rhs(int id_row, double val) override
Change rhs of a row.
Definition SolverClp.cpp:536
void get_lp_sol(double *primals, double *duals, double *reduced_costs) const override
Get LP solution of a problem (available after method "solve_lp")
Definition SolverClp.cpp:689
void add_rows(int newrows, int newnz, const char *qrtype, const double *rhs, const double *range, const int *mstart, const int *mclind, const double *dmatval, const std::vector< std::string > &row_names) override
Adds rows to the problem.
Definition SolverClp.cpp:397
Definition SolverAbstract.h:20