Cgl  0.60.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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);
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 
88  ClpDualRowSteepest(int mode = 3);
89 
92 
95 
97  void fill(const ClpDualRowSteepest &rhs);
98 
100  virtual ~ClpDualRowSteepest();
101 
103  virtual ClpDualRowPivot *clone(bool copyData = true) const;
104 
106 
108  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_;
155 };
156 
157 #endif
158 
159 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
160 */
int mode() const
Mode.
virtual bool looksOptimal() const
Returns true if would not find any row.
Persistence
enums for persistence
virtual ClpDualRowPivot * clone(bool copyData=true) const
Clone.
Dual Row Pivot Steepest Edge Algorithm Class.
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 state_
Status 0) Normal -1) Needs initialization 1) Weights are stored by sequence number.
void setPersistence(Persistence life)
Set/ get persistence.
virtual void clearArrays()
Gets rid of all arrays.
CoinIndexedVector * savedWeights()
Get saved weights.
CoinIndexedVector * infeasible_
square of infeasibility array (just for infeasible rows)
virtual double updateWeights(CoinIndexedVector *input, CoinIndexedVector *spare, CoinIndexedVector *spare2, CoinIndexedVector *updatedColumn)
Updates weights and returns pivot alpha.
void setMode(int mode)
Set mode.
int mode_
If 0 then we are using uninitialized weights, 1 then full, if 2 then uninitialized partial...
virtual void maximumPivotsChanged()
Called when maximum pivots changes.
Persistence persistence_
Life of weights.
void fill(const ClpDualRowSteepest &rhs)
Fill most values.
This solves LPs using the simplex method.
Definition: ClpSimplex.hpp:106
CoinIndexedVector * alternateWeights_
alternate weight array (so we can unroll)
Indexed Vector.
virtual void unrollWeights()
Gets rid of last update.
virtual int pivotRow()
Returns pivot row, -1 if none.
virtual void saveWeights(ClpSimplex *model, int mode)
Saves any weights round factorization as pivot rows may change Save model May also recompute infeasib...
int * dubiousWeights_
Dubious weights.
double * weights_
weight array
CoinIndexedVector * savedWeights_
save weight array (so we can use checkpoint)
Persistence persistence() const
Dual Row Pivot Abstract Base Class.
ClpDualRowSteepest & operator=(const ClpDualRowSteepest &rhs)
Assignment operator.
virtual ~ClpDualRowSteepest()
Destructor.
ClpSimplex * model()
Returns model.
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...