11 #ifndef COUENNECHOOSESTRONG_HPP
12 #define COUENNECHOOSESTRONG_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,
virtual int setupList(OsiBranchingInformation *info, bool initialize)
Sets up strong list and clears all if initialize is true.
virtual ~CouenneChooseStrong()
Destructor.
This class chooses a variable to branch on.
CouenneChooseStrong & operator=(const CouenneChooseStrong &rhs)
Assignment operator.
void fint fint fint real fint real real real real real real real real real fint real fint fint fint real fint fint fint fint * info
static void registerOptions(Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions)
Add list of options to be read from file.
CouenneProblem * problem_
Pointer to the associated MINLP problem.
int gutsOfSetupList(OsiBranchingInformation *info, bool initialize)
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...
A class to have all elements necessary to setup a branch-and-bound.
Solver interface class with a pointer to a Couenne cut generator.
virtual int chooseVariable(OsiSolverInterface *solver, OsiBranchingInformation *info, bool fixVariables)
choose object to branch based on earlier setup
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...
void printObjViol(OsiBranchingInformation *info)
Class for MINLP problems with symbolic information.
int goodCandidate(OsiSolverInterface *solver, OsiBranchingInformation *info, OsiObject **object, const int iObject, const double prec)
int simulateBranch(OsiObject *Object, OsiBranchingInformation *info, OsiBranchingObject *branch, OsiSolverInterface *solver, Bonmin::HotInfo *result, int direction)
does one side of the branching
JnlstPtr jnlst_
pointer to journalist for detailed information
virtual OsiChooseVariable * clone() const
Clone.
virtual bool feasibleSolution(const OsiBranchingInformation *info, const double *solution, int numberObjects, const OsiObject **objects)
Returns true if solution looks feasible against given objects.
CouenneChooseStrong()
Default Constructor, forbidden for some reason.
double branchtime_
total time spent in strong branching
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.