Clp 1.17.10
Loading...
Searching...
No Matches
ClpNode.hpp
Go to the documentation of this file.
1/* $Id$ */
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
15
18class ClpNodeStuff;
19class ClpNode {
20
21public:
24
29 void applyNode(ClpSimplex *model, int doBoundsEtc);
39
42
43 inline double objectiveValue() const
44 {
45 return objectiveValue_;
46 }
47
48 inline void setObjectiveValue(double value)
49 {
50 objectiveValue_ = value;
51 }
52
53 inline const double *primalSolution() const
54 {
55 return primalSolution_;
56 }
57
58 inline const double *dualSolution() const
59 {
60 return dualSolution_;
61 }
62
63 inline double branchingValue() const
64 {
65 return branchingValue_;
66 }
67
68 inline double sumInfeasibilities() const
69 {
71 }
72
73 inline int numberInfeasibilities() const
74 {
76 }
77
78 inline int depth() const
79 {
80 return depth_;
81 }
82
83 inline double estimatedSolution() const
84 {
85 return estimatedSolution_;
86 }
87
88 int way() const;
90 bool fathomed() const;
94 inline int sequence() const
95 {
96 return sequence_;
97 }
98
99 inline bool oddArraysExist() const
100 {
101 return lower_ != NULL;
102 }
103
104 inline const unsigned char *statusArray() const
105 {
106 return status_;
107 }
108
109
112
115 ClpNode(ClpSimplex *model, const ClpNodeStuff *stuff, int depth);
117 void gutsOfConstructor(ClpSimplex *model, const ClpNodeStuff *stuff,
118 int arraysExist, int depth);
120 virtual ~ClpNode();
122
125
126 ClpNode(const ClpNode &);
130
131protected:
132 // For state of branch
133 typedef struct {
134 unsigned int firstBranch : 1; // nonzero if first branch on variable is up
135 unsigned int branch : 2; // 0 means do first branch next, 1 second, 2 finished
136 unsigned int spare : 29;
137 } branchState;
138
140
153 unsigned char *status_;
159 int *lower_;
161 int *upper_;
165 int *fixed_;
187};
189
190public:
193
196 virtual ~ClpNodeStuff();
198
201
206 void zap(int type);
208
211
212 void fillPseudoCosts(const double *down, const double *up,
213 const int *priority,
214 const int *numberDown, const int *numberUp,
215 const int *numberDownInfeasible, const int *numberUpInfeasible,
216 int number);
218 void update(int way, int sequence, double change, bool feasible);
220 int maximumNodes() const;
222 int maximumSpace() const;
224
225public:
228
235 double *downPseudo_;
237 double *upPseudo_;
249 double *saveCosts_;
258#ifndef NO_FATHOM_PRINT
260 CoinMessageHandler *handler_;
261#endif
291#ifndef NO_FATHOM_PRINT
296#endif
298};
300
301public:
304
305 int index(double value) const;
307 int addValue(double value);
309 inline int numberEntries() const
310 {
311 return numberHash_;
312 }
313
314
317
322 virtual ~ClpHashValue();
324
327
332private:
335
336 int hash(double value) const;
338 void resize(bool increaseMax);
340
341protected:
345
346 // for hashing
347 typedef struct {
348 double value;
350 } CoinHashLink;
351
360};
361#endif
362
363/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
364*/
CbcOrClpParameterType type() const
type
Dual Row Pivot Steepest Edge Algorithm Class.
This just implements CoinFactorization when an ClpMatrixBase object is passed.
void resize(bool increaseMax)
Resizes.
int hash(double value) const
returns hash
int numberHash_
Number of entries in hash table.
Definition ClpNode.hpp:354
virtual ~ClpHashValue()
Destructor.
ClpHashValue(const ClpHashValue &)
The copy constructor.
ClpHashValue()
Default constructor.
CoinHashLink * hash_
Hash table.
Definition ClpNode.hpp:352
int lastUsed_
Last used space.
Definition ClpNode.hpp:358
ClpHashValue & operator=(const ClpHashValue &)
=
int numberEntries() const
Number of different entries.
Definition ClpNode.hpp:309
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:356
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:235
ClpNodeStuff(const ClpNodeStuff &)
The copy constructor.
int * priority_
Priority.
Definition ClpNode.hpp:239
int maximumNodes_
Maximum number of nodes to do.
Definition ClpNode.hpp:276
int presolveType_
Type of presolve - 0 none, 1 crunch.
Definition ClpNode.hpp:290
int nDepth_
Number deep.
Definition ClpNode.hpp:282
ClpNodeStuff()
Default constructor.
int * numberDownInfeasible_
Number of times down infeasible.
Definition ClpNode.hpp:245
double integerIncrement_
Integer increment.
Definition ClpNode.hpp:231
int startingDepth_
Depth passed in.
Definition ClpNode.hpp:293
double smallChange_
Small change in branch.
Definition ClpNode.hpp:233
int nBound_
Number bounds in large model.
Definition ClpNode.hpp:263
double * upPseudo_
Up pseudo costs.
Definition ClpNode.hpp:237
int numberNodesExplored_
Number of nodes explored.
Definition ClpNode.hpp:286
int saveOptions_
Save of specialOptions_ (local).
Definition ClpNode.hpp:265
int * whichRow_
Which rows in large model.
Definition ClpNode.hpp:255
ClpSimplex * large_
Large model if crunched.
Definition ClpNode.hpp:253
int maximumSpace() const
Return maximum space for nodes.
int nodeCalled_
Node at which called.
Definition ClpNode.hpp:295
int * whichColumn_
Which columns in large model.
Definition ClpNode.hpp:257
int numberBeforeTrust_
Number before trust from CbcModel.
Definition ClpNode.hpp:278
ClpNode ** nodeInfo_
Array of ClpNodes.
Definition ClpNode.hpp:251
double integerTolerance_
Integer tolerance.
Definition ClpNode.hpp:229
int stateOfSearch_
State of search from CbcModel.
Definition ClpNode.hpp:280
ClpNodeStuff & operator=(const ClpNodeStuff &)
Operator =.
virtual ~ClpNodeStuff()
Destructor.
int * numberUpInfeasible_
Number of times up infeasible.
Definition ClpNode.hpp:247
int * numberUp_
Number of times up.
Definition ClpNode.hpp:243
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:260
int numberIterations_
Number of iterations.
Definition ClpNode.hpp:288
int maximumNodes() const
Return maximum number of nodes.
int nNodes_
Number nodes returned (-1 if fathom aborted).
Definition ClpNode.hpp:284
double * saveCosts_
Copy of costs (local).
Definition ClpNode.hpp:249
int solverOptions_
Options to pass to solver 1 - create external reduced costs for columns 2 - create external reduced c...
Definition ClpNode.hpp:274
void update(int way, int sequence, double change, bool feasible)
Update pseudo costs.
int * numberDown_
Number of times down.
Definition ClpNode.hpp:241
int sequence() const
Sequence number of integer variable (-1 if none).
Definition ClpNode.hpp:94
double estimatedSolution_
Estimated solution value.
Definition ClpNode.hpp:147
double objectiveValue_
Value of objective.
Definition ClpNode.hpp:143
branchState branchState_
State of branch.
Definition ClpNode.hpp:167
int maximumColumns_
Maximum columns so far.
Definition ClpNode.hpp:183
int * fixed_
Variables fixed by reduced costs (at end of branch) 0x10000000 added if fixed to UB.
Definition ClpNode.hpp:165
int numberInfeasibilities_
Number of infeasibilities.
Definition ClpNode.hpp:171
int * upper_
Integer upper bounds (only used in fathomMany).
Definition ClpNode.hpp:161
int depth_
Relative depth.
Definition ClpNode.hpp:173
int numberFixed_
Number fixed by reduced cost.
Definition ClpNode.hpp:175
int flags_
Flags - 1 duals scaled.
Definition ClpNode.hpp:177
int numberInfeasibilities() const
Number infeasibilities.
Definition ClpNode.hpp:73
int * lower_
Integer lower bounds (only used in fathomMany).
Definition ClpNode.hpp:159
double branchingValue_
Initial value of integer variable.
Definition ClpNode.hpp:141
bool oddArraysExist() const
If odd arrays exist.
Definition ClpNode.hpp:99
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:53
void cleanUpForCrunch()
Clean up as crunch is different model.
int * pivotVariables_
Pivot variables for factorization.
Definition ClpNode.hpp:163
const double * dualSolution() const
Dual solution.
Definition ClpNode.hpp:58
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:169
double branchingValue() const
Initial value of integer variable.
Definition ClpNode.hpp:63
int way() const
Way for integer variable -1 down , +1 up.
unsigned char * status_
Status vector.
Definition ClpNode.hpp:153
int maximumRows_
Maximum rows so far.
Definition ClpNode.hpp:181
bool fathomed() const
Return true if branch exhausted.
double estimatedSolution() const
Estimated solution value.
Definition ClpNode.hpp:83
ClpNode()
Default constructor.
double sumInfeasibilities_
Sum of infeasibilities.
Definition ClpNode.hpp:145
double * dualSolution_
Dual solution.
Definition ClpNode.hpp:157
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:179
int maximumIntegers_
Maximum Integers so far.
Definition ClpNode.hpp:185
ClpDualRowSteepest * weights_
Steepest edge weights.
Definition ClpNode.hpp:151
const unsigned char * statusArray() const
Status array.
Definition ClpNode.hpp:104
void setObjectiveValue(double value)
Set objective value.
Definition ClpNode.hpp:48
double objectiveValue() const
Objective value.
Definition ClpNode.hpp:43
int depth() const
Relative depth.
Definition ClpNode.hpp:78
double * primalSolution_
Primal solution.
Definition ClpNode.hpp:155
ClpFactorization * factorization_
Factorization.
Definition ClpNode.hpp:149
void createArrays(ClpSimplex *model)
Create odd arrays.
ClpNode & operator=(const ClpNode &)
Operator =.
double sumInfeasibilities() const
Sum infeasibilities.
Definition ClpNode.hpp:68
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.
unsigned int spare
Definition ClpNode.hpp:136
unsigned int firstBranch
Definition ClpNode.hpp:134
unsigned int branch
Definition ClpNode.hpp:135