47 LbpInterval(mc::FFGraph &DAG,
const std::vector<mc::FFVar> &DAGvars,
const std::vector<mc::FFVar> &DAGfunctions,
48 const std::vector<babBase::OptimizationVariable> &variables,
const unsigned nineqIn,
const unsigned neqIn,
49 const unsigned nineqRelaxationOnlyIn,
const unsigned neqRelaxationOnlyIn,
const unsigned nineqSquashIn,
50 std::shared_ptr<Settings> settingsIn, std::shared_ptr<Logger> loggerIn, std::shared_ptr<std::vector<Constraint>> constraintPropertiesIn);
64 void _set_variable_bounds(
const std::vector<double> &lowerVarBounds,
const std::vector<double> &upperVarBounds);
84 void _update_LP_obj(
const MC &resultRelaxation,
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
85 const std::vector<double> &upperVarBounds,
unsigned const &iLin,
unsigned const &iObj);
97 void _update_LP_ineq(
const MC &resultRelaxation,
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
98 const std::vector<double> &upperVarBounds,
unsigned const &iLin,
unsigned const &iIneq);
111 void _update_LP_eq(
const MC &resultRelaxationCv,
const MC &resultRelaxationCc,
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
112 const std::vector<double> &upperVarBounds,
unsigned const &iLin,
unsigned const &iEq);
124 void _update_LP_ineqRelaxationOnly(
const MC &resultRelaxation,
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
125 const std::vector<double> &upperVarBounds,
unsigned const &iLin,
unsigned const &iIneqRelaxationOnly);
138 void _update_LP_eqRelaxationOnly(
const MC &resultRelaxationCv,
const MC &resultRelaxationCc,
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
139 const std::vector<double> &upperVarBounds,
unsigned const &iLin,
unsigned const &iEqRelaxationOnly);
152 void _update_LP_ineq_squash(
const MC &resultRelaxation,
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
153 const std::vector<double> &upperVarBounds,
unsigned const &iLin,
unsigned const &iIneqSquash);
168 #ifdef LP__OPTIMALITY_CHECK 198 #ifdef LP__WRITE_CHECK_FILES 204 void _write_LP_to_file(std::string &fileName);
Wrapper for handling the lower bounding problems as well as optimization-based bounds tightening (OBB...
Definition: lbp.h:65
LINEARIZATION_RETCODE _update_LP(const babBase::BabNode ¤tNode)
Calls the proper function for computing Intervals.
Definition: lbpInterval.cpp:74
void _update_LP_eq(const MC &resultRelaxationCv, const MC &resultRelaxationCc, const std::vector< double > &linearizationPoint, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds, unsigned const &iLin, unsigned const &iEq)
Auxiliary function for updating LP equalities, i.e., processing the linearization of the equality...
Definition: lbpInterval.cpp:119
Class representing a node in the Branch-and-Bound tree.
Definition: babNode.h:35
void activate_more_scaling()
Function called by the B&B solver to heuristically activate more scaling in the LBS.
Definition: lbpInterval.cpp:49
Wrapper for handling the lower bounding problems by using interval arithmetics. We currently do a bit...
Definition: lbpInterval.h:28
SUBSOLVER_RETCODE _check_optimality(const babBase::BabNode ¤tNode, const double newLBD, const std::vector< double > &solution, const double etaVal, const std::vector< double > &multipliers)
Function for checking if the solution point returned is really optimal. Not available in this solver...
void _turn_off_specific_options()
Function for checking if a specific option has to be turned off for a given lower bounding solver...
Definition: lbpInterval.cpp:225
void _update_LP_ineq(const MC &resultRelaxation, const std::vector< double > &linearizationPoint, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds, unsigned const &iLin, unsigned const &iIneq)
Auxiliary function for updating LP inequalities, i.e., processing the linearization of the inequality...
Definition: lbpInterval.cpp:109
LINEARIZATION_RETCODE
Enum for representing the return codes returned by the different linearization techniques.
Definition: returnCodes.h:59
std::vector< I > _resultInterval
Definition: lbpInterval.h:212
std::vector< I > _Intervals
Definition: lbpInterval.h:213
SUBSOLVER_RETCODE
Enum for representing the return codes returned by the different sub-solvers (UpperBoundingSolver, LowerBoundingSolver).
Definition: returnCodes.h:36
namespace holding all essentials of MAiNGO
Definition: aleModel.h:25
void _update_LP_ineq_squash(const MC &resultRelaxation, const std::vector< double > &linearizationPoint, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds, unsigned const &iLin, unsigned const &iIneqSquash)
Auxiliary function for updating LP squash inequalities, i.e., processing the linearization of the squ...
Definition: lbpInterval.cpp:149
mc::McCormick< I > MC
A type definition for a McCormick variable.
Definition: intervalLibrary.h:34
void _solve_LP(const babBase::BabNode ¤tNode)
Function for solving the currently constructed linear program. This function also internally sets the...
Definition: lbpInterval.cpp:159
SUBSOLVER_RETCODE _check_infeasibility(const babBase::BabNode ¤tNode)
Function for checking if the solution point returned is really infeasible. Not available in this solv...
void _set_variable_bounds(const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds)
Function for setting the interval bounds.
Definition: lbpInterval.cpp:59
std::vector< I > _Iarray
Definition: lbpInterval.h:214
SUBSOLVER_RETCODE _check_feasibility(const std::vector< double > &solution)
Function for checking if the solution point returned is really feasible. Not available in this solver...
void _update_LP_ineqRelaxationOnly(const MC &resultRelaxation, const std::vector< double > &linearizationPoint, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds, unsigned const &iLin, unsigned const &iIneqRelaxationOnly)
Auxiliary function for updating LP relaxation only inequalities, i.e., processing the linearization o...
Definition: lbpInterval.cpp:129
LbpInterval(mc::FFGraph &DAG, const std::vector< mc::FFVar > &DAGvars, const std::vector< mc::FFVar > &DAGfunctions, const std::vector< babBase::OptimizationVariable > &variables, const unsigned nineqIn, const unsigned neqIn, const unsigned nineqRelaxationOnlyIn, const unsigned neqRelaxationOnlyIn, const unsigned nineqSquashIn, std::shared_ptr< Settings > settingsIn, std::shared_ptr< Logger > loggerIn, std::shared_ptr< std::vector< Constraint >> constraintPropertiesIn)
Constructor, stores information on the problem.
Definition: lbpInterval.cpp:23
void _update_LP_obj(const MC &resultRelaxation, const std::vector< double > &linearizationPoint, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds, unsigned const &iLin, unsigned const &iObj)
Auxiliary function for updating LP objective, i.e., processing the linearization of the objective fun...
Definition: lbpInterval.cpp:99
void _update_LP_eqRelaxationOnly(const MC &resultRelaxationCv, const MC &resultRelaxationCc, const std::vector< double > &linearizationPoint, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds, unsigned const &iLin, unsigned const &iEqRelaxationOnly)
Auxiliary function for updating LP relaxation only equalities, i.e., processing the linearization of ...
Definition: lbpInterval.cpp:139