Clp  1.17.6
ClpDualRowSteepest.hpp
Go to the documentation of this file.
1 /* $Id: ClpDualRowSteepest.hpp 2385 2019-01-06 19:43:06Z unxusr $ */
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 ClpDualRowSteepest_H
7 #define ClpDualRowSteepest_H
8 
9 #include "ClpDualRowPivot.hpp"
10 class CoinIndexedVector;
11 
12 //#############################################################################
13 
21 
22 public:
24 
25 
27  virtual int pivotRow();
28 
31  virtual double updateWeights(CoinIndexedVector *input,
32  CoinIndexedVector *spare,
33  CoinIndexedVector *spare2,
34  CoinIndexedVector *updatedColumn);
35 
40  virtual void updatePrimalSolution(CoinIndexedVector *input,
41  double theta,
42  double &changeInObjective);
43 
54  virtual void saveWeights(ClpSimplex *model, int mode);
56  void passInSavedWeights(const CoinIndexedVector *saved);
58  inline CoinIndexedVector *savedWeights()
59  {
60  return savedWeights_;
61  }
63  virtual void unrollWeights();
65  virtual void clearArrays();
67  virtual bool looksOptimal() const;
69  virtual void maximumPivotsChanged();
71 
74  enum Persistence {
75  normal = 0x00, // create (if necessary) and destroy
76  keep = 0x01 // create (if necessary) and leave
77  };
78 
80 
81 
89 
92 
95 
97  void fill(const ClpDualRowSteepest &rhs);
98 
101 
103  virtual ClpDualRowPivot *clone(bool copyData = true) const;
104 
106 
109  inline int mode() const
110  {
111  return mode_;
112  }
114  inline void setMode(int mode)
115  {
116  mode_ = mode;
117  }
119  inline void setPersistence(Persistence life)
120  {
121  persistence_ = life;
122  }
123  inline Persistence persistence() const
124  {
125  return persistence_;
126  }
128 
129  //---------------------------------------------------------------------------
130 
131 protected:
133 
138  int state_;
141  int mode_;
145  double *weights_;
147  CoinIndexedVector *infeasible_;
149  CoinIndexedVector *alternateWeights_;
151  CoinIndexedVector *savedWeights_;
155 };
156 
157 #endif
158 
159 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
160 */
Dual Row Pivot Abstract Base Class.
ClpSimplex * model()
Returns model.
Dual Row Pivot Steepest Edge Algorithm Class.
virtual void maximumPivotsChanged()
Called when maximum pivots changes.
Persistence
enums for persistence
virtual double updateWeights(CoinIndexedVector *input, CoinIndexedVector *spare, CoinIndexedVector *spare2, CoinIndexedVector *updatedColumn)
Updates weights and returns pivot alpha.
void fill(const ClpDualRowSteepest &rhs)
Fill most values.
void setPersistence(Persistence life)
Set/ get persistence.
ClpDualRowSteepest(const ClpDualRowSteepest &)
Copy constructor.
virtual int pivotRow()
Returns pivot row, -1 if none.
CoinIndexedVector * infeasible_
square of infeasibility array (just for infeasible rows)
Persistence persistence() const
virtual void updatePrimalSolution(CoinIndexedVector *input, double theta, double &changeInObjective)
Updates primal solution (and maybe list of candidates) Uses input vector which it deletes Computes ch...
int * dubiousWeights_
Dubious weights.
CoinIndexedVector * savedWeights_
save weight array (so we can use checkpoint)
Persistence persistence_
Life of weights.
ClpDualRowSteepest & operator=(const ClpDualRowSteepest &rhs)
Assignment operator.
double * weights_
weight array
virtual ~ClpDualRowSteepest()
Destructor.
void passInSavedWeights(const CoinIndexedVector *saved)
Pass in saved weights.
ClpDualRowSteepest(int mode=3)
Default Constructor 0 is uninitialized, 1 full, 2 is partial uninitialized, 3 starts as 2 but may swi...
virtual void unrollWeights()
Gets rid of last update.
virtual ClpDualRowPivot * clone(bool copyData=true) const
Clone.
int mode_
If 0 then we are using uninitialized weights, 1 then full, if 2 then uninitialized partial,...
virtual void saveWeights(ClpSimplex *model, int mode)
Saves any weights round factorization as pivot rows may change Save model May also recompute infeasib...
void setMode(int mode)
Set mode.
virtual void clearArrays()
Gets rid of all arrays.
int state_
Status 0) Normal -1) Needs initialization 1) Weights are stored by sequence number.
CoinIndexedVector * alternateWeights_
alternate weight array (so we can unroll)
CoinIndexedVector * savedWeights()
Get saved weights.
virtual bool looksOptimal() const
Returns true if would not find any row.
This solves LPs using the simplex method.
Definition: ClpSimplex.hpp:106