Clp 1.17.5
Loading...
Searching...
No Matches
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"
10class CoinIndexedVector;
11
12//#############################################################################
13
21
22public:
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
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 }
124 {
125 return persistence_;
126 }
128
129 //---------------------------------------------------------------------------
130
131protected:
133
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.
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.
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.
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)
virtual bool looksOptimal() const
Returns true if would not find any row.
This solves LPs using the simplex method.