Dip
0.92.4
|
Define a follow on class. More...
#include <CbcBranchFollow2.hpp>
Public Member Functions | |
CbcFollowOn2 () | |
CbcFollowOn2 (CbcModel *model) | |
Useful constructor. More... | |
CbcFollowOn2 (const CbcFollowOn2 &) | |
virtual CbcObject * | clone () const |
Clone. More... | |
CbcFollowOn2 & | operator= (const CbcFollowOn2 &rhs) |
~CbcFollowOn2 () | |
virtual double | infeasibility (int &preferredWay) const |
Infeasibility - large is 0.5. More... | |
virtual void | feasibleRegion () |
This looks at solution and sets bounds to contain solution. More... | |
virtual CbcBranchingObject * | createBranch (int way) |
Creates a branching object. More... | |
virtual int | gutsOfFollowOn2 (int &otherRow, int &preferredWay, int &effectiveRhs) const |
As some computation is needed in more than one place - returns row. More... | |
int | maximumRhs () const |
get and set for maximum rhws (affects cuts as branch) More... | |
void | setMaximumRhs (int value) |
![]() | |
CbcObject () | |
CbcObject (CbcModel *model) | |
CbcObject (const CbcObject &) | |
CbcObject & | operator= (const CbcObject &rhs) |
virtual | ~CbcObject () |
Destructor. More... | |
virtual double | infeasibility (const OsiBranchingInformation *, int &preferredWay) const |
Infeasibility of the object. More... | |
virtual double | feasibleRegion (OsiSolverInterface *solver, const OsiBranchingInformation *info) const |
Dummy one for compatibility. More... | |
virtual double | feasibleRegion (OsiSolverInterface *solver) const |
For the variable(s) referenced by the object, look at the current solution and set bounds to match the solution. More... | |
virtual CbcBranchingObject * | createCbcBranch (OsiSolverInterface *, const OsiBranchingInformation *, int) |
Create a branching object and indicate which way to branch first. More... | |
virtual OsiBranchingObject * | createBranch (OsiSolverInterface *, const OsiBranchingInformation *, int) const |
Create a branching object and indicate which way to branch first. More... | |
virtual OsiBranchingObject * | createOsiBranch (OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const |
Create an Osibranching object and indicate which way to branch first. More... | |
virtual OsiSolverBranch * | solverBranch () const |
Create an OsiSolverBranch object. More... | |
virtual CbcBranchingObject * | preferredNewFeasible () const |
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new feasible point in a good direction. More... | |
virtual CbcBranchingObject * | notPreferredNewFeasible () const |
Given a valid solution (with reduced costs, etc.), return a branching object which would give a new feasible point in a bad direction. More... | |
virtual void | resetBounds (const OsiSolverInterface *) |
Reset variable bounds to their original values. More... | |
virtual void | floorCeiling (double &floorValue, double &ceilingValue, double value, double tolerance) const |
Returns floor and ceiling i.e. More... | |
virtual CbcObjectUpdateData | createUpdateInformation (const OsiSolverInterface *solver, const CbcNode *node, const CbcBranchingObject *branchingObject) |
Pass in information on branch just done and create CbcObjectUpdateData instance. More... | |
virtual void | updateInformation (const CbcObjectUpdateData &) |
Update object by CbcObjectUpdateData. More... | |
int | id () const |
Identifier (normally column number in matrix) More... | |
void | setId (int value) |
Set identifier (normally column number in matrix) but 1000000000 to 1100000000 means optional branching object i.e. More... | |
bool | optionalObject () const |
Return true if optional branching object i.e. More... | |
int | position () const |
Get position in object_ list. More... | |
void | setPosition (int position) |
Set position in object_ list. More... | |
void | setModel (CbcModel *model) |
update model More... | |
CbcModel * | model () const |
Return model. More... | |
int | preferredWay () const |
If -1 down always chosen first, +1 up always, 0 normal. More... | |
void | setPreferredWay (int value) |
Set -1 down always chosen first, +1 up always, 0 normal. More... | |
virtual void | redoSequenceEtc (CbcModel *, int, const int *) |
Redoes data when sequence numbers change. More... | |
virtual void | initializeForBranching (CbcModel *) |
Initialize for branching. More... | |
![]() | |
OsiObject () | |
Default Constructor. More... | |
OsiObject (const OsiObject &) | |
Copy constructor. More... | |
OsiObject & | operator= (const OsiObject &rhs) |
Assignment operator. More... | |
virtual | ~OsiObject () |
Destructor. More... | |
double | infeasibility (const OsiSolverInterface *solver, int &whichWay) const |
Infeasibility of the object. More... | |
virtual double | checkInfeasibility (const OsiBranchingInformation *info) const |
virtual bool | canDoHeuristics () const |
Return true if object can take part in normal heuristics. More... | |
virtual bool | canMoveToNearest () const |
Return true if object can take part in move to nearest heuristic. More... | |
virtual int | columnNumber () const |
Column number if single column object -1 otherwise, Used by heuristics. More... | |
int | priority () const |
Return Priority - note 1 is highest priority. More... | |
void | setPriority (int priority) |
Set priority. More... | |
virtual bool | boundBranch () const |
Return true if branch should only bound variables. More... | |
virtual bool | canHandleShadowPrices () const |
Return true if knows how to deal with Pseudo Shadow Prices. More... | |
int | numberWays () const |
Return maximum number of ways branch may have. More... | |
void | setNumberWays (int numberWays) |
Set maximum number of ways branch may have. More... | |
void | setWhichWay (int way) |
Return preferred way to branch. More... | |
int | whichWay () const |
Return current preferred way to branch. More... | |
double | infeasibility () const |
Return infeasibility. More... | |
virtual double | upEstimate () const |
Return "up" estimate (default 1.0e-5) More... | |
virtual double | downEstimate () const |
Return "down" estimate (default 1.0e-5) More... | |
virtual void | resetSequenceEtc (int, const int *) |
Change column numbers after preprocessing. More... | |
virtual void | updateBefore (const OsiObject *) |
Updates stuff like pseudocosts before threads. More... | |
virtual void | updateAfter (const OsiObject *, const OsiObject *) |
Updates stuff like pseudocosts after threads finished. More... | |
Protected Attributes | |
CoinPackedMatrix | matrix_ |
data Matrix More... | |
CoinPackedMatrix | matrixByRow_ |
Matrix by row. More... | |
int * | rhs_ |
Possible rhs (if 0 then not possible) More... | |
int | maximumRhs_ |
If >1 then allow cuts if effective rhs <= this. More... | |
![]() | |
CbcModel * | model_ |
data More... | |
int | id_ |
Identifier (normally column number in matrix) More... | |
int | position_ |
Position in object list. More... | |
int | preferredWay_ |
If -1 down always chosen first, +1 up always, 0 normal. More... | |
![]() | |
double | infeasibility_ |
data More... | |
short | whichWay_ |
Computed preferred way to branch. More... | |
short | numberWays_ |
Maximum number of ways on branch. More... | |
int | priority_ |
Priority. More... | |
Define a follow on class.
The idea of this is that in air-crew scheduling problems crew may fly in on flight A and out on flight B or on some other flight. A useful branch is one which on one side fixes all which go out on flight B to 0, while the other branch fixes all those that do NOT go out on flight B to 0.
This tries to generalize so that cuts are produced with sum aij xj <= bi on each side. It should be intelligent enough to fix if things can be fixed. We also need to make sure branch cuts work properly (i.e. persistence).
This branching rule should be in addition to normal rules and have a high priority.
Definition at line 25 of file CbcBranchFollow2.hpp.
CbcFollowOn2::CbcFollowOn2 | ( | ) |
CbcFollowOn2::CbcFollowOn2 | ( | CbcModel * | model | ) |
Useful constructor.
CbcFollowOn2::CbcFollowOn2 | ( | const CbcFollowOn2 & | ) |
CbcFollowOn2::~CbcFollowOn2 | ( | ) |
CbcFollowOn2& CbcFollowOn2::operator= | ( | const CbcFollowOn2 & | rhs | ) |
|
virtual |
Infeasibility - large is 0.5.
Reimplemented from CbcObject.
|
virtual |
This looks at solution and sets bounds to contain solution.
Implements CbcObject.
|
virtual |
Creates a branching object.
|
virtual |
As some computation is needed in more than one place - returns row.
Also returns other row and effective rhs (so we can know if cut)
|
inline |
get and set for maximum rhws (affects cuts as branch)
Definition at line 61 of file CbcBranchFollow2.hpp.
References maximumRhs_.
|
inline |
Definition at line 65 of file CbcBranchFollow2.hpp.
References maximumRhs_.
|
protected |
data Matrix
Definition at line 73 of file CbcBranchFollow2.hpp.
|
protected |
Matrix by row.
Definition at line 75 of file CbcBranchFollow2.hpp.
|
protected |
Possible rhs (if 0 then not possible)
Definition at line 77 of file CbcBranchFollow2.hpp.
|
protected |
If >1 then allow cuts if effective rhs <= this.
Definition at line 79 of file CbcBranchFollow2.hpp.
Referenced by maximumRhs(), and setMaximumRhs().