83 LowerBoundingSolver(mc::FFGraph &DAG,
const std::vector<mc::FFVar> &DAGvars,
const std::vector<mc::FFVar> &DAGfunctions,
84 const std::vector<babBase::OptimizationVariable> &variables,
const unsigned nineqIn,
const unsigned neqIn,
85 const unsigned nineqRelaxationOnlyIn,
const unsigned neqRelaxationOnlyIn,
const unsigned nineqSquashIn,
86 std::shared_ptr<Settings> settingsIn, std::shared_ptr<Logger> loggerIn, std::shared_ptr<std::vector<Constraint>> constraintPropertiesIn);
171 virtual void _set_variable_bounds(
const std::vector<double> &lowerVarBounds,
const std::vector<double> &upperVarBounds);
183 virtual void _update_LP_obj(
const MC &resultRelaxation,
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
184 const std::vector<double> &upperVarBounds,
unsigned const &iLin,
unsigned const &iObj);
196 virtual void _update_LP_ineq(
const MC &resultRelaxation,
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
197 const std::vector<double> &upperVarBounds,
unsigned const &iLin,
unsigned const &iIneq);
210 virtual void _update_LP_eq(
const MC &resultRelaxationCv,
const MC &resultRelaxationCc,
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
211 const std::vector<double> &upperVarBounds,
unsigned const &iLin,
unsigned const &iEq);
223 virtual void _update_LP_ineqRelaxationOnly(
const MC &resultRelaxation,
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
224 const std::vector<double> &upperVarBounds,
unsigned const &iLin,
unsigned const &iIneqRelaxationOnly);
237 virtual void _update_LP_eqRelaxationOnly(
const MC &resultRelaxationCv,
const MC &resultRelaxationCc,
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
238 const std::vector<double> &upperVarBounds,
unsigned const &iLin,
unsigned const &iEqRelaxationOnly);
252 virtual void _update_LP_ineq_squash(
const MC &resultRelaxation,
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
253 const std::vector<double> &upperVarBounds,
unsigned const &iLin,
unsigned const &iIneqSquash);
263 void _update_whole_LP_at_linpoint(
const std::vector<MC> &resultRelaxation,
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
264 const std::vector<double> &upperVarBounds,
unsigned const &iLin);
275 virtual void _update_LP_obj(
const vMC &resultRelaxationVMC,
const std::vector<std::vector<double>> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
276 const std::vector<double> &upperVarBounds,
unsigned const &iObj);
287 virtual void _update_LP_ineq(
const vMC &resultRelaxationVMC,
const std::vector<std::vector<double>> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
288 const std::vector<double> &upperVarBounds,
unsigned const &iIneq);
300 virtual void _update_LP_eq(
const vMC &resultRelaxationCvVMC,
const vMC &resultRelaxationCcVMC,
const std::vector<std::vector<double>> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
301 const std::vector<double> &upperVarBounds,
unsigned const &iEq);
312 virtual void _update_LP_ineqRelaxationOnly(
const vMC &resultRelaxationVMC,
const std::vector<std::vector<double>> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
313 const std::vector<double> &upperVarBounds,
unsigned const &iIneqRelaxationOnly);
325 virtual void _update_LP_eqRelaxationOnly(
const vMC &resultRelaxationCvVMC,
const vMC &resultRelaxationCcVMC,
const std::vector<std::vector<double>> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
326 const std::vector<double> &upperVarBounds,
unsigned const &iEqRelaxationOnly);
339 virtual void _update_LP_ineq_squash(
const vMC &resultRelaxationVMC,
const std::vector<std::vector<double>> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
340 const std::vector<double> &upperVarBounds,
unsigned const &iIneqSquash);
350 void _update_whole_LP_at_vector_linpoints(
const std::vector<vMC> &resultRelaxationVMC,
const std::vector<std::vector<double>> &linearizationPoints,
const std::vector<double> &lowerVarBounds,
351 const std::vector<double> &upperVarBounds);
362 double _equilibrate_and_relax(std::vector<double> &coefficients,
double &rhs,
const std::vector<double> &lowerVarBounds,
const std::vector<double> &upperVarBounds);
420 virtual void _modify_LP_for_feasopt_OBBT(
const double ¤tUBD, std::list<unsigned> &toTreatMax, std::list<unsigned> &toTreatMin);
441 virtual void _fix_variable(
const unsigned &iVar,
const bool fixToLowerBound);
460 void _linearize_functions_at_linpoint(std::vector<MC> &resultRelaxation,
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
const std::vector<double> &upperVarBounds,
461 mc::FFSubgraph &subgraph, std::vector<mc::FFVar> &functions);
475 const std::vector<double> &lowerVarBounds,
const std::vector<double> &upperVarBounds,
476 mc::FFSubgraph &subgraph, std::vector<mc::FFVar> &functions);
556 void _update_LP_nonlinear_linear(
const std::vector<vMC> &resultRelaxationVMCNonlinear,
const std::vector<MC> &resultRelaxationLinear,
const std::vector<double> &linearizationPoint,
557 const std::vector<std::vector<double>> &scaledPoints,
const std::vector<double> &lowerVarBounds,
const std::vector<double> &upperVarBounds);
568 void _update_LP_nonlinear(
const std::vector<MC> &resultRelaxationNonlinear,
const std::vector<double> &linearizationPoint,
569 const std::vector<double> &lowerVarBounds,
const std::vector<double> &upperVarBounds,
const unsigned iLin);
578 void _reset_LP(
const std::vector<double> &linearizationPoint,
const std::vector<double> &lowerVarBounds,
const std::vector<double> &upperVarBounds);
588 void _compute_and_rotate_simplex(
const unsigned int dim,
const double angleIn,
const double sphereRadius, std::vector<std::vector<double>> &simplexPoints);
593 void _choose_good_lin_points(
const std::vector<double> &lowerVarBounds,
const std::vector<double> &upperVarBounds,
bool firstTime =
true);
615 void _truncate_value(
double &value,
const double tolerance) { value = std::trunc(value * (tolerance)) / (tolerance); }
617 #ifdef LP__OPTIMALITY_CHECK 645 const double etaVal,
const std::vector<double> &multipliers);
653 void _print_LP(
const std::vector<double> &lowerVarBounds,
const std::vector<double> &upperVarBounds);
657 #ifdef LP__WRITE_CHECK_FILES 663 virtual void _write_LP_to_file(std::string &fileName);
742 const unsigned int iVar,
const bool fixToLowerBound);
773 std::shared_ptr<LowerBoundingSolver>
make_lbp_solver(mc::FFGraph &DAG,
const std::vector<mc::FFVar> &DAGvars,
const std::vector<mc::FFVar> &DAGfunctions,
774 const std::vector<babBase::OptimizationVariable> &variables,
const unsigned nineqIn,
const unsigned neqIn,
775 const unsigned nineqRelaxationOnlyIn,
const unsigned neqRelaxationOnlyIn,
const unsigned nineqSquashIn,
776 std::shared_ptr<Settings> settingsIn, std::shared_ptr<Logger> loggerIn, std::shared_ptr<std::vector<Constraint>> constraintPropertiesIn);
Wrapper for handling the lower bounding problems as well as optimization-based bounds tightening (OBB...
Definition: lbp.h:65
virtual void _turn_off_specific_options()
Virtual function for checking if a specific option has to be turned off for a given lower bounding so...
Definition: lbp.cpp:2078
std::vector< unsigned > _nLinIneq
Definition: lbp.h:706
std::vector< std::vector< double > > _rhsEqRelaxationOnly2
Definition: lbp.h:684
virtual 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)
Virtual auxiliary function for updating LP inequalities, i.e., processing the linearization of the in...
Definition: lbp.cpp:1575
void update_incumbent_LBP(const std::vector< double > &incumbentBAB)
Function called by the B&B solver to update the incumbent and the ID of the node currently holding it...
Definition: lbp.cpp:1283
std::vector< babBase::OptimizationVariable > _originalVariables
Definition: lbp.h:719
LINEARIZATION_RETCODE _linearize_model_at_midpoint(const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds)
This function linearizes each function of the model at the middle point of the underlying box...
Definition: lbpLinearizationStrats.cpp:25
void _choose_good_lin_points(const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds, bool firstTime=true)
Heuristical determination of good linearization points. This function is in testing phasing and is no...
Definition: lbpLinearizationStrats.cpp:651
virtual SUBSOLVER_RETCODE _check_optimality(const babBase::BabNode ¤tNode, const double newLBD, const std::vector< double > &solution, const double etaVal, const std::vector< double > &multipliers)
Virtual function for checking if the solution point returned by the LP solver is really optimal...
OBBT
Enum for communicating whether Optimization-Based Bound Tightening should consider only feasibility o...
Definition: lbp.h:41
std::vector< unsigned > _nLinEqRelaxationOnly
Definition: lbp.h:709
bool _onlyBoxConstraints
Definition: lbp.h:718
virtual void _modify_LP_for_feasopt_OBBT(const double ¤tUBD, std::list< unsigned > &toTreatMax, std::list< unsigned > &toTreatMin)
Virtual function modifying the LP for feasibility-optimality OBBT.
Definition: lbp.cpp:1971
virtual void _solve_LP(const babBase::BabNode ¤tNode)
Virtual function for solving the currently constructed linear program. This function also internally ...
Definition: lbp.cpp:1840
std::vector< std::vector< double > > _rhsEqRelaxationOnly1
Definition: lbp.h:683
const unsigned _nvar
Definition: lbp.h:712
void _set_number_of_linpoints(const unsigned int LBP_linPoints)
Function for setting the correct number of linearization points depending on the LBP_linpoints settin...
Definition: lbp.cpp:228
Class representing a node in the Branch-and-Bound tree.
Definition: babNode.h:35
std::vector< unsigned > _nLinIneqSquash
Definition: lbp.h:710
virtual 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)
Virtual auxiliary function for updating LP objective, i.e., processing the linearization of the objec...
Definition: lbp.cpp:1559
double _computationTol
Definition: lbp.h:726
const unsigned _neqRelaxationOnly
Definition: lbp.h:716
double _objectiveValue
Definition: lbp.h:720
LINEARIZATION_RETCODE _linearization_points_Kelley(const babBase::BabNode ¤tNode)
This function adds linearizations to LP with the use of an adapted version of Kelley's algorithm...
Definition: lbpLinearizationStrats.cpp:155
virtual double _get_objective_value_solver()
Virtual function returning the objective value of the lastly solved LP for a specific solver...
Definition: lbp.cpp:1935
mc::vMcCormick< I > vMC
A type definition for a vector McCormick variable.
Definition: intervalLibrary.h:41
std::vector< std::vector< std::vector< double > > > _matrixObj
Definition: lbp.h:670
double _equilibrate_and_relax(std::vector< double > &coefficients, double &rhs, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds)
Function for equilibrating a line in an LP.
Definition: lbp.cpp:1525
virtual LP_RETCODE _get_LP_status()
Virtual function returning the current status of the last solved linear program.
Definition: lbp.cpp:1906
LowerBoundingSolver(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 and constructs an own copy of the directed acyclic gra...
Definition: lbp.cpp:26
virtual void _deactivate_objective_function_for_OBBT()
Virtual function deactivating all objective rows in the LP for feasibility OBBT.
Definition: lbp.cpp:1962
virtual void _set_optimization_sense_of_variable(const unsigned &iVar, const int &optimizationSense)
Virtual function for setting the optimization sense of variable iVar in OBBT.
Definition: lbp.cpp:1980
void preprocessor_check_options(const babBase::BabNode &rootNode)
Function called by the B&B in preprocessing in order to check the need for specific options...
Definition: lbp.cpp:2014
std::vector< unsigned > _nLinEq
Definition: lbp.h:707
double lpLowerBound
Definition: lbp.h:54
LowerBoundingSolver & operator=(const LowerBoundingSolver &)
std::vector< std::vector< double > > _rhsEq2
Definition: lbp.h:681
virtual LINEARIZATION_RETCODE _update_LP(const babBase::BabNode ¤tNode)
Calls the proper function for computing linearization points and modifying the coefficients of the LP...
Definition: lbp.cpp:1451
LINEARIZATION_RETCODE
Enum for representing the return codes returned by the different linearization techniques.
Definition: returnCodes.h:59
std::vector< unsigned > _nLinObj
Definition: lbp.h:705
std::vector< double > _incumbent
Definition: lbp.h:688
std::vector< std::vector< std::vector< double > > > _matrixEqRelaxationOnly2
Definition: lbp.h:676
TIGHTENING_RETCODE do_dbbt_and_probing(babBase::BabNode ¤tNode, const std::vector< double > &lbpSolutionPoint, const LbpDualInfo &dualInfo, const double currentUBD)
Function called by B&B solver for DBBT and probing (for each variable depending on where the LBD solu...
Definition: lbp.cpp:1153
std::vector< std::vector< double > > _rhsEq1
Definition: lbp.h:680
virtual void _get_multipliers(std::vector< double > &multipliers)
Virtual function for setting the multipliers of the lastly solved LP.
Definition: lbp.cpp:1944
LINEARIZATION_RETCODE _linearization_points_Simplex(const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds)
This function linearizes each function of the model at (_nvar+2)/2 points (except for the linear ones...
Definition: lbpLinearizationStrats.cpp:359
SUBSOLVER_RETCODE _solve_probing_LBP(babBase::BabNode ¤tNode, LbpDualInfo &dualInfo, const unsigned int iVar, const bool fixToLowerBound)
Function called by do_dbbt_and_probing for solving the lower bounding problem for probing on the curr...
Definition: lbp.cpp:1302
virtual 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)
Virtual auxiliary function for updating LP relaxation only inequalities, i.e., processing the lineari...
Definition: lbp.cpp:1607
virtual 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)
Virtual auxiliary function for updating LP relaxation only equalities, i.e., processing the lineariza...
Definition: lbp.cpp:1623
void _linearize_functions_at_linpoint(std::vector< MC > &resultRelaxation, const std::vector< double > &linearizationPoint, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds, mc::FFSubgraph &subgraph, std::vector< mc::FFVar > &functions)
Auxiliary function for calling the proper function to linearize functions at chosen linearization poi...
Definition: lbpLinearizationStrats.cpp:63
std::shared_ptr< LowerBoundingSolver > make_lbp_solver(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)
Factory function for initializing different lower bounding solver wrappers.
Definition: lbpFactory.cpp:30
virtual void _restore_LP_coefficients_after_OBBT()
Virtual function for restoring proper coefficients and options in the LP after OBBT.
Definition: lbp.cpp:1953
LINEARIZATION_RETCODE _linearization_points_Kelley_Simplex(const babBase::BabNode ¤tNode)
This function adds linearizations to LP with the use of an adapted version of Kelley's algorithm...
Definition: lbpLinearizationStrats.cpp:433
const unsigned _nineqSquash
Definition: lbp.h:717
LINEARIZATION_RETCODE _linearization_points_random(const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds)
This function linearizes each function of the model at (_nvar+2)/2 random points (except for the line...
Definition: lbpLinearizationStrats.cpp:394
std::shared_ptr< DagObj > _DAGobj
Definition: lbp.h:695
void _linearize_functions_at_preset_vector_linpoint(std::vector< vMC > &resultRelaxationVMC, const std::vector< std::vector< double >> &linearizationPoints, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds, mc::FFSubgraph &subgraph, std::vector< mc::FFVar > &functions)
Auxiliary function for calling the proper function to linearize functions at precomputed vector linea...
Definition: lbpLinearizationStrats.cpp:111
std::shared_ptr< Logger > _logger
Definition: lbp.h:697
std::vector< double > _lowerVarBounds
Definition: lbp.h:723
std::vector< double > multipliers
Definition: lbp.h:53
std::vector< unsigned > _nLinIneqRelaxationOnly
Definition: lbp.h:708
double _get_objective_value()
Virtual function returning the objective value of the lastly solved LP.
Definition: lbp.cpp:1925
virtual ~LowerBoundingSolver()
Virtual destructor, only needed to make sure the correct destructor of the derived classes is called...
Definition: lbp.h:91
std::vector< std::vector< double > > _rhsIneqSquash
Definition: lbp.h:685
TIGHTENING_RETCODE
Enum for representing the return codes returned by LowerBoundingSolvers when solving OBBT or constrai...
Definition: returnCodes.h:45
virtual void _fix_variable(const unsigned &iVar, const bool fixToLowerBound)
Virtual function for fixing a variable to one of its bounds.
Definition: lbp.cpp:1989
SUBSOLVER_RETCODE
Enum for representing the return codes returned by the different sub-solvers (UpperBoundingSolver, LowerBoundingSolver).
Definition: returnCodes.h:36
virtual 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)
Virtual auxiliary function for updating LP equalities, i.e., processing the linearization of the equa...
Definition: lbp.cpp:1591
bool _differentNumberOfLins
Definition: lbp.h:727
namespace holding all essentials of MAiNGO
Definition: aleModel.h:25
unsigned _maxnParticipatingVariables
Definition: lbp.h:711
mc::McCormick< I > MC
A type definition for a McCormick variable.
Definition: intervalLibrary.h:34
std::vector< std::vector< std::vector< double > > > _matrixIneq
Definition: lbp.h:671
virtual SUBSOLVER_RETCODE _check_infeasibility(const babBase::BabNode ¤tNode)
Virtual function for checking if the solution point returned by the LP solver is really infeasible...
virtual 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)
Virtual auxiliary function for updating LP squash inequalities, i.e., processing the linearization of...
Definition: lbp.cpp:1639
const unsigned _neq
Definition: lbp.h:714
std::vector< std::vector< std::vector< double > > > _matrixEq1
Definition: lbp.h:672
void _update_whole_LP_at_vector_linpoints(const std::vector< vMC > &resultRelaxationVMC, const std::vector< std::vector< double >> &linearizationPoints, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds)
Virtual auxiliary function for updating whole LP at once.
Definition: lbp.cpp:1802
void _print_LP(const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds)
Function for printing the current LP stored in _MatrixA, _MatrixA_eqs, _rhsB, _rhsB_eqs.
std::vector< std::vector< double > > _rhsIneq
Definition: lbp.h:679
virtual TIGHTENING_RETCODE do_constraint_propagation(babBase::BabNode ¤tNode, const double currentUBD, const unsigned pass=3)
Function called by B&B solver for constraint propagation. This function is virtual as it may be overw...
Definition: lbp.cpp:987
std::vector< std::vector< std::vector< double > > > _matrixIneqSquash
Definition: lbp.h:677
std::shared_ptr< Settings > _maingoSettings
Definition: lbp.h:696
std::vector< std::vector< std::vector< double > > > _matrixEq2
Definition: lbp.h:673
std::vector< double > _multipliers
Definition: lbp.h:722
std::shared_ptr< std::vector< Constraint > > _constraintProperties
Definition: lbp.h:698
SUBSOLVER_RETCODE solve_LBP(const babBase::BabNode ¤tNode, double &lowerBound, std::vector< double > &solutionPoint, LbpDualInfo &dualInfo)
Function called by B&B solver for solving the lower bounding problem on the current node...
Definition: lbp.cpp:386
std::vector< std::vector< double > > _objectiveScalingFactors
Definition: lbp.h:689
TIGHTENING_RETCODE solve_OBBT(babBase::BabNode ¤tNode, const double currentUBD, const OBBT reductionType)
Function called by B&B solver for optimality-based range reduction (cf., e.g., Gleixner et al...
Definition: lbp.cpp:546
std::vector< double > _solutionPoint
Definition: lbp.h:721
virtual SUBSOLVER_RETCODE _fallback_to_intervals(double &newLBD)
Virtual function for checking if a given node is feasible with the use of interval arithmetics...
Definition: lbp.cpp:2104
void _update_whole_LP_at_linpoint(const std::vector< MC > &resultRelaxation, const std::vector< double > &linearizationPoint, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds, unsigned const &iLin)
Virtual auxiliary function for updating whole LP at once.
Definition: lbp.cpp:1655
virtual bool _check_if_LP_really_infeasible()
Virtual function for checking if the current linear program is really infeasible by, e.g., resolving it with different algorithms.
Definition: lbp.cpp:2003
void _truncate_value(double &value, const double tolerance)
Function used for truncation of value digits which are not guaranteed to be correct.
Definition: lbp.h:615
void _reset_LP(const std::vector< double > &linearizationPoint, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds)
The function resets the LP, meaning it sets all rhs to 1e19 and coefficients to 0. Eta coefficients are -1.
Definition: lbpLinearizationStrats.cpp:229
std::vector< std::vector< std::vector< double > > > _matrixEqRelaxationOnly1
Definition: lbp.h:675
const unsigned _nineq
Definition: lbp.h:713
virtual void _set_variable_bounds(const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds)
Virtual function for setting the bounds of variables.
Definition: lbp.cpp:1513
std::vector< std::vector< std::vector< double > > > _matrixIneqRelaxationOnly
Definition: lbp.h:674
std::vector< double > _upperVarBounds
Definition: lbp.h:724
LP_RETCODE
Enum for representing the return codes returned when a linear program is solved.
Definition: returnCodes.h:69
void _compute_and_rotate_simplex(const unsigned int dim, const double angleIn, const double sphereRadius, std::vector< std::vector< double >> &simplexPoints)
Function for the computation of simplex points lying on a sphere with radius sphereRadius rotated by ...
Definition: lbpLinearizationStrats.cpp:277
LINEARIZATION_RETCODE _linearize_model_at_incumbent(const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds, const bool holdsIncumbent)
This function linearizes each function of the model at the incumbent if it is contained in the curren...
Definition: lbpLinearizationStrats.cpp:44
void _update_LP_nonlinear(const std::vector< MC > &resultRelaxationNonlinear, const std::vector< double > &linearizationPoint, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds, const unsigned iLin)
This function properly builds the LP using previously determined nonlinear functions.
Definition: lbpLinearizationStrats.cpp:598
virtual void activate_more_scaling()
Function called by the B&B solver to heuristically activate more scaling in the LBS.
Definition: lbp.cpp:1292
std::vector< std::vector< double > > _rhsObj
Definition: lbp.h:678
Container for information from the LBP that is needed in DBBT and probing, used for communicating the...
Definition: lbp.h:52
virtual void _get_solution_point(std::vector< double > &solution, double &etaVal)
Virtual function for setting the solution to the solution point of the lastly solved LP...
Definition: lbp.cpp:1915
virtual SUBSOLVER_RETCODE _check_feasibility(const std::vector< double > &solution)
Virtual function for checking if the solution point returned by the LP solver is really feasible...
LP_RETCODE _LPstatus
Definition: lbp.h:725
std::vector< std::vector< double > > _rhsIneqRelaxationOnly
Definition: lbp.h:682
void _update_LP_nonlinear_linear(const std::vector< vMC > &resultRelaxationVMCNonlinear, const std::vector< MC > &resultRelaxationLinear, const std::vector< double > &linearizationPoint, const std::vector< std::vector< double >> &scaledPoints, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds)
This function properly builds the LP using previously determined nonlinear and linear functions...
Definition: lbpLinearizationStrats.cpp:518
const unsigned _nineqRelaxationOnly
Definition: lbp.h:715