Clp 1.16.9
Loading...
Searching...
No Matches
ClpNode.hpp
Go to the documentation of this file.
1/* $Id: ClpNode.hpp 1910 2013-01-27 02:00:13Z stefan $ */
2// Copyright (C) 2008, International Business Machines
3// Corporation and others. All Rights Reserved.
4// This code is licensed under the terms of the Eclipse Public License (EPL).
5
6#ifndef ClpNode_H
7#define ClpNode_H
8
9#include "CoinPragma.hpp"
10
11// This implements all stuff for Clp fathom
18class ClpNodeStuff;
19class ClpNode {
20
21public:
29 void applyNode(ClpSimplex * model, int doBoundsEtc );
31 void chooseVariable(ClpSimplex * model, ClpNodeStuff * info);
35 void createArrays(ClpSimplex * model);
39
43 inline double objectiveValue() const {
44 return objectiveValue_;
45 }
47 inline void setObjectiveValue(double value) {
48 objectiveValue_ = value;
49 }
51 inline const double * primalSolution() const {
52 return primalSolution_;
53 }
55 inline const double * dualSolution() const {
56 return dualSolution_;
57 }
59 inline double branchingValue() const {
60 return branchingValue_;
61 }
63 inline double sumInfeasibilities() const {
65 }
67 inline int numberInfeasibilities() const {
69 }
71 inline int depth() const {
72 return depth_;
73 }
75 inline double estimatedSolution() const {
76 return estimatedSolution_;
77 }
79 int way() const;
81 bool fathomed() const;
85 inline int sequence() const {
86 return sequence_;
87 }
89 inline bool oddArraysExist() const {
90 return lower_ != NULL;
91 }
93 inline const unsigned char * statusArray() const {
94 return status_;
95 }
97
103 ClpNode (ClpSimplex * model, const ClpNodeStuff * stuff, int depth);
105 void gutsOfConstructor(ClpSimplex * model, const ClpNodeStuff * stuff,
106 int arraysExist, int depth);
108 virtual ~ClpNode();
110
118
119protected:
120// For state of branch
121 typedef struct {
122 unsigned int firstBranch: 1; // nonzero if first branch on variable is up
123 unsigned int branch: 2; // 0 means do first branch next, 1 second, 2 finished
124 unsigned int spare: 29;
125 } branchState;
141 unsigned char * status_;
147 int * lower_;
149 int * upper_;
153 int * fixed_;
175};
177
178public:
184 virtual ~ClpNodeStuff();
186
194 void zap(int type);
196
197
201 void fillPseudoCosts(const double * down, const double * up,
202 const int * priority,
203 const int * numberDown, const int * numberUp,
204 const int * numberDownInfeasible, const int * numberUpInfeasible,
205 int number);
207 void update(int way, int sequence, double change, bool feasible);
209 int maximumNodes() const;
211 int maximumSpace() const;
213
214public:
224 double * downPseudo_;
226 double * upPseudo_;
238 double * saveCosts_;
247#ifndef NO_FATHOM_PRINT
249 CoinMessageHandler * handler_;
250#endif
280#ifndef NO_FATHOM_PRINT
285#endif
287};
289
290public:
294 int index(double value) const;
296 int addValue(double value) ;
298 inline int numberEntries() const {
299 return numberHash_;
300 }
302
310 virtual ~ClpHashValue();
312
320private:
324 int hash(double value) const;
326 void resize(bool increaseMax);
328
329protected:
334 // for hashing
335 typedef struct {
336 double value;
337 int index, next;
338 } CoinHashLink;
348};
349#endif
Dual Row Pivot Steepest Edge Algorithm Class.
This just implements CoinFactorization when an ClpMatrixBase object is passed.
int numberHash_
Number of entries in hash table.
Definition: ClpNode.hpp:342
virtual ~ClpHashValue()
Destructor.
ClpHashValue(const ClpHashValue &)
The copy constructor.
ClpHashValue()
Default constructor.
CoinHashLink * hash_
Hash table.
Definition: ClpNode.hpp:340
int lastUsed_
Last used space.
Definition: ClpNode.hpp:346
ClpHashValue & operator=(const ClpHashValue &)
=
int numberEntries() const
Number of different entries.
Definition: ClpNode.hpp:298
int index(double value) const
Return index or -1 if not found.
int maxHash_
Maximum number of entries in hash table i.e. size.
Definition: ClpNode.hpp:344
int addValue(double value)
Add value to list and return index.
ClpHashValue(ClpSimplex *model)
Useful constructor.
void zap(int type)
Zaps stuff 1 - arrays, 2 ints, 3 both.
double * downPseudo_
Down pseudo costs.
Definition: ClpNode.hpp:224
ClpNodeStuff(const ClpNodeStuff &)
The copy constructor.
int * priority_
Priority.
Definition: ClpNode.hpp:228
int maximumNodes_
Maximum number of nodes to do.
Definition: ClpNode.hpp:265
int presolveType_
Type of presolve - 0 none, 1 crunch.
Definition: ClpNode.hpp:279
int nDepth_
Number deep.
Definition: ClpNode.hpp:271
ClpNodeStuff()
Default constructor.
int * numberDownInfeasible_
Number of times down infeasible.
Definition: ClpNode.hpp:234
double integerIncrement_
Integer increment.
Definition: ClpNode.hpp:220
int startingDepth_
Depth passed in.
Definition: ClpNode.hpp:282
double smallChange_
Small change in branch.
Definition: ClpNode.hpp:222
int nBound_
Number bounds in large model.
Definition: ClpNode.hpp:252
double * upPseudo_
Up pseudo costs.
Definition: ClpNode.hpp:226
int numberNodesExplored_
Number of nodes explored.
Definition: ClpNode.hpp:275
int saveOptions_
Save of specialOptions_ (local)
Definition: ClpNode.hpp:254
int * whichRow_
Which rows in large model.
Definition: ClpNode.hpp:244
ClpSimplex * large_
Large model if crunched.
Definition: ClpNode.hpp:242
int maximumSpace() const
Return maximum space for nodes.
int nodeCalled_
Node at which called.
Definition: ClpNode.hpp:284
int * whichColumn_
Which columns in large model.
Definition: ClpNode.hpp:246
int numberBeforeTrust_
Number before trust from CbcModel.
Definition: ClpNode.hpp:267
ClpNode ** nodeInfo_
Array of ClpNodes.
Definition: ClpNode.hpp:240
double integerTolerance_
Integer tolerance.
Definition: ClpNode.hpp:218
int stateOfSearch_
State of search from CbcModel.
Definition: ClpNode.hpp:269
ClpNodeStuff & operator=(const ClpNodeStuff &)
Operator =.
virtual ~ClpNodeStuff()
Destructor.
int * numberUpInfeasible_
Number of times up infeasible.
Definition: ClpNode.hpp:236
int * numberUp_
Number of times up.
Definition: ClpNode.hpp:232
void fillPseudoCosts(const double *down, const double *up, const int *priority, const int *numberDown, const int *numberUp, const int *numberDownInfeasible, const int *numberUpInfeasible, int number)
Fill with pseudocosts.
CoinMessageHandler * handler_
Cbc's message handler.
Definition: ClpNode.hpp:249
int numberIterations_
Number of iterations.
Definition: ClpNode.hpp:277
int maximumNodes() const
Return maximum number of nodes.
int nNodes_
Number nodes returned (-1 if fathom aborted)
Definition: ClpNode.hpp:273
double * saveCosts_
Copy of costs (local)
Definition: ClpNode.hpp:238
int solverOptions_
Options to pass to solver 1 - create external reduced costs for columns 2 - create external reduced c...
Definition: ClpNode.hpp:263
void update(int way, int sequence, double change, bool feasible)
Update pseudo costs.
int * numberDown_
Number of times down.
Definition: ClpNode.hpp:230
int sequence() const
Sequence number of integer variable (-1 if none)
Definition: ClpNode.hpp:85
double estimatedSolution_
Estimated solution value.
Definition: ClpNode.hpp:135
double objectiveValue_
Value of objective.
Definition: ClpNode.hpp:131
branchState branchState_
State of branch.
Definition: ClpNode.hpp:155
int maximumColumns_
Maximum columns so far.
Definition: ClpNode.hpp:171
int * fixed_
Variables fixed by reduced costs (at end of branch) 0x10000000 added if fixed to UB.
Definition: ClpNode.hpp:153
int numberInfeasibilities_
Number of infeasibilities.
Definition: ClpNode.hpp:159
int * upper_
Integer upper bounds (only used in fathomMany)
Definition: ClpNode.hpp:149
int depth_
Relative depth.
Definition: ClpNode.hpp:161
int numberFixed_
Number fixed by reduced cost.
Definition: ClpNode.hpp:163
int flags_
Flags - 1 duals scaled.
Definition: ClpNode.hpp:165
int numberInfeasibilities() const
Number infeasibilities.
Definition: ClpNode.hpp:67
int * lower_
Integer lower bounds (only used in fathomMany)
Definition: ClpNode.hpp:147
double branchingValue_
Initial value of integer variable.
Definition: ClpNode.hpp:129
bool oddArraysExist() const
If odd arrays exist.
Definition: ClpNode.hpp:89
void chooseVariable(ClpSimplex *model, ClpNodeStuff *info)
Choose a new variable.
ClpNode(const ClpNode &)
The copy constructor.
int fixOnReducedCosts(ClpSimplex *model)
Fix on reduced costs.
ClpNode(ClpSimplex *model, const ClpNodeStuff *stuff, int depth)
Constructor from model.
const double * primalSolution() const
Primal solution.
Definition: ClpNode.hpp:51
void cleanUpForCrunch()
Clean up as crunch is different model.
int * pivotVariables_
Pivot variables for factorization.
Definition: ClpNode.hpp:151
const double * dualSolution() const
Dual solution.
Definition: ClpNode.hpp:55
virtual ~ClpNode()
Destructor.
void changeState()
Change state of variable i.e. go other way.
int sequence_
Sequence number of integer variable (-1 if none)
Definition: ClpNode.hpp:157
double branchingValue() const
Initial value of integer variable.
Definition: ClpNode.hpp:59
int way() const
Way for integer variable -1 down , +1 up.
unsigned char * status_
Status vector.
Definition: ClpNode.hpp:141
int maximumRows_
Maximum rows so far.
Definition: ClpNode.hpp:169
bool fathomed() const
Return true if branch exhausted.
double estimatedSolution() const
Estimated solution value.
Definition: ClpNode.hpp:75
ClpNode()
Default constructor.
double sumInfeasibilities_
Sum of infeasibilities.
Definition: ClpNode.hpp:133
double * dualSolution_
Dual solution.
Definition: ClpNode.hpp:145
void gutsOfConstructor(ClpSimplex *model, const ClpNodeStuff *stuff, int arraysExist, int depth)
Does work of constructor (partly so gdb will work)
int maximumFixed_
Maximum number fixed by reduced cost.
Definition: ClpNode.hpp:167
int maximumIntegers_
Maximum Integers so far.
Definition: ClpNode.hpp:173
ClpDualRowSteepest * weights_
Steepest edge weights.
Definition: ClpNode.hpp:139
const unsigned char * statusArray() const
Status array.
Definition: ClpNode.hpp:93
void setObjectiveValue(double value)
Set objective value.
Definition: ClpNode.hpp:47
double objectiveValue() const
Objective value.
Definition: ClpNode.hpp:43
int depth() const
Relative depth.
Definition: ClpNode.hpp:71
double * primalSolution_
Primal solution.
Definition: ClpNode.hpp:143
ClpFactorization * factorization_
Factorization.
Definition: ClpNode.hpp:137
void createArrays(ClpSimplex *model)
Create odd arrays.
ClpNode & operator=(const ClpNode &)
Operator =.
double sumInfeasibilities() const
Sum infeasibilities.
Definition: ClpNode.hpp:63
void applyNode(ClpSimplex *model, int doBoundsEtc)
Applies node to model 0 - just tree bounds 1 - tree bounds and basis etc 2 - saved bounds and basis e...
This solves LPs using the simplex method.
Definition: ClpSimplex.hpp:70
unsigned int spare
Definition: ClpNode.hpp:124
unsigned int firstBranch
Definition: ClpNode.hpp:122
unsigned int branch
Definition: ClpNode.hpp:123