#include <CbcLinked.hpp>
Inheritance diagram for OsiBiLinear:
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. | |
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 (const OsiBiLinear &) | |
virtual OsiObject * | clone () const |
Clone. | |
OsiBiLinear & | operator= (const OsiBiLinear &rhs) |
virtual | ~OsiBiLinear () |
virtual double | infeasibility (const OsiBranchingInformation *info, int &whichWay) const |
Infeasibility - large is 0.5. | |
virtual double | feasibleRegion (OsiSolverInterface *solver, const OsiBranchingInformation *info) const |
Set bounds to fix the variable at the current (integer) value. | |
virtual OsiBranchingObject * | createBranch (OsiSolverInterface *solver, const OsiBranchingInformation *info, int way) const |
Creates a branching object. | |
virtual void | resetSequenceEtc (int numberColumns, const int *originalColumns) |
Redoes data when sequence numbers change. | |
virtual double | checkInfeasibility (const OsiBranchingInformation *info) const |
virtual bool | canDoHeuristics () const |
Return true if object can take part in normal heuristics. | |
virtual bool | boundBranch () const |
Return true if branch should only bound variables. | |
int | xColumn () const |
X column. | |
int | yColumn () const |
Y column. | |
int | xRow () const |
X row. | |
int | yRow () const |
Y row. | |
int | xyRow () const |
XY row. | |
double | coefficient () const |
Coefficient. | |
void | setCoefficient (double value) |
Set coefficient. | |
int | firstLambda () const |
First lambda (of 4). | |
double | xSatisfied () const |
X satisfied if less than this away from mesh. | |
void | setXSatisfied (double value) |
double | ySatisfied () const |
Y satisfied if less than this away from mesh. | |
void | setYSatisfied (double value) |
double | xOtherSatisfied () const |
X other satisfied if less than this away from mesh. | |
void | setXOtherSatisfied (double value) |
double | yOtherSatisfied () const |
Y other satisfied if less than this away from mesh. | |
void | setYOtherSatisfied (double value) |
double | xMeshSize () const |
X meshSize. | |
void | setXMeshSize (double value) |
double | yMeshSize () const |
Y meshSize. | |
void | setYMeshSize (double value) |
double | xySatisfied () const |
XY satisfied if two version differ by less than this. | |
void | setXYSatisfied (double value) |
void | setMeshSizes (const OsiSolverInterface *solver, double x, double y) |
Set sizes and other stuff. | |
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 !! | |
void | setBranchingStrategy (int value) |
int | boundType () const |
Simple quadratic bound marker. | |
void | setBoundType (int value) |
void | newBounds (OsiSolverInterface *solver, int way, short xOrY, double separator) const |
Does work of branching. | |
int | updateCoefficients (const double *lower, const double *upper, double *objective, CoinPackedMatrix *matrix, CoinWarmStartBasis *basis) const |
Updates coefficients - returns number updated. | |
double | xyCoefficient (const double *solution) const |
Returns true value of single xyRow coefficient. | |
void | getCoefficients (const OsiSolverInterface *solver, double xB[2], double yB[2], double xybar[4]) const |
Get LU coefficients from matrix. | |
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). | |
void | addExtraRow (int row, double multiplier) |
Adds in data for extra row with variable coefficients. | |
void | getPseudoShadow (const OsiBranchingInformation *info) |
Sets infeasibility and other when pseudo shadow prices. | |
double | getMovement (const OsiBranchingInformation *info) |
Gets sum of movements to correct value. | |
Protected Member Functions | |
void | computeLambdas (const OsiSolverInterface *solver, double lambda[4]) const |
Compute lambdas if coefficients not changing. | |
Protected Attributes | |
double | coefficient_ |
Coefficient. | |
double | xMeshSize_ |
x mesh | |
double | yMeshSize_ |
y mesh | |
double | xSatisfied_ |
x satisfied if less than this away from mesh | |
double | ySatisfied_ |
y satisfied if less than this away from mesh | |
double | xOtherSatisfied_ |
X other satisfied if less than this away from mesh. | |
double | yOtherSatisfied_ |
Y other satisfied if less than this away from mesh. | |
double | xySatisfied_ |
xy satisfied if less than this away from true | |
double | xyBranchValue_ |
value of x or y to branch about | |
int | xColumn_ |
x column | |
int | yColumn_ |
y column | |
int | firstLambda_ |
First lambda (of 4). | |
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 !! | |
int | boundType_ |
Simple quadratic bound marker. | |
int | xRow_ |
x row | |
int | yRow_ |
y row (-1 if x*x) | |
int | xyRow_ |
Output row. | |
int | convexity_ |
Convexity row. | |
int | numberExtraRows_ |
Number of extra rows (coefficients to be modified). | |
double * | multiplier_ |
Multiplier for coefficient on row. | |
int * | extraRow_ |
Row number. | |
short | chosen_ |
Which chosen -1 none, 0 x, 1 y. |
This models x*y where one or both are integer
Definition at line 691 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 OsiBiLinear::~OsiBiLinear | ( | ) | [virtual] |
virtual OsiObject* OsiBiLinear::clone | ( | ) | const [virtual] |
OsiBiLinear& OsiBiLinear::operator= | ( | const OsiBiLinear & | rhs | ) |
virtual double OsiBiLinear::infeasibility | ( | const OsiBranchingInformation * | info, | |
int & | whichWay | |||
) | const [virtual] |
virtual double OsiBiLinear::feasibleRegion | ( | OsiSolverInterface * | solver, | |
const OsiBranchingInformation * | info | |||
) | const [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 OsiBranchingObject* OsiBiLinear::createBranch | ( | OsiSolverInterface * | solver, | |
const OsiBranchingInformation * | info, | |||
int | way | |||
) | const [virtual] |
Creates a branching object.
The preferred direction is set by way
, 0 for down, 1 for up.
Implements OsiObject.
virtual void OsiBiLinear::resetSequenceEtc | ( | int | numberColumns, | |
const int * | originalColumns | |||
) | [virtual] |
virtual double OsiBiLinear::checkInfeasibility | ( | const OsiBranchingInformation * | info | ) | const [virtual] |
Reimplemented from OsiObject.
virtual bool OsiBiLinear::canDoHeuristics | ( | ) | const [inline, virtual] |
Return true if object can take part in normal heuristics.
Reimplemented from OsiObject.
Definition at line 756 of file CbcLinked.hpp.
virtual bool OsiBiLinear::boundBranch | ( | ) | const [inline, virtual] |
Return true if branch should only bound variables.
Reimplemented from OsiObject.
Definition at line 760 of file CbcLinked.hpp.
References branchingStrategy_.
int OsiBiLinear::xColumn | ( | ) | const [inline] |
int OsiBiLinear::yColumn | ( | ) | const [inline] |
int OsiBiLinear::xRow | ( | ) | const [inline] |
int OsiBiLinear::yRow | ( | ) | const [inline] |
int OsiBiLinear::xyRow | ( | ) | const [inline] |
double OsiBiLinear::coefficient | ( | ) | const [inline] |
void OsiBiLinear::setCoefficient | ( | double | value | ) | [inline] |
int OsiBiLinear::firstLambda | ( | ) | const [inline] |
double OsiBiLinear::xSatisfied | ( | ) | const [inline] |
X satisfied if less than this away from mesh.
Definition at line 787 of file CbcLinked.hpp.
References xSatisfied_.
void OsiBiLinear::setXSatisfied | ( | double | value | ) | [inline] |
double OsiBiLinear::ySatisfied | ( | ) | const [inline] |
Y satisfied if less than this away from mesh.
Definition at line 792 of file CbcLinked.hpp.
References ySatisfied_.
void OsiBiLinear::setYSatisfied | ( | double | value | ) | [inline] |
double OsiBiLinear::xOtherSatisfied | ( | ) | const [inline] |
X other satisfied if less than this away from mesh.
Definition at line 797 of file CbcLinked.hpp.
References xOtherSatisfied_.
void OsiBiLinear::setXOtherSatisfied | ( | double | value | ) | [inline] |
double OsiBiLinear::yOtherSatisfied | ( | ) | const [inline] |
Y other satisfied if less than this away from mesh.
Definition at line 802 of file CbcLinked.hpp.
References yOtherSatisfied_.
void OsiBiLinear::setYOtherSatisfied | ( | double | value | ) | [inline] |
double OsiBiLinear::xMeshSize | ( | ) | const [inline] |
void OsiBiLinear::setXMeshSize | ( | double | value | ) | [inline] |
double OsiBiLinear::yMeshSize | ( | ) | const [inline] |
void OsiBiLinear::setYMeshSize | ( | double | value | ) | [inline] |
double OsiBiLinear::xySatisfied | ( | ) | const [inline] |
XY satisfied if two version differ by less than this.
Definition at line 817 of file CbcLinked.hpp.
References xySatisfied_.
void OsiBiLinear::setXYSatisfied | ( | double | value | ) | [inline] |
void OsiBiLinear::setMeshSizes | ( | const OsiSolverInterface * | solver, | |
double | x, | |||
double | y | |||
) |
Set sizes and other stuff.
int OsiBiLinear::branchingStrategy | ( | ) | const [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 833 of file CbcLinked.hpp.
References branchingStrategy_.
void OsiBiLinear::setBranchingStrategy | ( | int | value | ) | [inline] |
int OsiBiLinear::boundType | ( | ) | const [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 844 of file CbcLinked.hpp.
References boundType_.
void OsiBiLinear::setBoundType | ( | int | value | ) | [inline] |
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.
void OsiBiLinear::computeLambdas | ( | const OsiSolverInterface * | solver, | |
double | lambda[4] | |||
) | const [protected] |
Compute lambdas if coefficients not changing.
double OsiBiLinear::coefficient_ [protected] |
Coefficient.
Definition at line 872 of file CbcLinked.hpp.
Referenced by coefficient(), and setCoefficient().
double OsiBiLinear::xMeshSize_ [protected] |
double OsiBiLinear::yMeshSize_ [protected] |
double OsiBiLinear::xSatisfied_ [protected] |
x satisfied if less than this away from mesh
Definition at line 878 of file CbcLinked.hpp.
Referenced by setXSatisfied(), and xSatisfied().
double OsiBiLinear::ySatisfied_ [protected] |
y satisfied if less than this away from mesh
Definition at line 880 of file CbcLinked.hpp.
Referenced by setYSatisfied(), and ySatisfied().
double OsiBiLinear::xOtherSatisfied_ [protected] |
X other satisfied if less than this away from mesh.
Definition at line 882 of file CbcLinked.hpp.
Referenced by setXOtherSatisfied(), and xOtherSatisfied().
double OsiBiLinear::yOtherSatisfied_ [protected] |
Y other satisfied if less than this away from mesh.
Definition at line 884 of file CbcLinked.hpp.
Referenced by setYOtherSatisfied(), and yOtherSatisfied().
double OsiBiLinear::xySatisfied_ [protected] |
xy satisfied if less than this away from true
Definition at line 886 of file CbcLinked.hpp.
Referenced by setXYSatisfied(), and xySatisfied().
double OsiBiLinear::xyBranchValue_ [mutable, protected] |
int OsiBiLinear::xColumn_ [protected] |
int OsiBiLinear::yColumn_ [protected] |
int OsiBiLinear::firstLambda_ [protected] |
int OsiBiLinear::branchingStrategy_ [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 905 of file CbcLinked.hpp.
Referenced by boundBranch(), branchingStrategy(), and setBranchingStrategy().
int OsiBiLinear::boundType_ [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 913 of file CbcLinked.hpp.
Referenced by boundType(), and setBoundType().
int OsiBiLinear::xRow_ [protected] |
int OsiBiLinear::yRow_ [protected] |
int OsiBiLinear::xyRow_ [protected] |
int OsiBiLinear::convexity_ [protected] |
int OsiBiLinear::numberExtraRows_ [protected] |
double* OsiBiLinear::multiplier_ [protected] |
int* OsiBiLinear::extraRow_ [protected] |
short OsiBiLinear::chosen_ [mutable, protected] |