11 #ifndef COUENNECHOOSESTRONG_HPP
12 #define COUENNECHOOSESTRONG_HPP
14 #include "BonChooseVariable.hpp"
37 virtual OsiChooseVariable *
clone()
const;
44 virtual int setupList (OsiBranchingInformation *info,
bool initialize);
61 OsiBranchingInformation *info,
62 int numberToDo,
int returnCriterion);
66 const double * solution,
68 const OsiObject ** objects);
72 OsiBranchingInformation *info,
96 OsiBranchingInformation *info,
97 OsiObject **
object,
const int iObject,
const double prec);
100 bool saveBestCand(OsiObject **
object,
const int iObject,
102 const double upEstimate,
103 const double downEstimate,
105 double &bestVal2,
int &bestIndex,
112 OsiBranchingInformation *info,
113 OsiBranchingObject *branch,
114 OsiSolverInterface *solver,
115 Bonmin::HotInfo * result,
int goodCandidate(OsiSolverInterface *solver, OsiBranchingInformation *info, OsiObject **object, const int iObject, const double prec)
virtual int doStrongBranching(OsiSolverInterface *OsiSolver, OsiBranchingInformation *info, int numberToDo, int returnCriterion)
This is a utility function which does strong branching on a list of objects and stores the results in...
int simulateBranch(OsiObject *Object, OsiBranchingInformation *info, OsiBranchingObject *branch, OsiSolverInterface *solver, Bonmin::HotInfo *result, int direction)
does one side of the branching
virtual int setupList(OsiBranchingInformation *info, bool initialize)
Sets up strong list and clears all if initialize is true.
void printObjViol(OsiBranchingInformation *info)
virtual ~CouenneChooseStrong()
Destructor.
CouenneProblem * problem_
Pointer to the associated MINLP problem.
virtual OsiChooseVariable * clone() const
Clone.
int gutsOfSetupList(OsiBranchingInformation *info, bool initialize)
static void registerOptions(Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions)
Add list of options to be read from file.
Solver interface class with a pointer to a Couenne cut generator.
bool estimateProduct_
Normally, a convex combination of the min/max lower bounds' estimates is taken to select a branching ...
bool pseudoUpdateLP_
should we update the pseudocost multiplier with the distance between the LP point and the solution of...
Class for MINLP problems with symbolic information.
virtual bool feasibleSolution(const OsiBranchingInformation *info, const double *solution, int numberObjects, const OsiObject **objects)
Returns true if solution looks feasible against given objects.
JnlstPtr jnlst_
pointer to journalist for detailed information
bool saveBestCand(OsiObject **object, const int iObject, const double value, const double upEstimate, const double downEstimate, double &bestVal1, double &bestVal2, int &bestIndex, int &bestWay)
Save best candidate.
CouenneChooseStrong()
Default Constructor, forbidden for some reason.
CouenneChooseStrong & operator=(const CouenneChooseStrong &rhs)
Assignment operator.
virtual int chooseVariable(OsiSolverInterface *solver, OsiBranchingInformation *info, bool fixVariables)
choose object to branch based on earlier setup
double branchtime_
total time spent in strong branching