CbcHeuristicDW Class Reference

This is unlike the other heuristics in that it is very very compute intensive. More...

#include <CbcHeuristicDW.hpp>

Inheritance diagram for CbcHeuristicDW:
Inheritance graph
[legend]
Collaboration diagram for CbcHeuristicDW:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 CbcHeuristicDW ()
 CbcHeuristicDW (CbcModel &model, int keepContinuous=0)
 CbcHeuristicDW (CbcModel &model, int callBack(CbcHeuristicDW *currentHeuristic, CbcModel *thisModel, int whereFrom), int keepContinuous=0)
 CbcHeuristicDW (const CbcHeuristicDW &)
 ~CbcHeuristicDW ()
virtual CbcHeuristicclone () const
 Clone.
CbcHeuristicDWoperator= (const CbcHeuristicDW &rhs)
 Assignment operator.
virtual void generateCpp (FILE *fp)
 Create C++ lines to get to current state.
virtual void resetModel (CbcModel *model)
 Resets stuff if model changes.
virtual void setModel (CbcModel *model)
 update model (This is needed if cliques update matrix etc)
virtual int solution (double &objectiveValue, double *newSolution)
 returns 0 if no solution, 1 if valid solution.
int numberBlocks () const
 Return number of blocks <=0 - no usable structure.
void passInSolution (const double *solution)
 Pass in a solution.
void passInContinuousSolution (const double *solution)
 Pass in continuous solution.
void setProposalActions (int fullDWEverySoOften)
 DW Proposal actions fullDWEverySoOften - 0 - off k - every k times solution gets better.
double objectiveValueWhen (int whichDW) const
 Objective value when whichDw created.
int numberColumnsDW (int whichDW) const
 Number of columns in DW.
OsiSolverInterfacesolver () const
 Solver.
OsiSolverInterfaceDWModel (int whichDW) const
 DW model (user must delete).
double bestObjective () const
 Best objective value.
const double * bestSolution () const
 Best solution found so far.
const double * continuousSolution () const
 Continuous solution.
const double * fixedDj () const
 Reduced costs of fixed solution.
const double * objectiveDW () const
 Objective at which DW updated.
int numberDWTimes () const
 Number of times we have added to DW model.
const int * numberColumnsDW () const
 Number of columns in DW.
void setNumberPasses (int value)
 Set number of passes.
void setNumberBadPasses (int value)
 Set number of passes without better solution.
void setNumberNeeded (int value)
 Set number free integers needed (Base value).
int getNumberNeeded () const
 Get number free integers needed (Base value).
void setCurrentNumberNeeded (int value)
 Set number free integers needed (Current value).
int getCurrentNumberNeeded () const
 Get number free integers needed (Current value).
void setNumberNodes (int value)
 Set number nodes (could be done in callback) (Base value).
int getNumberNodes () const
 Get number nodes (could be done in callback) (Base value).
void setCurrentNumberNodes (int value)
 Set number nodes (could be done in callback) (Current value).
int getCurrentNumberNodes () const
 Get number nodes (could be done in callback) (Current value).
void setTargetObjective (double value)
 Set target objective.
void setHowOften (int value)
 Sets how often to do it.
const int * whichRowBlock () const
 Block for every row.
const int * whichColumnBlock () const
 Block for every column.
double * initialLower () const
 Initial Lower bounds.
double * initialUpper () const
 Initial Upper bounds.
int * intArrays () const
 Local integer arrays (each numberBlocks_ long).
double * doubleArrays () const
 Local double arrays (each numberBlocks_ long).
int phase () const
 Phase of solution.
int pass () const
 Pass number.
const int * columnsInBlock () const
 Which columns are in block.
const int * startColumnBlock () const
 Starts for columnsInBlock.
const int * intsInBlock () const
 Number of integer variables in each block.
double objectiveValue (const double *solution)
 Objective value (could also check validity).

Protected Types

typedef int(* heuristicCallBack )(CbcHeuristicDW *, CbcModel *, int)

Protected Attributes

double targetObjective_
 Target objective.
double bestObjective_
 Best objective value.
double lastObjective_
 Objective value last time.
heuristicCallBack functionPointer_
 Call back whereFrom - 0 - after blocks found but before data setup 1 - after blocks sorted but before used 2 - just before normal branch and bound 3 - after DW has been updated 4 - if better solution found 5 - every time a block might be used next few for adjustment of nNeeded etc 6 - complete search done - no solution 7 - stopped on nodes - no improvement 8 - improving (same as 4 but after nNeeded changed Pointers to local data given by following pointers.
int * intArray_
 Local integer arrays (each numberBlocks_ long).
double * doubleArray_
 Local double arrays (each numberBlocks_ long).
OsiSolverInterfacesolver_
 Base solver.
OsiSolverInterfacedwSolver_
 DW solver.
double * bestSolution_
 Best solution found so far.
double * continuousSolution_
 Continuous solution.
double * fixedDj_
 Reduced costs of fixed solution.
double * saveLower_
 Original lower bounds.
double * saveUpper_
 Original Upper bounds.
double * random_
 random numbers for master rows
double * weights_
 Weights for each proposal.
double * objectiveDW_
 Objective at which DW updated.
int * numberColumnsDW_
 Number of columns in each DW.
int * whichRowBlock_
 Block for every row.
int * whichColumnBlock_
 Block for every column.
int * dwBlock_
 Block number for each proposal.
int * backwardRow_
 Points back to master rows.
int * rowsInBlock_
 Which rows are in blocke.
int * columnsInBlock_
 Which columns are in block.
int * startRowBlock_
 Starts for rowsInBlock.
int * startColumnBlock_
 Starts for columnsInBlock.
int * intsInBlock_
 Number of integer variables in each block.
unsigned int * fingerPrint_
 Bits set for 1 integers in each block.
unsigned short * affinity_
 Affinity each block has for other (will be triangular?).
int fullDWEverySoOften_
 DW Proposal actions fullDWEverySoOften - 0 - off k - every k times solution gets better.
int numberPasses_
 Number of passes.
int howOften_
 How often to do (code can change).
int maximumDW_
 Current maximum number of DW proposals.
int numberDW_
 Number of DW proposals.
int numberDWTimes_
 Number of times we have added to DW model.
int sizeFingerPrint_
 Number of unsigned ints needed for each block of fingerPrint.
int numberMasterColumns_
 Number of columns in master.
int numberMasterRows_
 Number of rows in master.
int numberBlocks_
 Number of blocks.
int keepContinuous_
 Action on decomposition - 1 keep continuous, 0 don't.
int phase_
 Phase of solution.
int pass_
 Pass number.
int nNeededBase_
 Base number of integers needed.
int nNodesBase_
 Base number of nodes needed.
int nNeeded_
 Base number of integers needed.
int nNodes_
 Base number of nodes needed.
int numberBadPasses_
 Number of passes without better solution.
int solveState_

Private Member Functions

void gutsOfCopy (const CbcHeuristicDW &rhs)
 Guts of copy.
void gutsOfDelete ()
 Guts of delete.
void setDefaults ()
 Set default values.
void findStructure ()
 Find structure.
void setupDWStructures ()
 Set up DW structure.
int addDW (const double *solution, int numberBlocksUsed, const int *whichBlocks)
 Add DW proposals.

Detailed Description

This is unlike the other heuristics in that it is very very compute intensive.

It tries to find a DW structure and use that

Definition at line 17 of file CbcHeuristicDW.hpp.


Member Typedef Documentation

typedef int(* CbcHeuristicDW::heuristicCallBack)(CbcHeuristicDW *,CbcModel *, int) [protected]

Definition at line 194 of file CbcHeuristicDW.hpp.


Constructor & Destructor Documentation

CbcHeuristicDW::CbcHeuristicDW (  ) 
CbcHeuristicDW::CbcHeuristicDW ( CbcModel model,
int  keepContinuous = 0 
)
CbcHeuristicDW::CbcHeuristicDW ( CbcModel model,
int   callBackCbcHeuristicDW *currentHeuristic, CbcModel *thisModel, int whereFrom,
int  keepContinuous = 0 
)
CbcHeuristicDW::CbcHeuristicDW ( const CbcHeuristicDW  ) 
CbcHeuristicDW::~CbcHeuristicDW (  ) 

Member Function Documentation

virtual CbcHeuristic* CbcHeuristicDW::clone (  )  const [virtual]

Clone.

Implements CbcHeuristic.

CbcHeuristicDW& CbcHeuristicDW::operator= ( const CbcHeuristicDW rhs  ) 

Assignment operator.

Reimplemented from CbcHeuristic.

virtual void CbcHeuristicDW::generateCpp ( FILE *  fp  )  [virtual]

Create C++ lines to get to current state.

Reimplemented from CbcHeuristic.

virtual void CbcHeuristicDW::resetModel ( CbcModel model  )  [virtual]

Resets stuff if model changes.

Implements CbcHeuristic.

virtual void CbcHeuristicDW::setModel ( CbcModel model  )  [virtual]

update model (This is needed if cliques update matrix etc)

Reimplemented from CbcHeuristic.

virtual int CbcHeuristicDW::solution ( double &  objectiveValue,
double *  newSolution 
) [virtual]

returns 0 if no solution, 1 if valid solution.

Sets solution values if good, sets objective value (only if good) This does Relaxation Induced Neighborhood Search

Implements CbcHeuristic.

int CbcHeuristicDW::numberBlocks (  )  const [inline]

Return number of blocks <=0 - no usable structure.

Definition at line 65 of file CbcHeuristicDW.hpp.

void CbcHeuristicDW::passInSolution ( const double *  solution  ) 

Pass in a solution.

void CbcHeuristicDW::passInContinuousSolution ( const double *  solution  ) 

Pass in continuous solution.

void CbcHeuristicDW::setProposalActions ( int  fullDWEverySoOften  ) 

DW Proposal actions fullDWEverySoOften - 0 - off k - every k times solution gets better.

double CbcHeuristicDW::objectiveValueWhen ( int  whichDW  )  const

Objective value when whichDw created.

int CbcHeuristicDW::numberColumnsDW ( int  whichDW  )  const

Number of columns in DW.

OsiSolverInterface* CbcHeuristicDW::solver (  )  const [inline]

Solver.

Definition at line 82 of file CbcHeuristicDW.hpp.

OsiSolverInterface* CbcHeuristicDW::DWModel ( int  whichDW  )  const

DW model (user must delete).

double CbcHeuristicDW::bestObjective (  )  const [inline]

Best objective value.

Definition at line 87 of file CbcHeuristicDW.hpp.

const double* CbcHeuristicDW::bestSolution (  )  const [inline]

Best solution found so far.

Definition at line 90 of file CbcHeuristicDW.hpp.

const double* CbcHeuristicDW::continuousSolution (  )  const [inline]

Continuous solution.

Definition at line 93 of file CbcHeuristicDW.hpp.

const double* CbcHeuristicDW::fixedDj (  )  const [inline]

Reduced costs of fixed solution.

Definition at line 96 of file CbcHeuristicDW.hpp.

const double* CbcHeuristicDW::objectiveDW (  )  const [inline]

Objective at which DW updated.

Definition at line 99 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::numberDWTimes (  )  const [inline]

Number of times we have added to DW model.

Definition at line 102 of file CbcHeuristicDW.hpp.

const int* CbcHeuristicDW::numberColumnsDW (  )  const [inline]

Number of columns in DW.

Definition at line 105 of file CbcHeuristicDW.hpp.

void CbcHeuristicDW::setNumberPasses ( int  value  )  [inline]

Set number of passes.

Definition at line 108 of file CbcHeuristicDW.hpp.

void CbcHeuristicDW::setNumberBadPasses ( int  value  )  [inline]

Set number of passes without better solution.

Definition at line 111 of file CbcHeuristicDW.hpp.

void CbcHeuristicDW::setNumberNeeded ( int  value  )  [inline]

Set number free integers needed (Base value).

Definition at line 114 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::getNumberNeeded (  )  const [inline]

Get number free integers needed (Base value).

Definition at line 117 of file CbcHeuristicDW.hpp.

void CbcHeuristicDW::setCurrentNumberNeeded ( int  value  )  [inline]

Set number free integers needed (Current value).

Definition at line 120 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::getCurrentNumberNeeded (  )  const [inline]

Get number free integers needed (Current value).

Definition at line 123 of file CbcHeuristicDW.hpp.

void CbcHeuristicDW::setNumberNodes ( int  value  )  [inline]

Set number nodes (could be done in callback) (Base value).

Reimplemented from CbcHeuristic.

Definition at line 126 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::getNumberNodes (  )  const [inline]

Get number nodes (could be done in callback) (Base value).

Definition at line 129 of file CbcHeuristicDW.hpp.

void CbcHeuristicDW::setCurrentNumberNodes ( int  value  )  [inline]

Set number nodes (could be done in callback) (Current value).

Definition at line 132 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::getCurrentNumberNodes (  )  const [inline]

Get number nodes (could be done in callback) (Current value).

Definition at line 135 of file CbcHeuristicDW.hpp.

void CbcHeuristicDW::setTargetObjective ( double  value  )  [inline]

Set target objective.

Definition at line 138 of file CbcHeuristicDW.hpp.

void CbcHeuristicDW::setHowOften ( int  value  )  [inline]

Sets how often to do it.

Definition at line 141 of file CbcHeuristicDW.hpp.

const int* CbcHeuristicDW::whichRowBlock (  )  const [inline]

Block for every row.

Definition at line 145 of file CbcHeuristicDW.hpp.

const int* CbcHeuristicDW::whichColumnBlock (  )  const [inline]

Block for every column.

Definition at line 148 of file CbcHeuristicDW.hpp.

double* CbcHeuristicDW::initialLower (  )  const [inline]

Initial Lower bounds.

Definition at line 151 of file CbcHeuristicDW.hpp.

double* CbcHeuristicDW::initialUpper (  )  const [inline]

Initial Upper bounds.

Definition at line 154 of file CbcHeuristicDW.hpp.

int* CbcHeuristicDW::intArrays (  )  const [inline]

Local integer arrays (each numberBlocks_ long).

Definition at line 157 of file CbcHeuristicDW.hpp.

double* CbcHeuristicDW::doubleArrays (  )  const [inline]

Local double arrays (each numberBlocks_ long).

Definition at line 160 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::phase (  )  const [inline]

Phase of solution.

Definition at line 163 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::pass (  )  const [inline]

Pass number.

Definition at line 166 of file CbcHeuristicDW.hpp.

const int* CbcHeuristicDW::columnsInBlock (  )  const [inline]

Which columns are in block.

Definition at line 169 of file CbcHeuristicDW.hpp.

const int* CbcHeuristicDW::startColumnBlock (  )  const [inline]

Starts for columnsInBlock.

Definition at line 172 of file CbcHeuristicDW.hpp.

const int* CbcHeuristicDW::intsInBlock (  )  const [inline]

Number of integer variables in each block.

Definition at line 175 of file CbcHeuristicDW.hpp.

double CbcHeuristicDW::objectiveValue ( const double *  solution  ) 

Objective value (could also check validity).

void CbcHeuristicDW::gutsOfCopy ( const CbcHeuristicDW rhs  )  [private]

Guts of copy.

Reimplemented from CbcHeuristic.

void CbcHeuristicDW::gutsOfDelete (  )  [private]

Guts of delete.

Reimplemented from CbcHeuristic.

void CbcHeuristicDW::setDefaults (  )  [private]

Set default values.

void CbcHeuristicDW::findStructure (  )  [private]

Find structure.

void CbcHeuristicDW::setupDWStructures (  )  [private]

Set up DW structure.

int CbcHeuristicDW::addDW ( const double *  solution,
int  numberBlocksUsed,
const int *  whichBlocks 
) [private]

Add DW proposals.


Member Data Documentation

Target objective.

Definition at line 197 of file CbcHeuristicDW.hpp.

double CbcHeuristicDW::bestObjective_ [protected]

Best objective value.

Definition at line 199 of file CbcHeuristicDW.hpp.

double CbcHeuristicDW::lastObjective_ [protected]

Objective value last time.

Definition at line 201 of file CbcHeuristicDW.hpp.

Call back whereFrom - 0 - after blocks found but before data setup 1 - after blocks sorted but before used 2 - just before normal branch and bound 3 - after DW has been updated 4 - if better solution found 5 - every time a block might be used next few for adjustment of nNeeded etc 6 - complete search done - no solution 7 - stopped on nodes - no improvement 8 - improving (same as 4 but after nNeeded changed Pointers to local data given by following pointers.

Definition at line 216 of file CbcHeuristicDW.hpp.

int* CbcHeuristicDW::intArray_ [protected]

Local integer arrays (each numberBlocks_ long).

Definition at line 218 of file CbcHeuristicDW.hpp.

double* CbcHeuristicDW::doubleArray_ [protected]

Local double arrays (each numberBlocks_ long).

Definition at line 220 of file CbcHeuristicDW.hpp.

Base solver.

Definition at line 222 of file CbcHeuristicDW.hpp.

DW solver.

Definition at line 224 of file CbcHeuristicDW.hpp.

double* CbcHeuristicDW::bestSolution_ [protected]

Best solution found so far.

Definition at line 226 of file CbcHeuristicDW.hpp.

Continuous solution.

Definition at line 228 of file CbcHeuristicDW.hpp.

double* CbcHeuristicDW::fixedDj_ [protected]

Reduced costs of fixed solution.

Definition at line 230 of file CbcHeuristicDW.hpp.

double* CbcHeuristicDW::saveLower_ [protected]

Original lower bounds.

Definition at line 232 of file CbcHeuristicDW.hpp.

double* CbcHeuristicDW::saveUpper_ [protected]

Original Upper bounds.

Definition at line 234 of file CbcHeuristicDW.hpp.

double* CbcHeuristicDW::random_ [protected]

random numbers for master rows

Definition at line 236 of file CbcHeuristicDW.hpp.

double* CbcHeuristicDW::weights_ [protected]

Weights for each proposal.

Definition at line 238 of file CbcHeuristicDW.hpp.

double* CbcHeuristicDW::objectiveDW_ [protected]

Objective at which DW updated.

Definition at line 240 of file CbcHeuristicDW.hpp.

Number of columns in each DW.

Definition at line 242 of file CbcHeuristicDW.hpp.

Block for every row.

Definition at line 244 of file CbcHeuristicDW.hpp.

Block for every column.

Definition at line 246 of file CbcHeuristicDW.hpp.

int* CbcHeuristicDW::dwBlock_ [protected]

Block number for each proposal.

Definition at line 248 of file CbcHeuristicDW.hpp.

int* CbcHeuristicDW::backwardRow_ [protected]

Points back to master rows.

Definition at line 250 of file CbcHeuristicDW.hpp.

int* CbcHeuristicDW::rowsInBlock_ [protected]

Which rows are in blocke.

Definition at line 252 of file CbcHeuristicDW.hpp.

Which columns are in block.

Definition at line 254 of file CbcHeuristicDW.hpp.

Starts for rowsInBlock.

Definition at line 256 of file CbcHeuristicDW.hpp.

Starts for columnsInBlock.

Definition at line 258 of file CbcHeuristicDW.hpp.

int* CbcHeuristicDW::intsInBlock_ [protected]

Number of integer variables in each block.

Definition at line 260 of file CbcHeuristicDW.hpp.

unsigned int* CbcHeuristicDW::fingerPrint_ [protected]

Bits set for 1 integers in each block.

Definition at line 262 of file CbcHeuristicDW.hpp.

unsigned short* CbcHeuristicDW::affinity_ [protected]

Affinity each block has for other (will be triangular?).

Definition at line 264 of file CbcHeuristicDW.hpp.

DW Proposal actions fullDWEverySoOften - 0 - off k - every k times solution gets better.

Definition at line 270 of file CbcHeuristicDW.hpp.

Number of passes.

Definition at line 272 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::howOften_ [protected]

How often to do (code can change).

Reimplemented from CbcHeuristic.

Definition at line 274 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::maximumDW_ [protected]

Current maximum number of DW proposals.

Definition at line 276 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::numberDW_ [protected]

Number of DW proposals.

Definition at line 278 of file CbcHeuristicDW.hpp.

Number of times we have added to DW model.

Definition at line 280 of file CbcHeuristicDW.hpp.

Number of unsigned ints needed for each block of fingerPrint.

Definition at line 282 of file CbcHeuristicDW.hpp.

Number of columns in master.

Definition at line 284 of file CbcHeuristicDW.hpp.

Number of rows in master.

Definition at line 286 of file CbcHeuristicDW.hpp.

Number of blocks.

Definition at line 288 of file CbcHeuristicDW.hpp.

Action on decomposition - 1 keep continuous, 0 don't.

Definition at line 290 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::phase_ [protected]

Phase of solution.

Definition at line 292 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::pass_ [protected]

Pass number.

Definition at line 294 of file CbcHeuristicDW.hpp.

Base number of integers needed.

Definition at line 296 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::nNodesBase_ [protected]

Base number of nodes needed.

Definition at line 298 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::nNeeded_ [protected]

Base number of integers needed.

Definition at line 300 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::nNodes_ [protected]

Base number of nodes needed.

Definition at line 302 of file CbcHeuristicDW.hpp.

Number of passes without better solution.

Definition at line 304 of file CbcHeuristicDW.hpp.

int CbcHeuristicDW::solveState_ [protected]

Definition at line 306 of file CbcHeuristicDW.hpp.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 19 Jan 2015 for Cbc by  doxygen 1.6.1