Cbc  2.10.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
OsiBiLinear Class Reference

Define BiLinear objects. More...

#include <CbcLinked.hpp>

+ Inheritance diagram for OsiBiLinear:
+ Collaboration 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. 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 OsiObjectclone () const
 Clone. More...
 
OsiBiLinearoperator= (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 OsiBranchingObjectcreateBranch (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...
 
- Public Member Functions inherited from OsiObject2
 OsiObject2 ()
 Default Constructor. More...
 
 OsiObject2 (const OsiObject2 &)
 Copy constructor. More...
 
OsiObject2operator= (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...
 
- Public Member Functions inherited from OsiObject
 OsiObject ()
 Default Constructor. More...
 
 OsiObject (const OsiObject &)
 Copy constructor. More...
 
OsiObjectoperator= (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...
 
- Protected Attributes inherited from OsiObject2
int preferredWay_
 Preferred way of branching - -1 off, 0 down, 1 up (for 2-way) More...
 
double otherInfeasibility_
 "Infeasibility" on other way More...
 
- Protected Attributes inherited from OsiObject
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...
 

Detailed Description

Define BiLinear objects.

This models x*y where one or both are integer

Definition at line 733 of file CbcLinked.hpp.

Constructor & Destructor Documentation

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

Member Function Documentation

virtual OsiObject* OsiBiLinear::clone ( ) const
virtual

Clone.

Implements OsiObject.

Reimplemented in OsiBiLinearEquality.

OsiBiLinear& OsiBiLinear::operator= ( const OsiBiLinear rhs)
virtual double OsiBiLinear::infeasibility ( const OsiBranchingInformation info,
int &  whichWay 
) const
virtual

Infeasibility - large is 0.5.

Implements OsiObject.

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.

Reimplemented from OsiObject.

virtual void OsiBiLinear::resetSequenceEtc ( int  numberColumns,
const int *  originalColumns 
)
virtual

Redoes data when sequence numbers change.

Reimplemented from OsiObject.

virtual double OsiBiLinear::checkInfeasibility ( const OsiBranchingInformation info) const
virtual

Reimplemented from OsiObject.

virtual bool OsiBiLinear::canDoHeuristics ( ) const
inlinevirtual

Return true if object can take part in normal heuristics.

Reimplemented from OsiObject.

Definition at line 797 of file CbcLinked.hpp.

virtual bool OsiBiLinear::boundBranch ( ) const
inlinevirtual

Return true if branch should only bound variables.

Reimplemented from OsiObject.

Definition at line 803 of file CbcLinked.hpp.

int OsiBiLinear::xColumn ( ) const
inline

X column.

Definition at line 808 of file CbcLinked.hpp.

int OsiBiLinear::yColumn ( ) const
inline

Y column.

Definition at line 813 of file CbcLinked.hpp.

int OsiBiLinear::xRow ( ) const
inline

X row.

Definition at line 818 of file CbcLinked.hpp.

int OsiBiLinear::yRow ( ) const
inline

Y row.

Definition at line 823 of file CbcLinked.hpp.

int OsiBiLinear::xyRow ( ) const
inline

XY row.

Definition at line 828 of file CbcLinked.hpp.

double OsiBiLinear::coefficient ( ) const
inline

Coefficient.

Definition at line 833 of file CbcLinked.hpp.

void OsiBiLinear::setCoefficient ( double  value)
inline

Set coefficient.

Definition at line 838 of file CbcLinked.hpp.

int OsiBiLinear::firstLambda ( ) const
inline

First lambda (of 4)

Definition at line 843 of file CbcLinked.hpp.

double OsiBiLinear::xSatisfied ( ) const
inline

X satisfied if less than this away from mesh.

Definition at line 848 of file CbcLinked.hpp.

void OsiBiLinear::setXSatisfied ( double  value)
inline

Definition at line 852 of file CbcLinked.hpp.

double OsiBiLinear::ySatisfied ( ) const
inline

Y satisfied if less than this away from mesh.

Definition at line 857 of file CbcLinked.hpp.

void OsiBiLinear::setYSatisfied ( double  value)
inline

Definition at line 861 of file CbcLinked.hpp.

double OsiBiLinear::xOtherSatisfied ( ) const
inline

X other satisfied if less than this away from mesh.

Definition at line 866 of file CbcLinked.hpp.

void OsiBiLinear::setXOtherSatisfied ( double  value)
inline

Definition at line 870 of file CbcLinked.hpp.

double OsiBiLinear::yOtherSatisfied ( ) const
inline

Y other satisfied if less than this away from mesh.

Definition at line 875 of file CbcLinked.hpp.

void OsiBiLinear::setYOtherSatisfied ( double  value)
inline

Definition at line 879 of file CbcLinked.hpp.

double OsiBiLinear::xMeshSize ( ) const
inline

X meshSize.

Definition at line 884 of file CbcLinked.hpp.

void OsiBiLinear::setXMeshSize ( double  value)
inline

Definition at line 888 of file CbcLinked.hpp.

double OsiBiLinear::yMeshSize ( ) const
inline

Y meshSize.

Definition at line 893 of file CbcLinked.hpp.

void OsiBiLinear::setYMeshSize ( double  value)
inline

Definition at line 897 of file CbcLinked.hpp.

double OsiBiLinear::xySatisfied ( ) const
inline

XY satisfied if two version differ by less than this.

Definition at line 902 of file CbcLinked.hpp.

void OsiBiLinear::setXYSatisfied ( double  value)
inline

Definition at line 906 of file CbcLinked.hpp.

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 922 of file CbcLinked.hpp.

void OsiBiLinear::setBranchingStrategy ( int  value)
inline

Definition at line 926 of file CbcLinked.hpp.

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 937 of file CbcLinked.hpp.

void OsiBiLinear::setBoundType ( int  value)
inline

Definition at line 941 of file CbcLinked.hpp.

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.

Member Data Documentation

double OsiBiLinear::coefficient_
protected

data

Coefficient

Definition at line 969 of file CbcLinked.hpp.

double OsiBiLinear::xMeshSize_
protected

x mesh

Definition at line 971 of file CbcLinked.hpp.

double OsiBiLinear::yMeshSize_
protected

y mesh

Definition at line 973 of file CbcLinked.hpp.

double OsiBiLinear::xSatisfied_
protected

x satisfied if less than this away from mesh

Definition at line 975 of file CbcLinked.hpp.

double OsiBiLinear::ySatisfied_
protected

y satisfied if less than this away from mesh

Definition at line 977 of file CbcLinked.hpp.

double OsiBiLinear::xOtherSatisfied_
protected

X other satisfied if less than this away from mesh.

Definition at line 979 of file CbcLinked.hpp.

double OsiBiLinear::yOtherSatisfied_
protected

Y other satisfied if less than this away from mesh.

Definition at line 981 of file CbcLinked.hpp.

double OsiBiLinear::xySatisfied_
protected

xy satisfied if less than this away from true

Definition at line 983 of file CbcLinked.hpp.

double OsiBiLinear::xyBranchValue_
mutableprotected

value of x or y to branch about

Definition at line 985 of file CbcLinked.hpp.

int OsiBiLinear::xColumn_
protected

x column

Definition at line 987 of file CbcLinked.hpp.

int OsiBiLinear::yColumn_
protected

y column

Definition at line 989 of file CbcLinked.hpp.

int OsiBiLinear::firstLambda_
protected

First lambda (of 4)

Definition at line 991 of file CbcLinked.hpp.

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 1002 of file CbcLinked.hpp.

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 1010 of file CbcLinked.hpp.

int OsiBiLinear::xRow_
protected

x row

Definition at line 1012 of file CbcLinked.hpp.

int OsiBiLinear::yRow_
protected

y row (-1 if x*x)

Definition at line 1014 of file CbcLinked.hpp.

int OsiBiLinear::xyRow_
protected

Output row.

Definition at line 1016 of file CbcLinked.hpp.

int OsiBiLinear::convexity_
protected

Convexity row.

Definition at line 1018 of file CbcLinked.hpp.

int OsiBiLinear::numberExtraRows_
protected

Number of extra rows (coefficients to be modified)

Definition at line 1020 of file CbcLinked.hpp.

double* OsiBiLinear::multiplier_
protected

Multiplier for coefficient on row.

Definition at line 1022 of file CbcLinked.hpp.

int* OsiBiLinear::extraRow_
protected

Row number.

Definition at line 1024 of file CbcLinked.hpp.

short OsiBiLinear::chosen_
mutableprotected

Which chosen -1 none, 0 x, 1 y.

Definition at line 1026 of file CbcLinked.hpp.


The documentation for this class was generated from the following file: