This is unlike the other heuristics in that it is very very compute intensive. More...
#include <CbcHeuristicDW.hpp>
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 CbcHeuristic * | clone () const |
Clone. | |
CbcHeuristicDW & | operator= (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. | |
OsiSolverInterface * | solver () const |
Solver. | |
OsiSolverInterface * | DWModel (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). | |
OsiSolverInterface * | solver_ |
Base solver. | |
OsiSolverInterface * | dwSolver_ |
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. |
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.
typedef int(* CbcHeuristicDW::heuristicCallBack)(CbcHeuristicDW *,CbcModel *, int) [protected] |
Definition at line 194 of file CbcHeuristicDW.hpp.
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 | ( | ) |
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.
double CbcHeuristicDW::targetObjective_ [protected] |
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.
heuristicCallBack CbcHeuristicDW::functionPointer_ [protected] |
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.
OsiSolverInterface* CbcHeuristicDW::solver_ [protected] |
Base solver.
Definition at line 222 of file CbcHeuristicDW.hpp.
OsiSolverInterface* CbcHeuristicDW::dwSolver_ [protected] |
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.
double* CbcHeuristicDW::continuousSolution_ [protected] |
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.
int* CbcHeuristicDW::numberColumnsDW_ [protected] |
Number of columns in each DW.
Definition at line 242 of file CbcHeuristicDW.hpp.
int* CbcHeuristicDW::whichRowBlock_ [protected] |
Block for every row.
Definition at line 244 of file CbcHeuristicDW.hpp.
int* CbcHeuristicDW::whichColumnBlock_ [protected] |
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.
int* CbcHeuristicDW::columnsInBlock_ [protected] |
Which columns are in block.
Definition at line 254 of file CbcHeuristicDW.hpp.
int* CbcHeuristicDW::startRowBlock_ [protected] |
Starts for rowsInBlock.
Definition at line 256 of file CbcHeuristicDW.hpp.
int* CbcHeuristicDW::startColumnBlock_ [protected] |
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.
int CbcHeuristicDW::fullDWEverySoOften_ [protected] |
DW Proposal actions fullDWEverySoOften - 0 - off k - every k times solution gets better.
Definition at line 270 of file CbcHeuristicDW.hpp.
int CbcHeuristicDW::numberPasses_ [protected] |
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.
int CbcHeuristicDW::numberDWTimes_ [protected] |
Number of times we have added to DW model.
Definition at line 280 of file CbcHeuristicDW.hpp.
int CbcHeuristicDW::sizeFingerPrint_ [protected] |
Number of unsigned ints needed for each block of fingerPrint.
Definition at line 282 of file CbcHeuristicDW.hpp.
int CbcHeuristicDW::numberMasterColumns_ [protected] |
Number of columns in master.
Definition at line 284 of file CbcHeuristicDW.hpp.
int CbcHeuristicDW::numberMasterRows_ [protected] |
Number of rows in master.
Definition at line 286 of file CbcHeuristicDW.hpp.
int CbcHeuristicDW::numberBlocks_ [protected] |
Number of blocks.
Definition at line 288 of file CbcHeuristicDW.hpp.
int CbcHeuristicDW::keepContinuous_ [protected] |
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.
int CbcHeuristicDW::nNeededBase_ [protected] |
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.
int CbcHeuristicDW::numberBadPasses_ [protected] |
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.