A general solver for mixed-integer linear programs (MIPs). More...
#include <opt.h>
Classes | |
class | ColItem |
Used to identify a column in the LP. More... | |
class | RowItem |
Used to identify a row in the LP. More... | |
Public Types | |
enum | SolutionStatus { SOLVED, FEASIBLE, UNBOUNDED, INFEASIBLE, ITERATIONLIMITEXCEEDED, ABORTED, UNKNOWN } |
The solution statuses. More... | |
Public Member Functions | |
virtual | ~MIPSolver () |
virtual int | nr_col ()=0 |
virtual int | nr_row ()=0 |
virtual void | set_tol (double tol)=0 |
virtual void | set_maxiter (int maxiter)=0 |
virtual void | reset ()=0 |
Next solve will be a cold start. | |
virtual SolutionStatus | solve ()=0 |
Apply warm start if possible. | |
virtual SolutionStatus | solve (const UserVector< double > &x) |
Cold start from primal starting point. | |
virtual SolutionStatus | solveMIP ()=0 |
virtual SolutionStatus | feasible ()=0 |
Checks the problem for feasiblity. | |
virtual void | get_primal (UserVector< double > &x)=0 |
The last point, we found. | |
virtual dvector | get_primal () |
virtual double | get_primal (const ColItem &colitem)=0 |
Gives the primal value for a specific column. | |
virtual int | get_colindex (const ColItem &colitem)=0 |
virtual void | get_dual (UserVector< double > &mu)=0 |
Gives the dual variables for the rows. | |
virtual double | get_dual (const RowItem &rowitem)=0 |
Gives the dual for a specific row. | |
virtual void | get_reducedcosts (UserVector< double > &rc)=0 |
Gives the reduced costs for the columns. | |
virtual double | get_reducedcosts (const ColItem &colitem)=0 |
Gives the reduced costs for a specific column. | |
virtual void | get_rowactivity (UserVector< double > &rowact)=0 |
Gives the row activities for the rows. | |
virtual double | get_rowactivity (const RowItem &rowitem)=0 |
Gives the row activities for a specific row. | |
virtual double | get_optval ()=0 |
The last optimal value. | |
virtual int | get_iter ()=0 |
virtual void | set_obj (const UserVector< double > &obj, double obj_const=0.)=0 |
virtual void | modify_obj (int i, double coeff)=0 |
virtual const RowItem * | add_row (const UserVector< double > &row, double low, double up)=0 |
Adds a constraint to the problem. | |
virtual const RowItem * | add_row (const UserVector< double > &row, const ivector &indices, double low, double up) |
virtual void | add_rows (const vector< Pointer< UserVector< double > > > &rows, const dvector &low, const dvector &up) |
virtual void | add_rows (const vector< pair< dvector, ivector > > &rows, const dvector &low, const dvector &up) |
virtual void | add_rows (list< const RowItem * > &rowitems, const vector< pair< dvector, ivector > > &rows, const dvector &low, const dvector &up) |
virtual void | delete_row (const RowItem &rowitem)=0 |
virtual void | delete_rows (const list< const RowItem * > &rowitems) |
virtual void | modify_row (const RowItem &rowitem, double low, double up)=0 |
virtual void | modify_row (int index, double low, double up)=0 |
virtual const ColItem * | add_col (double low, double up, MipProblem::VarType=MipProblem::CONTINUOUS)=0 |
virtual const ColItem * | add_col (const UserVector< double > &col, double obj_coeff, double low, double up, MipProblem::VarType=MipProblem::CONTINUOUS)=0 |
virtual void | add_cols (list< const ColItem * > &colitems, const dvector &low, const dvector &up)=0 |
Adds several columns. | |
virtual void | add_cols (list< const ColItem * > &colitems, vector< Pointer< UserVector< double > > > &cols, const vector< double > &obj_coeff, const dvector &low, const dvector &up)=0 |
virtual void | delete_col (const ColItem &colitem)=0 |
virtual void | delete_cols (const list< const ColItem * > &colitems) |
virtual void | modify_col (const ColItem &colitem, double low, double up, MipProblem::VarType vartype)=0 |
virtual void | modify_col (const ColItem &colitem, const UserVector< double > &col, double obj_coeff, double low, double up, MipProblem::VarType vartype)=0 |
virtual void | modify_col (int index, double low, double up, MipProblem::VarType type)=0 |
If you are sure, which index your variable is. | |
virtual double | get_collow (int index)=0 |
virtual double | get_colup (int index)=0 |
virtual int | generate_cuts (list< Pointer< SimpleCut > > &rowcuts)=0 |
Static Public Member Functions | |
static Pointer< MIPSolver > | get_solver (const MipProblem &mip, Pointer< Param > param) |
Friends | |
ostream & | operator<< (ostream &out, const SolutionStatus status) |
A general solver for mixed-integer linear programs (MIPs).
Definition at line 317 of file opt.h.
The solution statuses.
static Pointer<MIPSolver> MIPSolver::get_solver | ( | const MipProblem & | mip, | |
Pointer< Param > | param | |||
) | [static] |
virtual int MIPSolver::nr_col | ( | ) | [pure virtual] |
Implemented in OSISolver.
virtual int MIPSolver::nr_row | ( | ) | [pure virtual] |
Implemented in OSISolver.
virtual void MIPSolver::set_tol | ( | double | tol | ) | [pure virtual] |
Implemented in OSISolver.
virtual void MIPSolver::set_maxiter | ( | int | maxiter | ) | [pure virtual] |
Implemented in OSISolver.
virtual void MIPSolver::reset | ( | ) | [pure virtual] |
Next solve will be a cold start.
All added rows and columns will be deleted. Modified columns and rows are NOT set to their original values!
Implemented in OSISolver.
virtual SolutionStatus MIPSolver::solve | ( | ) | [pure virtual] |
Apply warm start if possible.
Implemented in OSISolver.
virtual SolutionStatus MIPSolver::solve | ( | const UserVector< double > & | x | ) | [inline, virtual] |
virtual SolutionStatus MIPSolver::solveMIP | ( | ) | [pure virtual] |
Implemented in OSISolver.
virtual SolutionStatus MIPSolver::feasible | ( | ) | [pure virtual] |
Checks the problem for feasiblity.
This method can never return the SolutionStatus SOLVED.
Implemented in OSISolver.
virtual void MIPSolver::get_primal | ( | UserVector< double > & | x | ) | [pure virtual] |
The last point, we found.
If last SolutionStatus was SOLVED, the solution. If it was FEASIBLE, a feasible point. Sets x to the primal values of the first x.dim() columns.
Implemented in OSISolver.
virtual double MIPSolver::get_primal | ( | const ColItem & | colitem | ) | [pure virtual] |
Gives the primal value for a specific column.
Implemented in OSISolver.
virtual int MIPSolver::get_colindex | ( | const ColItem & | colitem | ) | [pure virtual] |
Implemented in OSISolver.
virtual void MIPSolver::get_dual | ( | UserVector< double > & | mu | ) | [pure virtual] |
Gives the dual variables for the rows.
Sets mu to the dual values of the first mu.dim() rows.
mu | To store the duals. |
Implemented in OSISolver.
virtual double MIPSolver::get_dual | ( | const RowItem & | rowitem | ) | [pure virtual] |
Gives the dual for a specific row.
Implemented in OSISolver.
virtual void MIPSolver::get_reducedcosts | ( | UserVector< double > & | rc | ) | [pure virtual] |
Gives the reduced costs for the columns.
Sets rc to the reduced costs of the first rc.dim() columns.
rc | To store the reduced costs. |
Implemented in OSISolver.
virtual double MIPSolver::get_reducedcosts | ( | const ColItem & | colitem | ) | [pure virtual] |
Gives the reduced costs for a specific column.
Implemented in OSISolver.
virtual void MIPSolver::get_rowactivity | ( | UserVector< double > & | rowact | ) | [pure virtual] |
Gives the row activities for the rows.
rowact | To store the row activities of the first rowact.dim() rows. |
Implemented in OSISolver.
virtual double MIPSolver::get_rowactivity | ( | const RowItem & | rowitem | ) | [pure virtual] |
Gives the row activities for a specific row.
Implemented in OSISolver.
virtual double MIPSolver::get_optval | ( | ) | [pure virtual] |
The last optimal value.
Implemented in OSISolver.
virtual int MIPSolver::get_iter | ( | ) | [pure virtual] |
Implemented in OSISolver.
virtual void MIPSolver::set_obj | ( | const UserVector< double > & | obj, | |
double | obj_const = 0. | |||
) | [pure virtual] |
Implemented in OSISolver.
virtual void MIPSolver::modify_obj | ( | int | i, | |
double | coeff | |||
) | [pure virtual] |
Implemented in OSISolver.
virtual const RowItem* MIPSolver::add_row | ( | const UserVector< double > & | row, | |
double | low, | |||
double | up | |||
) | [pure virtual] |
virtual const RowItem* MIPSolver::add_row | ( | const UserVector< double > & | row, | |
const ivector & | indices, | |||
double | low, | |||
double | up | |||
) | [inline, virtual] |
virtual void MIPSolver::add_rows | ( | const vector< Pointer< UserVector< double > > > & | rows, | |
const dvector & | low, | |||
const dvector & | up | |||
) | [inline, virtual] |
virtual void MIPSolver::delete_row | ( | const RowItem & | rowitem | ) | [pure virtual] |
Implemented in OSISolver.
virtual void MIPSolver::delete_rows | ( | const list< const RowItem * > & | rowitems | ) | [inline, virtual] |
virtual void MIPSolver::modify_row | ( | const RowItem & | rowitem, | |
double | low, | |||
double | up | |||
) | [pure virtual] |
Implemented in OSISolver.
virtual void MIPSolver::modify_row | ( | int | index, | |
double | low, | |||
double | up | |||
) | [pure virtual] |
Implemented in OSISolver.
virtual const ColItem* MIPSolver::add_col | ( | double | low, | |
double | up, | |||
MipProblem::VarType | = MipProblem::CONTINUOUS | |||
) | [pure virtual] |
Implemented in OSISolver.
virtual const ColItem* MIPSolver::add_col | ( | const UserVector< double > & | col, | |
double | obj_coeff, | |||
double | low, | |||
double | up, | |||
MipProblem::VarType | = MipProblem::CONTINUOUS | |||
) | [pure virtual] |
Implemented in OSISolver.
virtual void MIPSolver::add_cols | ( | list< const ColItem * > & | colitems, | |
const dvector & | low, | |||
const dvector & | up | |||
) | [pure virtual] |
Adds several columns.
virtual void MIPSolver::add_cols | ( | list< const ColItem * > & | colitems, | |
vector< Pointer< UserVector< double > > > & | cols, | |||
const vector< double > & | obj_coeff, | |||
const dvector & | low, | |||
const dvector & | up | |||
) | [pure virtual] |
virtual void MIPSolver::delete_col | ( | const ColItem & | colitem | ) | [pure virtual] |
Implemented in OSISolver.
virtual void MIPSolver::delete_cols | ( | const list< const ColItem * > & | colitems | ) | [inline, virtual] |
virtual void MIPSolver::modify_col | ( | const ColItem & | colitem, | |
double | low, | |||
double | up, | |||
MipProblem::VarType | vartype | |||
) | [pure virtual] |
Implemented in OSISolver.
virtual void MIPSolver::modify_col | ( | const ColItem & | colitem, | |
const UserVector< double > & | col, | |||
double | obj_coeff, | |||
double | low, | |||
double | up, | |||
MipProblem::VarType | vartype | |||
) | [pure virtual] |
Implemented in OSISolver.
virtual void MIPSolver::modify_col | ( | int | index, | |
double | low, | |||
double | up, | |||
MipProblem::VarType | type | |||
) | [pure virtual] |
If you are sure, which index your variable is.
Implemented in OSISolver.
virtual double MIPSolver::get_collow | ( | int | index | ) | [pure virtual] |
Implemented in OSISolver.
virtual double MIPSolver::get_colup | ( | int | index | ) | [pure virtual] |
Implemented in OSISolver.
Implemented in OSISolver.
ostream& operator<< | ( | ostream & | out, | |
const SolutionStatus | status | |||
) | [friend] |