Clp 1.16.9
Loading...
Searching...
No Matches
ClpDualRowSteepest.hpp
Go to the documentation of this file.
1/* $Id: ClpDualRowSteepest.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 ClpDualRowSteepest_H
7#define ClpDualRowSteepest_H
8
9#include "ClpDualRowPivot.hpp"
10class CoinIndexedVector;
11
12
13//#############################################################################
14
22
23public:
24
26
27
29 virtual int pivotRow();
30
33 virtual double updateWeights(CoinIndexedVector * input,
34 CoinIndexedVector * spare,
35 CoinIndexedVector * spare2,
36 CoinIndexedVector * updatedColumn);
37
42 virtual void updatePrimalSolution(CoinIndexedVector * input,
43 double theta,
44 double & changeInObjective);
45
56 virtual void saveWeights(ClpSimplex * model, int mode);
58 void passInSavedWeights(const CoinIndexedVector * saved);
60 inline CoinIndexedVector * savedWeights()
61 { return savedWeights_;}
63 virtual void unrollWeights();
65 virtual void clearArrays();
67 virtual bool looksOptimal() const;
69 virtual void maximumPivotsChanged();
71
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 return mode_;
111 }
113 inline void setMode(int mode) {
114 mode_ = mode;
115 }
117 inline void setPersistence(Persistence life) {
118 persistence_ = life;
119 }
120 inline Persistence persistence() const {
121 return persistence_ ;
122 }
124
125 //---------------------------------------------------------------------------
126
127private:
129
134 int state_;
137 int mode_;
139 Persistence persistence_;
141 double * weights_;
143 CoinIndexedVector * infeasible_;
145 CoinIndexedVector * alternateWeights_;
147 CoinIndexedVector * savedWeights_;
149 int * dubiousWeights_;
151};
152
153#endif
Dual Row Pivot Abstract Base Class.
ClpSimplex * model()
Returns model.
Dual Row Pivot Steepest Edge Algorithm Class.
ClpDualRowSteepest & operator=(const ClpDualRowSteepest &rhs)
Assignment operator.
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.
CoinIndexedVector * savedWeights()
Get saved weights.
void setPersistence(Persistence life)
Set/ get persistence.
ClpDualRowSteepest(const ClpDualRowSteepest &)
Copy constructor.
virtual int pivotRow()
Returns pivot row, -1 if none.
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...
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.
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.
virtual bool looksOptimal() const
Returns true if would not find any row.
This solves LPs using the simplex method.
Definition: ClpSimplex.hpp:70