Clp 1.16.9
Loading...
Searching...
No Matches
ClpDualRowPivot.hpp
Go to the documentation of this file.
1/* $Id: ClpDualRowPivot.hpp 2070 2014-11-18 11:12:54Z forrest $ */
2// Copyright (C) 2002, 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 ClpDualRowPivot_H
7#define ClpDualRowPivot_H
8
9class ClpSimplex;
10class CoinIndexedVector;
11
12//#############################################################################
13
23
24public:
25
27
28
30 virtual int pivotRow() = 0;
31
34 virtual double updateWeights(CoinIndexedVector * input,
35 CoinIndexedVector * spare,
36 CoinIndexedVector * spare2,
37 CoinIndexedVector * updatedColumn) = 0;
38
45 /* FIXME: this was pure virtul (=0). Why? */
46 virtual void updatePrimalSolution(CoinIndexedVector * input,
47 double theta,
48 double & changeInObjective) = 0;
61 virtual void saveWeights(ClpSimplex * model, int mode);
63 virtual void checkAccuracy();
65 virtual void unrollWeights();
67 virtual void clearArrays();
69 virtual bool looksOptimal() const {
70 return false;
71 }
73 virtual void maximumPivotsChanged() {}
75
76
78
79
81
84
87
89 virtual ~ClpDualRowPivot ();
90
92 virtual ClpDualRowPivot * clone(bool copyData = true) const = 0;
93
95
97
98
99 inline ClpSimplex * model() {
100 return model_;
101 }
102
104 inline void setModel(ClpSimplex * newmodel) {
105 model_ = newmodel;
106 }
107
109 inline int type() {
110 return type_;
111 }
112
114
115 //---------------------------------------------------------------------------
116
117protected:
119
120
123 int type_;
125};
126#ifndef CLP_DUAL_COLUMN_MULTIPLIER
127//#define CLP_DUAL_COLUMN_MULTIPLIER 0.99999
128#endif
129#endif
Dual Row Pivot Abstract Base Class.
ClpDualRowPivot(const ClpDualRowPivot &)
Copy constructor.
virtual ClpDualRowPivot * clone(bool copyData=true) const =0
Clone.
void setModel(ClpSimplex *newmodel)
Sets model (normally to NULL)
int type()
Returns type (above 63 is extra information)
virtual void maximumPivotsChanged()
Called when maximum pivots changes.
ClpSimplex * model()
Returns model.
int type_
Type of row pivot algorithm.
virtual bool looksOptimal() const
Returns true if would not find any row.
ClpSimplex * model_
Pointer to model.
virtual void clearArrays()
Gets rid of all arrays (may be empty)
ClpDualRowPivot & operator=(const ClpDualRowPivot &rhs)
Assignment operator.
ClpDualRowPivot()
Default Constructor.
virtual void unrollWeights()
Gets rid of last update (may be empty)
virtual void updatePrimalSolution(CoinIndexedVector *input, double theta, double &changeInObjective)=0
Updates primal solution (and maybe list of candidates) Uses input vector which it deletes Computes ch...
virtual void checkAccuracy()
checks accuracy and may re-initialize (may be empty)
virtual double updateWeights(CoinIndexedVector *input, CoinIndexedVector *spare, CoinIndexedVector *spare2, CoinIndexedVector *updatedColumn)=0
Updates weights and returns pivot alpha.
virtual int pivotRow()=0
Returns pivot row, -1 if none.
virtual ~ClpDualRowPivot()
Destructor.
virtual void saveWeights(ClpSimplex *model, int mode)
Saves any weights round factorization as pivot rows may change Will be empty unless steepest edge (wi...
This solves LPs using the simplex method.
Definition: ClpSimplex.hpp:70