3 #ifndef BonChooseVariable_H 
    4 #define BonChooseVariable_H 
    6 #include "OsiChooseVariable.hpp" 
    7 #ifdef BONMIN_CURVATURE_BRANCHING 
   11 #include "CoinMessageHandler.hpp" 
   16 #define OLD_USEFULLNESS 
   27     HotInfo( OsiSolverInterface * solver,
 
   28              const OsiBranchingInformation *
info,
 
   29              const OsiObject * 
const * objects, 
int whichObject);
 
   38     virtual OsiHotInfo * 
clone() 
const;
 
   44     int updateInformation( 
const OsiSolverInterface * solver, 
const OsiBranchingInformation * info,
 
   45                            OsiChooseVariable * choose);
 
   60       assert(branchingObject_->numberBranches()==2);
 
   66       assert(branchingObject_->numberBranches()==2);
 
   97                                  OsiBranchingInformation *
info,
 
   98                                  int numberToDo, 
int returnCriterion);
 
   99 #ifndef OLD_USEFULLNESS 
  101     enum CandidateSortCriterion {
 
  140       int logLevel = 
handler_->logLevel();
 
  179     virtual OsiChooseVariable * 
clone() 
const;
 
  187     double maxminCrit(
const OsiBranchingInformation* info) 
const;
 
  190         const double upMult, 
const double dowMult,
 
  192         const OsiObject* 
object, 
int i,
 
  193         double& value2) 
const;
 
  197     virtual int setupList ( OsiBranchingInformation *info, 
bool initialize);
 
  212     virtual int chooseVariable( OsiSolverInterface * solver, OsiBranchingInformation *info, 
bool fixVariables);
 
  228         int branch, OsiHotInfo * hotInfo);
 
  232         double changeInObjective, 
double changeInValue,
 
  268       if (solver->isProvenOptimal())
 
  270       else if (solver->isIterationLimitReached()
 
  271                &&!solver->isDualObjectiveLimitReached())
 
  324 #ifndef OLD_USEFULLNESS 
  326     CandidateSortCriterion sortCrit_;
 
  338     bool isRootNode(
const OsiBranchingInformation *info) 
const;
 
virtual OsiHotInfo * clone() const 
Clone. 
Normal termination, found a variable to branch on. 
chooseVariableReturnStatuses
Return statuses for chooseVariable. 
static void registerOptions(Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions)
HotInfo()
Default constructor. 
virtual int setupList(OsiBranchingInformation *info, bool initialize)
Sets up strong list and clears all if initialize is true. 
virtual ~BonChooseVariable()
Destructor. 
void setOnlyPseudoWhenTrusted(bool only_pseudo_when_trusted)
virtual ~HotInfo()
Destructor. 
void setCbcModel(CbcModel *cbc_model)
Method for setting CbcModel, which is used to get statusOfSearch. 
double setup_pseudo_frac_
fraction of branching candidates that are not trusted yet 
This class chooses a variable to branch on. 
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
Can fix variables but does not have strong branching candidates. 
bool only_pseudo_when_trusted_
Flag indicating whether we don't want to mix strong branching and pseudo costs during the decision wh...
int trustStrongForPseudoCosts_
Wether or not to trust strong branching results for updating pseudo costs. 
double downInfeasibility() const 
down infeasibility 
bool isRootNode(const OsiBranchingInformation *info) const 
detecting if this is root node 
Ipopt::SmartPtr< Ipopt::Journalist > jnlst_
Holding on the a pointer to the journalist. 
double maxmin_crit_no_sol_
maxmin weight in branching decision when no solution has been found yet 
double computeUsefulness(const double MAXMIN_CRITERION, const double upMult, const double dowMult, const double value, const OsiObject *object, int i, double &value2) const 
virtual void updateInformation(const OsiBranchingInformation *info, int branch, OsiHotInfo *hotInfo)
This is a utility function which does strong branching on a list of objects and stores the results in...
double maxminCrit(const OsiBranchingInformation *info) const 
Helper functions for setupList and chooseVariable. 
Found variable to fix and also has remaining candidate for strong branching. 
int numberStrongBackup_
backup of numberStrong_ before Root node solve 
virtual OsiChooseVariable * clone() const 
Clone. 
double maxmin_crit_have_sol_
maxmin weight in branching decision when no solution has been found yet 
void passInMessageHandler(CoinMessageHandler *handler)
static const std::string CNAME
Stores the class name for throwing errors. 
int minNumberStrongBranch_
Always strong branch that many first candidate in the list regardless of numberTrusted. 
vector< HotInfo > results_
Stores strong branching results. 
HotInfo & operator=(const HotInfo &rhs)
Assignment operator. 
All variable are feasible, the node is feasible. 
CoinMessageHandler & message(Messages_Types type) const 
All done no variable can be fixed. 
const OsiPseudoCosts & pseudoCosts() const 
Access to pseudo costs storage. 
OsiPseudoCosts & pseudoCosts()
Access to pseudo costs storage. 
void setDownInfeasibility(double x)
Set the down infeasibility. 
A class to have all elements necessary to setup a branch-and-bound. 
Messages messages_
Messages. 
Interupted and found a variable to fix. 
StrongStatus
Statuses for strong branching candidates. 
int bb_log_level_
verbosity level 
Child is proven infeasible. 
Found variable to fix and also has a (non-strong) branching candidate. 
CoinMessageHandler * handler_
Message handler. 
int number_not_trusted_
Number of variables put into the list because there were not trusted. 
int numberLookAhead_
number of look-ahead strong-branching steps 
Child is proven feasible. 
double time_limit_
Global time limit for algorithm. 
CbcModel * cbc_model_
CbcModel, used to get status of search. 
void computeMultipliers(double &upMult, double &downMult) const 
int numberBeforeTrustedList_
number of times a branch has to happen so that it is trusted in setupList 
vector< double > infeasibilities_
infeasibilities of children 
int updateInformation(const OsiSolverInterface *solver, const OsiBranchingInformation *info, OsiChooseVariable *choose)
Fill in some usefull information after a strong branching is done: 
OsiPseudoCosts pseudoCosts_
Stores the pseudo costs. 
Several variable can be fixed. 
void setUpInfeasibility(double x)
Set the down infeasibility. 
double upInfeasibility() const 
up infeasibility 
BonChooseVariable()
Default Constructor, forbiden for some reason. 
int numberStrongRoot_
number of strong branching points at root node 
int determineStatus(OsiSolverInterface *solver) const 
Determine status of strong branching solution. 
Interupted because of time limit. 
virtual int doStrongBranching(OsiSolverInterface *solver, 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...
BonChooseVariable & operator=(const BonChooseVariable &rhs)
Assignment operator. 
virtual int chooseVariable(OsiSolverInterface *solver, OsiBranchingInformation *info, bool fixVariables)
Choose a variable Returns - -1 Node is infeasible 0 Normal termination - we have a candidate 1 All lo...
double start_time_
Starting time of algorithm. 
void fint fint fint real fint real * x