76 UpperBoundingSolver(mc::FFGraph &DAG,
const std::vector<mc::FFVar> &DAGvars,
const std::vector<mc::FFVar> &DAGfunctions,
const std::vector<babBase::OptimizationVariable> &variables,
77 const unsigned nineqIn,
const unsigned neqIn,
const unsigned nineqSquashIn,
Settings *settingsIn,
Logger *loggerIn, std::vector<Constraint> *constraintPropertiesIn,
UBS_USE useIn);
105 SUBSOLVER_RETCODE multistart(
babBase::BabNode const ¤tNode,
double &objectiveValue, std::vector<double> &solutionPoint, std::vector<SUBSOLVER_RETCODE> &feasible, std::vector<double> &optimalObjectives,
bool &initialPointFeasible);
125 virtual SUBSOLVER_RETCODE _solve_nlp(
const std::vector<double> &lowerVarBounds,
const std::vector<double> &upperVarBounds,
double &objectiveValue, std::vector<double> &solutionPoint);
189 std::vector<double>
_generate_multistart_point(
bool &usedCenter,
const std::vector<double> &lowerVarBounds,
const std::vector<double> &upperVarBounds);
239 std::shared_ptr<UpperBoundingSolver>
make_ubp_solver(mc::FFGraph &DAG,
const std::vector<mc::FFVar> &DAGvars,
const std::vector<mc::FFVar> &DAGfunctions,
240 const std::vector<babBase::OptimizationVariable> &variables,
const unsigned nineqIn,
const unsigned neqIn,
241 const unsigned nineqSquashIn,
Settings *settingsIn,
Logger *loggerIn, std::vector<Constraint> *constraintPropertiesIn,
std::shared_ptr< UpperBoundingSolver > make_ubp_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 nineqSquashIn, Settings *settingsIn, Logger *loggerIn, std::vector< Constraint > *constraintPropertiesIn, UpperBoundingSolver::UBS_USE useIn)
Factory function for initializing different upper bounding solver wrappers.
Definition: ubpFactory.cpp:39
virtual SUBSOLVER_RETCODE solve(babBase::BabNode const ¤tNode, double &objectiveValue, std::vector< double > &solutionPoint)
Function called by B&B solver for solving the upper bounding problem on the current node....
Definition: ubp.cpp:64
SUBSOLVER_RETCODE _check_eq(const std::vector< double > &modelOutput) const
Function checking if equality constraints are fulfilled.
Definition: ubp.cpp:743
unsigned _nineqSquash
Definition: ubp.h:208
Class representing a node in the Branch-and-Bound tree.
Definition: babNode.h:35
Struct for storing settings for MAiNGO.
Definition: settings.h:143
SUBSOLVER_RETCODE _check_bounds(const std::vector< double > ¤tPoint) const
Function checking if bounds are fulfilled.
Definition: ubp.cpp:802
This class contains all logging and output information.
Definition: logger.h:100
std::vector< double > _originalUpperBounds
Definition: ubp.h:211
unsigned _neq
Definition: ubp.h:209
Base class for wrappers for handling the upper bounding problems.
Definition: ubp.h:49
SUBSOLVER_RETCODE
Enum for representing the return codes returned by the different sub-solvers (UpperBoundingSolver,...
Definition: returnCodes.h:40
Logger * _logger
Definition: ubp.h:196
namespace holding all essentials of MAiNGO
Definition: aleModel.h:31
Settings * _maingoSettings
Definition: ubp.h:195
UBS_USE
Enum for communicating what the intended purpose of the solver is. This determines which settings are...
Definition: ubp.h:56
unsigned _nvar
Definition: ubp.h:206
SUBSOLVER_RETCODE _check_ineq_squash(const std::vector< double > &modelOutput) const
Function checking if squash inequality constraints are fulfilled (no tolerance allowed)
Definition: ubp.cpp:782
std::vector< double > _originalLowerBounds
Definition: ubp.h:212
UBS_USE _intendedUse
Definition: ubp.h:198
Struct for storing structure information for the upper bounding solver.
Definition: ubpStructure.h:35
SUBSOLVER_RETCODE _check_integrality(const std::vector< double > ¤tPoint) const
Function checking if discrete variables are indeed discrete.
Definition: ubp.cpp:829
virtual ~UpperBoundingSolver()
Virtual destructor, only needed to make sure the correct destructor of the derived classes is called.
Definition: ubp.h:82
UpperBoundingSolver & operator=(const UpperBoundingSolver &)
SUBSOLVER_RETCODE multistart(babBase::BabNode const ¤tNode, double &objectiveValue, std::vector< double > &solutionPoint, std::vector< SUBSOLVER_RETCODE > &feasible, std::vector< double > &optimalObjectives, bool &initialPointFeasible)
Multistart heuristic for automatically solving the UBP from multiple starting points.
Definition: ubp.cpp:157
SUBSOLVER_RETCODE _check_ineq(const std::vector< double > &modelOutput) const
Function checking if inequality constraints are fulfilled.
Definition: ubp.cpp:763
std::vector< Constraint > * _constraintProperties
Definition: ubp.h:199
std::vector< double > _generate_multistart_point(bool &usedCenter, const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds)
Function for generating a point used in multistart.
Definition: ubp.cpp:472
virtual SUBSOLVER_RETCODE _solve_nlp(const std::vector< double > &lowerVarBounds, const std::vector< double > &upperVarBounds, double &objectiveValue, std::vector< double > &solutionPoint)
Function for actually solving the NLP sub-problem. This needs to be re-defined in derived classes to ...
Definition: ubp.cpp:145
std::vector< babBase::OptimizationVariable > _originalVariables
Definition: ubp.h:210
std::shared_ptr< DagObj > _DAGobj
Definition: ubp.h:197
void _determine_sparsity_hessian()
Function for determining the non-zero entries in the Hessian of the Lagrangian function.
Definition: ubp.cpp:1024
UbpStructure _structure
Definition: ubp.h:213
void _determine_structure()
Function for determining the number of variables participating in each function and the type of a fun...
Definition: ubp.cpp:936
SUBSOLVER_RETCODE check_feasibility(const std::vector< double > ¤tPoint, double &objectiveValue) const
Function for checking feasibility of a point.
Definition: ubp.cpp:881
unsigned _nineq
Definition: ubp.h:207
void _determine_sparsity_jacobian()
Function for setting the information about the sparsity structure in the Jacobian.
Definition: ubp.cpp:995