Dip
0.92.4
|
Define BiLinear objects. More...
#include <CbcLinked.hpp>
Public Member Functions | |
OsiBiLinear () | |
OsiBiLinear (OsiSolverInterface *solver, int xColumn, int yColumn, int xyRow, double coefficient, double xMesh, double yMesh, int numberExistingObjects=0, const OsiObject **objects=NULL) | |
Useful constructor - This Adds in rows and variables to construct valid Linked Ordered Set Adds extra constraints to match other x/y So note not const solver. More... | |
OsiBiLinear (CoinModel *coinModel, int xColumn, int yColumn, int xyRow, double coefficient, double xMesh, double yMesh, int numberExistingObjects=0, const OsiObject **objects=NULL) | |
Useful constructor - This Adds in rows and variables to construct valid Linked Ordered Set Adds extra constraints to match other x/y So note not const model. More... | |
OsiBiLinear (const OsiBiLinear &) | |
virtual OsiObject * | clone () const |
Clone. More... | |
OsiBiLinear & | operator= (const OsiBiLinear &rhs) |
virtual | ~OsiBiLinear () |
virtual double | infeasibility (const OsiBranchingInformation *info, int &whichWay) const |
Infeasibility - large is 0.5. More... | |
virtual double | feasibleRegion (OsiSolverInterface *solver, const OsiBranchingInformation *info) const |
Set bounds to fix the variable at the current (integer) value. More... | |
virtual OsiBranchingObject * | createBranch (OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const |
Creates a branching object. More... | |
virtual void | resetSequenceEtc (int numberColumns, const int *originalColumns) |
Redoes data when sequence numbers change. 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 | boundBranch () const |
Return true if branch should only bound variables. More... | |
int | xColumn () const |
X column. More... | |
int | yColumn () const |
Y column. More... | |
int | xRow () const |
X row. More... | |
int | yRow () const |
Y row. More... | |
int | xyRow () const |
XY row. More... | |
double | coefficient () const |
Coefficient. More... | |
void | setCoefficient (double value) |
Set coefficient. More... | |
int | firstLambda () const |
First lambda (of 4) More... | |
double | xSatisfied () const |
X satisfied if less than this away from mesh. More... | |
void | setXSatisfied (double value) |
double | ySatisfied () const |
Y satisfied if less than this away from mesh. More... | |
void | setYSatisfied (double value) |
double | xOtherSatisfied () const |
X other satisfied if less than this away from mesh. More... | |
void | setXOtherSatisfied (double value) |
double | yOtherSatisfied () const |
Y other satisfied if less than this away from mesh. More... | |
void | setYOtherSatisfied (double value) |
double | xMeshSize () const |
X meshSize. More... | |
void | setXMeshSize (double value) |
double | yMeshSize () const |
Y meshSize. More... | |
void | setYMeshSize (double value) |
double | xySatisfied () const |
XY satisfied if two version differ by less than this. More... | |
void | setXYSatisfied (double value) |
void | setMeshSizes (const OsiSolverInterface *solver, double x, double y) |
Set sizes and other stuff. More... | |
int | branchingStrategy () const |
branching strategy etc bottom 2 bits 0 branch on either, 1 branch on x, 2 branch on y next bit 4 set to say don't update coefficients next bit 8 set to say don't use in feasible region next bit 16 set to say - Always satisfied !! More... | |
void | setBranchingStrategy (int value) |
int | boundType () const |
Simple quadratic bound marker. More... | |
void | setBoundType (int value) |
void | newBounds (OsiSolverInterface *solver, int way, short xOrY, double separator) const |
Does work of branching. More... | |
int | updateCoefficients (const double *lower, const double *upper, double *objective, CoinPackedMatrix *matrix, CoinWarmStartBasis *basis) const |
Updates coefficients - returns number updated. More... | |
double | xyCoefficient (const double *solution) const |
Returns true value of single xyRow coefficient. More... | |
void | getCoefficients (const OsiSolverInterface *solver, double xB[2], double yB[2], double xybar[4]) const |
Get LU coefficients from matrix. More... | |
double | computeLambdas (const double xB[3], const double yB[3], const double xybar[4], double lambda[4]) const |
Compute lambdas (third entry in each .B is current value) (nonzero if bad) More... | |
void | addExtraRow (int row, double multiplier) |
Adds in data for extra row with variable coefficients. More... | |
void | getPseudoShadow (const OsiBranchingInformation *info) |
Sets infeasibility and other when pseudo shadow prices. More... | |
double | getMovement (const OsiBranchingInformation *info) |
Gets sum of movements to correct value. More... | |
![]() | |
OsiObject2 () | |
Default Constructor. More... | |
OsiObject2 (const OsiObject2 &) | |
Copy constructor. More... | |
OsiObject2 & | operator= (const OsiObject2 &rhs) |
Assignment operator. More... | |
virtual | ~OsiObject2 () |
Destructor. More... | |
void | setPreferredWay (int value) |
Set preferred way of branching - -1 off, 0 down, 1 up (for 2-way) More... | |
virtual int | preferredWay () const |
Get preferred way of branching - -1 off, 0 down, 1 up (for 2-way) 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 | 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 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 | 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 | resetBounds (const OsiSolverInterface *) |
Reset variable bounds to their original values. 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 Member Functions | |
void | computeLambdas (const OsiSolverInterface *solver, double lambda[4]) const |
Compute lambdas if coefficients not changing. More... | |
Protected Attributes | |
double | coefficient_ |
data More... | |
double | xMeshSize_ |
x mesh More... | |
double | yMeshSize_ |
y mesh More... | |
double | xSatisfied_ |
x satisfied if less than this away from mesh More... | |
double | ySatisfied_ |
y satisfied if less than this away from mesh More... | |
double | xOtherSatisfied_ |
X other satisfied if less than this away from mesh. More... | |
double | yOtherSatisfied_ |
Y other satisfied if less than this away from mesh. More... | |
double | xySatisfied_ |
xy satisfied if less than this away from true More... | |
double | xyBranchValue_ |
value of x or y to branch about More... | |
int | xColumn_ |
x column More... | |
int | yColumn_ |
y column More... | |
int | firstLambda_ |
First lambda (of 4) More... | |
int | branchingStrategy_ |
branching strategy etc bottom 2 bits 0 branch on either, 1 branch on x, 2 branch on y next bit 4 set to say don't update coefficients next bit 8 set to say don't use in feasible region next bit 16 set to say - Always satisfied !! More... | |
int | boundType_ |
Simple quadratic bound marker. More... | |
int | xRow_ |
x row More... | |
int | yRow_ |
y row (-1 if x*x) More... | |
int | xyRow_ |
Output row. More... | |
int | convexity_ |
Convexity row. More... | |
int | numberExtraRows_ |
Number of extra rows (coefficients to be modified) More... | |
double * | multiplier_ |
Multiplier for coefficient on row. More... | |
int * | extraRow_ |
Row number. More... | |
short | chosen_ |
Which chosen -1 none, 0 x, 1 y. More... | |
![]() | |
int | preferredWay_ |
Preferred way of branching - -1 off, 0 down, 1 up (for 2-way) More... | |
double | otherInfeasibility_ |
"Infeasibility" on other way 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 BiLinear objects.
This models x*y where one or both are integer
Definition at line 733 of file CbcLinked.hpp.
OsiBiLinear::OsiBiLinear | ( | ) |
OsiBiLinear::OsiBiLinear | ( | OsiSolverInterface * | solver, |
int | xColumn, | ||
int | yColumn, | ||
int | xyRow, | ||
double | coefficient, | ||
double | xMesh, | ||
double | yMesh, | ||
int | numberExistingObjects = 0 , |
||
const OsiObject ** | objects = NULL |
||
) |
Useful constructor - This Adds in rows and variables to construct valid Linked Ordered Set Adds extra constraints to match other x/y So note not const solver.
OsiBiLinear::OsiBiLinear | ( | CoinModel * | coinModel, |
int | xColumn, | ||
int | yColumn, | ||
int | xyRow, | ||
double | coefficient, | ||
double | xMesh, | ||
double | yMesh, | ||
int | numberExistingObjects = 0 , |
||
const OsiObject ** | objects = NULL |
||
) |
Useful constructor - This Adds in rows and variables to construct valid Linked Ordered Set Adds extra constraints to match other x/y So note not const model.
OsiBiLinear::OsiBiLinear | ( | const OsiBiLinear & | ) |
|
virtual |
|
virtual |
OsiBiLinear& OsiBiLinear::operator= | ( | const OsiBiLinear & | rhs | ) |
|
virtual |
Infeasibility - large is 0.5.
Implements OsiObject.
|
virtual |
Set bounds to fix the variable at the current (integer) value.
Given an integer value, set the lower and upper bounds to fix the variable. Returns amount it had to move variable.
Implements OsiObject.
|
virtual |
Creates a branching object.
The preferred direction is set by way
, 0 for down, 1 for up.
Reimplemented from OsiObject.
|
virtual |
Redoes data when sequence numbers change.
Reimplemented from OsiObject.
|
virtual |
Reimplemented from OsiObject.
|
inlinevirtual |
Return true if object can take part in normal heuristics.
Reimplemented from OsiObject.
Definition at line 797 of file CbcLinked.hpp.
|
inlinevirtual |
Return true if branch should only bound variables.
Reimplemented from OsiObject.
Definition at line 803 of file CbcLinked.hpp.
References branchingStrategy_.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
X satisfied if less than this away from mesh.
Definition at line 848 of file CbcLinked.hpp.
References xSatisfied_.
|
inline |
Definition at line 852 of file CbcLinked.hpp.
References xSatisfied_.
|
inline |
Y satisfied if less than this away from mesh.
Definition at line 857 of file CbcLinked.hpp.
References ySatisfied_.
|
inline |
Definition at line 861 of file CbcLinked.hpp.
References ySatisfied_.
|
inline |
X other satisfied if less than this away from mesh.
Definition at line 866 of file CbcLinked.hpp.
References xOtherSatisfied_.
|
inline |
Definition at line 870 of file CbcLinked.hpp.
References xOtherSatisfied_.
|
inline |
Y other satisfied if less than this away from mesh.
Definition at line 875 of file CbcLinked.hpp.
References yOtherSatisfied_.
|
inline |
Definition at line 879 of file CbcLinked.hpp.
References yOtherSatisfied_.
|
inline |
|
inline |
Definition at line 888 of file CbcLinked.hpp.
References xMeshSize_.
|
inline |
|
inline |
Definition at line 897 of file CbcLinked.hpp.
References yMeshSize_.
|
inline |
XY satisfied if two version differ by less than this.
Definition at line 902 of file CbcLinked.hpp.
References xySatisfied_.
|
inline |
Definition at line 906 of file CbcLinked.hpp.
References xySatisfied_.
void OsiBiLinear::setMeshSizes | ( | const OsiSolverInterface * | solver, |
double | x, | ||
double | y | ||
) |
Set sizes and other stuff.
|
inline |
branching strategy etc bottom 2 bits 0 branch on either, 1 branch on x, 2 branch on y next bit 4 set to say don't update coefficients next bit 8 set to say don't use in feasible region next bit 16 set to say - Always satisfied !!
Definition at line 922 of file CbcLinked.hpp.
References branchingStrategy_.
|
inline |
Definition at line 926 of file CbcLinked.hpp.
References branchingStrategy_.
|
inline |
Simple quadratic bound marker.
0 no 1 L if coefficient pos, G if negative i.e. value is ub on xy 2 G if coefficient pos, L if negative i.e. value is lb on xy 3 E If bound then real coefficient is 1.0 and coefficient_ is bound
Definition at line 937 of file CbcLinked.hpp.
References boundType_.
|
inline |
Definition at line 941 of file CbcLinked.hpp.
References boundType_.
void OsiBiLinear::newBounds | ( | OsiSolverInterface * | solver, |
int | way, | ||
short | xOrY, | ||
double | separator | ||
) | const |
Does work of branching.
int OsiBiLinear::updateCoefficients | ( | const double * | lower, |
const double * | upper, | ||
double * | objective, | ||
CoinPackedMatrix * | matrix, | ||
CoinWarmStartBasis * | basis | ||
) | const |
Updates coefficients - returns number updated.
double OsiBiLinear::xyCoefficient | ( | const double * | solution | ) | const |
Returns true value of single xyRow coefficient.
void OsiBiLinear::getCoefficients | ( | const OsiSolverInterface * | solver, |
double | xB[2], | ||
double | yB[2], | ||
double | xybar[4] | ||
) | const |
Get LU coefficients from matrix.
double OsiBiLinear::computeLambdas | ( | const double | xB[3], |
const double | yB[3], | ||
const double | xybar[4], | ||
double | lambda[4] | ||
) | const |
Compute lambdas (third entry in each .B is current value) (nonzero if bad)
void OsiBiLinear::addExtraRow | ( | int | row, |
double | multiplier | ||
) |
Adds in data for extra row with variable coefficients.
void OsiBiLinear::getPseudoShadow | ( | const OsiBranchingInformation * | info | ) |
Sets infeasibility and other when pseudo shadow prices.
double OsiBiLinear::getMovement | ( | const OsiBranchingInformation * | info | ) |
Gets sum of movements to correct value.
|
protected |
Compute lambdas if coefficients not changing.
|
protected |
data
Coefficient
Definition at line 969 of file CbcLinked.hpp.
Referenced by coefficient(), and setCoefficient().
|
protected |
|
protected |
|
protected |
x satisfied if less than this away from mesh
Definition at line 975 of file CbcLinked.hpp.
Referenced by setXSatisfied(), and xSatisfied().
|
protected |
y satisfied if less than this away from mesh
Definition at line 977 of file CbcLinked.hpp.
Referenced by setYSatisfied(), and ySatisfied().
|
protected |
X other satisfied if less than this away from mesh.
Definition at line 979 of file CbcLinked.hpp.
Referenced by setXOtherSatisfied(), and xOtherSatisfied().
|
protected |
Y other satisfied if less than this away from mesh.
Definition at line 981 of file CbcLinked.hpp.
Referenced by setYOtherSatisfied(), and yOtherSatisfied().
|
protected |
xy satisfied if less than this away from true
Definition at line 983 of file CbcLinked.hpp.
Referenced by setXYSatisfied(), and xySatisfied().
|
mutableprotected |
value of x or y to branch about
Definition at line 985 of file CbcLinked.hpp.
|
protected |
|
protected |
|
protected |
|
protected |
branching strategy etc bottom 2 bits 0 branch on either, 1 branch on x, 2 branch on y next bit 4 set to say don't update coefficients next bit 8 set to say don't use in feasible region next bit 16 set to say - Always satisfied !!
Definition at line 1002 of file CbcLinked.hpp.
Referenced by boundBranch(), branchingStrategy(), and setBranchingStrategy().
|
protected |
Simple quadratic bound marker.
0 no 1 L if coefficient pos, G if negative i.e. value is ub on xy 2 G if coefficient pos, L if negative i.e. value is lb on xy 3 E If bound then real coefficient is 1.0 and coefficient_ is bound
Definition at line 1010 of file CbcLinked.hpp.
Referenced by boundType(), and setBoundType().
|
protected |
|
protected |
|
protected |
|
protected |
Convexity row.
Definition at line 1018 of file CbcLinked.hpp.
|
protected |
Number of extra rows (coefficients to be modified)
Definition at line 1020 of file CbcLinked.hpp.
|
protected |
Multiplier for coefficient on row.
Definition at line 1022 of file CbcLinked.hpp.
|
protected |
Row number.
Definition at line 1024 of file CbcLinked.hpp.
|
mutableprotected |
Which chosen -1 none, 0 x, 1 y.
Definition at line 1026 of file CbcLinked.hpp.