Antares Xpansion
Investment simulations for Antares studies
|
Public Types | |
typedef std::shared_ptr< SolverAbstract > | Ptr |
Public Member Functions | |
SolverAbstract () | |
constructor of SolverAbstract class : does nothing | |
SolverAbstract (const std::string &name, const SolverAbstract::Ptr toCopy) | |
Copy constructor, copy the problem "toCopy" in memory and name it "name" if possible. | |
virtual | ~SolverAbstract () |
destructor of SolverAbstract class : does nothing | |
virtual int | get_number_of_instances ()=0 |
Returns number of instances of solver currently in memory. | |
virtual std::string | get_solver_name () const =0 |
Returns the solver used. | |
std::list< std::ostream * > & | get_stream () |
returns the list of streams used by the solver instance | |
void | add_stream (std::ostream &stream) |
add a stream to the list of streams used by the solver instance | |
void | set_fp (FILE *fp) |
void | zero_status_check (int status, const std::string &action_failed, const std::string &log_location) const |
Check if a status code is different to 0, throw InvalidStatusException if it occurs. | |
virtual void | init ()=0 |
Initializes a problem. | |
virtual void | free ()=0 |
Frees all the datas contained in the Solver environment. | |
virtual void | write_prob_mps (const std::filesystem::path &filename)=0 |
writes an optimization problem in a MPS file | |
virtual void | write_prob_lp (const std::filesystem::path &filename)=0 |
writes an optimization problem in a LP file | |
virtual void | save_prob (const std::filesystem::path &filename)=0 |
write an optimisation problem in a file | |
virtual void | write_basis (const std::filesystem::path &filename)=0 |
Writes the current basis to a file for later input into the optimizer. | |
virtual void | read_prob_mps (const std::filesystem::path &filename)=0 |
reads an optimization problem contained in a MPS file | |
virtual void | read_prob_lp (const std::filesystem::path &filename)=0 |
reads an optimization problem contained in a MPS file | |
virtual void | restore_prob (const std::filesystem::path &filename)=0 |
read an optimisation problem from a file | |
virtual void | read_basis (const std::filesystem::path &filename)=0 |
Instructs the optimizer to read in a previously saved basis from a file. | |
virtual void | copy_prob (Ptr fictif_solv)=0 |
copy an existing problem | |
virtual int | get_ncols () const =0 |
returns number of columns of the problem | |
virtual int | get_nrows () const =0 |
returns number of rows of the problem | |
virtual int | get_nelems () const =0 |
returns number of non zeros elements in the matrix, excluding objective | |
virtual int | get_n_integer_vars () const =0 |
returns number of integer variables in the problem | |
virtual void | get_obj (double *obj, int first, int last) const =0 |
returns the objective function coefficients for the columns in a given range | |
virtual void | set_obj_to_zero ()=0 |
Set the objective function coefficients to zero. | |
virtual void | set_obj (const double *obj, int first, int last)=0 |
Set the objective function coefficients for the columns in a given range. | |
virtual void | get_rows (int *mstart, int *mclind, double *dmatval, int size, int *nels, int first, int last) const =0 |
get coefficients of rows from index first to last | |
virtual void | get_row_type (char *qrtype, int first, int last) const =0 |
Returns the row types for the rows in a given range. | |
virtual void | get_rhs (double *rhs, int first, int last) const =0 |
Returns the right-hand sides of the rows in a given range. | |
virtual void | get_rhs_range (double *range, int first, int last) const =0 |
Returns the right hand side range values for the rows in a given range. | |
virtual void | get_col_type (char *coltype, int first, int last) const =0 |
Returns the column types for the columns in a given range. | |
virtual void | get_lb (double *lb, int fisrt, int last) const =0 |
Returns the lower bounds for variables in a given range. | |
virtual void | get_ub (double *ub, int fisrt, int last) const =0 |
Returns the upper bounds for variables in a given range. | |
virtual int | get_row_index (std::string const &name)=0 |
Returns the index of row named "name". | |
virtual int | get_col_index (std::string const &name)=0 |
Returns the index of column named "name". | |
virtual std::vector< std::string > | get_row_names (int first, int last)=0 |
Returns the names of row from index first to last cannot be declared as const because of some solver methods. | |
virtual std::vector< std::string > | get_row_names ()=0 |
Returns the names of rows. | |
virtual std::vector< std::string > | get_col_names (int first, int last)=0 |
Returns the names of columns from index first to last cannot be declared as const because of some solver methods. | |
virtual std::vector< std::string > | get_col_names ()=0 |
Returns the names of columns. | |
virtual void | del_rows (int first, int last)=0 |
Deletes rows between index first and last. | |
virtual 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 > &names={})=0 |
Adds rows to the problem. | |
virtual 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)=0 |
Adds new columns to the problem. | |
virtual void | add_name (int type, const char *cnames, int indice)=0 |
Adds a name to a row or a column. | |
virtual void | add_names (int type, const std::vector< std::string > &cnames, int first, int end)=0 |
virtual void | chg_obj (const std::vector< int > &mindex, const std::vector< double > &obj)=0 |
Change coefficients in objective function. | |
virtual void | chg_obj_direction (const bool minimize)=0 |
Change the problem's objective function sense to minimize or maximize. | |
virtual void | chg_bounds (const std::vector< int > &mindex, const std::vector< char > &qbtype, const std::vector< double > &bnd)=0 |
Change bounds of some variables. | |
virtual void | chg_col_type (const std::vector< int > &mindex, const std::vector< char > &qctype)=0 |
Change type of some columns. | |
virtual void | chg_rhs (int id_row, double val)=0 |
Change rhs of a row. | |
virtual void | chg_coef (int id_row, int id_col, double val)=0 |
Change a coefficient in the matrix. | |
virtual void | chg_row_name (int id_row, std::string const &name)=0 |
Change the name of a constraint. | |
virtual void | chg_col_name (int id_col, std::string const &name)=0 |
Change the name of a variable. | |
virtual int | solve_lp ()=0 |
Solves a problem as LP. | |
virtual int | solve_mip ()=0 |
Solves a problem as MIP. | |
virtual void | get_basis (int *rstatus, int *cstatus) const =0 |
Returns the current basis into the user’s data arrays. | |
virtual double | get_mip_value () const =0 |
Get the optimal value of a MIP problem (available after method "solve_mip") | |
virtual double | get_lp_value () const =0 |
Get the optimal value of a LP problem (available after method "solve_lp" ) | |
virtual int | get_splex_num_of_ite_last () const =0 |
Get the number of simplex iterations done in the last resolution of the problem. | |
virtual void | get_lp_sol (double *primals, double *duals, double *reduced_costs)=0 |
Get LP solution of a problem (available after method "solve_lp") | |
virtual void | get_mip_sol (double *primals)=0 |
Get MIP solution of a problem (available after method "solve_mip") | |
virtual void | set_output_log_level (int loglevel)=0 |
Sets log level of the solver. | |
virtual void | set_algorithm (std::string const &algo)=0 |
Sets algorithm used by solver to solve LP's. | |
virtual void | set_threads (int n_threads)=0 |
Sets the maximum number of threads used to perform optimization. | |
virtual void | set_optimality_gap (double gap)=0 |
Sets the optimality gap. | |
virtual void | set_simplex_iter (int iter)=0 |
Sets the maximum number of simplex iterations the solver can perform. | |
Public Attributes | |
std::vector< std::string > | SOLVER_STRING_STATUS |
std::string | _name |
std::list< std::ostream * > | _streams |
FILE * | _fp = nullptr |
std::filesystem::path | _log_file = "" |
std::shared_ptr<SolverAbstract> SolverAbstract::Ptr |
Ptr to the solver
|
inline |
Copy constructor, copy the problem "toCopy" in memory and name it "name" if possible.
name | : Name to give to new problem |
toCopy | : Pointer to an AbstractSolver object, containing a solver object to copy |
|
pure virtual |
Adds new columns to the problem.
newcol | : Number of new columns. |
newnz | : Number of new nonzeros in the added columns. |
objx | : Double array of length newcol containing the objective function coefficients of the new columns. |
mstart | : Integer array of length newcol containing the offsets in the mrwind and dmatval arrays of the start of the elements for each column. |
mrwind | : Integer array of length newnz containing the row indices for the elements 7 in each column. |
dmatval | : Double array of length newnz containing the element values. |
bdl | : Double array of length newcol containing the lower bounds on the added columns. |
bdu | : Double array of length newcol containing the upper bounds on the added columns. |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Adds a name to a row or a column.
type | : 1 for row, 2 for column. |
cnames | : Character buffer containing the null-terminated string names. |
indice | : index of the row or of the column. |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Adds rows to the problem.
newrows | : Number of new rows. |
newnz | : Number of new nonzeros in the added rows. |
qrtype | : Character array of length newrow containing the row types: |
rhs | : Double array of length newrow containing the right hand side elements. |
range | : Double array of length newrow containing the row range elements (index read only for R type rows) |
mstart | : Integer array of length newrow + 1 containing the offsets in the mclind and dmatval arrays of the start of the elements for each row. |
mclind | : Integer array of length newnz containing the (contiguous) column indices for the elements in each row. |
dmatval | : Double array of length newnz containing the (contiguous) element values. |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
inline |
add a stream to the list of streams used by the solver instance
stream | : reference to a std::ostream object |
|
pure virtual |
Change bounds of some variables.
nbds | : number of bounds to change |
mindex | : indices of columns to modify |
qbtype | : types of the bounds to modify ('U' upper, 'L' lower, 'B' both) |
bnd | : new values for the bounds |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Change a coefficient in the matrix.
id_row | : index of the row |
id_col | : index of the column |
val | : new value to set in the matrix |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Change the name of a variable.
id_col | : index of the column |
name | : new name of the column |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Change type of some columns.
nels | : number of elements to change |
mindex | : indices of columns to modify |
qctype | : New types of columns |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Change coefficients in objective function.
mindex | : indices of columns to modify |
obj | : Values to set in objective function |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Change the problem's objective function sense to minimize or maximize.
minimize | : boolean that is true for minimize, false for maximization |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Change rhs of a row.
id_row | : index of the row |
val | : new rhs value |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Change the name of a constraint.
id_row | : index of the row |
name | : new name of the row |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
copy an existing problem
prb_to_copy | : Ptr to the |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Deletes rows between index first and last.
first | : first row index to delete |
last | : last row index to delete |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Frees all the datas contained in the Solver environment.
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns the current basis into the user’s data arrays.
rstatus | : Integer array of length ROWS to the basis status of the slack, surplus or artifficial variable associated with each row. The values depend on the solver used.May be NULL if not required. |
cstatus | : Integer array of length COLS to hold the basis status of the columns in the constraint matrix. The values depend on the solver used.May be NULL if not required. |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns the index of column named "name".
name | : name of column to get the index |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns the names of columns.
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns the names of columns from index first to last cannot be declared as const because of some solver methods.
first | : first index from which name has be returned |
last | : last index from which name has be returned |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns the column types for the columns in a given range.
coltype | : Character array of length last-first+1 where the column types will be returned (C: continuous, I: integer, B: binary, S: semi-continuous, R: semi-continuous integer, P: partial integer) |
first | : first index of row to get |
last | : last index of row to get |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns the lower bounds for variables in a given range.
lb | : Double array of length last-first+1 where the lower bounds are to be placed. |
first | : First column in the range. |
last | : Last column in the range. |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Get LP solution of a problem (available after method "solve_lp")
primals | : values of primal variables |
duals | : values of dual variables |
reduced_cost | reduced_cost in an optimal basis |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Get the optimal value of a LP problem (available after method "solve_lp" )
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Get MIP solution of a problem (available after method "solve_mip")
primals | : values of primal variables |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Get the optimal value of a MIP problem (available after method "solve_mip")
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
returns number of integer variables in the problem
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
returns number of columns of the problem
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
returns number of non zeros elements in the matrix, excluding objective
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
returns number of rows of the problem
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns number of instances of solver currently in memory.
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
returns the objective function coefficients for the columns in a given range
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns the right-hand sides of the rows in a given range.
qrtype | : Character array of length last-first+1 characters where the rhs will be stored |
first | : first index of row to get |
last | : last index of row to get |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns the right hand side range values for the rows in a given range.
range | : Double array of length last-first+1 where the right hand side range values are to be placed. |
first | : first index of row to get |
last | : last index of row to get |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns the index of row named "name".
name | : name of row to get the index |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns the names of rows.
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns the names of row from index first to last cannot be declared as const because of some solver methods.
first | : first index from which name has be returned |
last | : last index from which name has be returned |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns the row types for the rows in a given range.
qrtype | : Character array of length last-first+1 characters where the row types will be returned (N, E, L, G, R) |
first | : first index of row to get |
last | : last index of row to get |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
get coefficients of rows from index first to last
mstart | : Integer array which will be filled with the indices indicating the starting offsets in the mclind and dmatval arrays for each requested row. |
mclind | : array containing the column indices of the elements contained in dmatval |
dmatval | : array containing non zero elements of the rows |
size | : maximum number of elements to be retrieved |
nels | : array containing number of elements in dmatval and mclind |
first | : first index of row to get |
last | : last index of row to get |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns the solver used.
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Get the number of simplex iterations done in the last resolution of the problem.
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Returns the upper bounds for variables in a given range.
lb | : Double array of length last-first+1 where the upper bounds are to be placed. |
first | : First column in the range. |
last | : Last column in the range. |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Initializes a problem.
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Instructs the optimizer to read in a previously saved basis from a file.
filename | File name where the basis is to be read |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
reads an optimization problem contained in a MPS file
name | : name of the file to read |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
reads an optimization problem contained in a MPS file
name | : name of the file to read |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
read an optimisation problem from a file
File format supposed to be the same used by save_prob
name | : name of the file to read |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
write an optimisation problem in a file
File format is not garanteed and depend on implementation
name | : name of the file to read |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Sets algorithm used by solver to solve LP's.
algo | : string of the name of the algorithm |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Set the objective function coefficients for the columns in a given range.
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Set the objective function coefficients to zero.
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Sets the optimality gap.
gap | double of the value of wanted gap |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Sets log level of the solver.
loglevel | : level of log to set |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Sets the maximum number of simplex iterations the solver can perform.
iter | maximum number of simplex iterations |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Sets the maximum number of threads used to perform optimization.
n_threads | maximum number of threads |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Solves a problem as LP.
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Solves a problem as MIP.
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
Writes the current basis to a file for later input into the optimizer.
filename | : file name where the basis is written |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
writes an optimization problem in a LP file
name | : name of the file to write |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
pure virtual |
writes an optimization problem in a MPS file
name | : name of the file to write |
Implemented in NOOPSolver, Problem, SolverCbc, SolverClp, and SolverXpress.
|
inline |
Check if a status code is different to 0, throw InvalidStatusException if it occurs.
status | : status code to check |
action_failed | : action which returned the non zero status code, used to print the error message. |
std::string SolverAbstract::_name |
Name of the problem
std::list<std::ostream *> SolverAbstract::_streams |
List of streams to print the output (default std::cout)
std::vector<std::string> SolverAbstract::SOLVER_STRING_STATUS |