Clp 1.17.5
Loading...
Searching...
No Matches
AbcDualRowSteepest.hpp
Go to the documentation of this file.
1/* $Id: AbcDualRowSteepest.hpp 2385 2019-01-06 19:43:06Z unxusr $ */
2// Copyright (C) 2002, International Business Machines
3// Corporation and others, Copyright (C) 2012, FasterCoin. All Rights Reserved.
4// This code is licensed under the terms of the Eclipse Public License (EPL).
5
6#ifndef AbcDualRowSteepest_H
7#define AbcDualRowSteepest_H
8
9#include "AbcDualRowPivot.hpp"
10class CoinIndexedVector;
11
12//#############################################################################
13
21
22public:
24
25
27 virtual int pivotRow();
28
31 virtual double updateWeights(CoinIndexedVector &input, CoinIndexedVector &updatedColumn);
32 virtual double updateWeights1(CoinIndexedVector &input, CoinIndexedVector &updateColumn);
33 virtual void updateWeightsOnly(CoinIndexedVector &input);
35 virtual void updateWeights2(CoinIndexedVector &input, CoinIndexedVector &updateColumn);
36
40 virtual void updatePrimalSolution(CoinIndexedVector &input,
41 double theta);
42
43 virtual void updatePrimalSolutionAndWeights(CoinIndexedVector &weightsVector,
44 CoinIndexedVector &updateColumn,
45 double theta);
56 virtual void saveWeights(AbcSimplex *model, int mode);
60 virtual void clearArrays();
62 virtual bool looksOptimal() const;
64
68 normal = 0x00, // create (if necessary) and destroy
69 keep = 0x01 // create (if necessary) and leave
70 };
71
73
74
82
85
88
90 void fill(const AbcDualRowSteepest &rhs);
91
94
96 virtual AbcDualRowPivot *clone(bool copyData = true) const;
97
99
102 inline int mode() const
103 {
104 return mode_;
105 }
107 inline void setPersistence(Persistence life)
108 {
109 persistence_ = life;
110 }
112 {
113 return persistence_;
114 }
116 inline CoinIndexedVector *infeasible() const
117 {
118 return infeasible_;
119 }
121 inline CoinIndexedVector *weights() const
122 {
123 return weights_;
124 }
126 inline AbcSimplex *model() const
127 {
128 return model_;
129 }
131
132 //---------------------------------------------------------------------------
133
134private:
137 double norm_;
148 int mode_;
152 CoinIndexedVector *weights_;
154 CoinIndexedVector *infeasible_;
156 CoinIndexedVector *savedWeights_;
158};
159
160// For Devex stuff
161#undef DEVEX_TRY_NORM
162#define DEVEX_TRY_NORM 1.0e-8
163#define DEVEX_ADD_ONE 1.0
164#endif
165
166/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
167*/
Dual Row Pivot Abstract Base Class.
AbcSimplex * model_
Pointer to model.
Dual Row Pivot Steepest Edge Algorithm Class.
virtual AbcDualRowPivot * clone(bool copyData=true) const
Clone.
CoinIndexedVector * infeasible() const
Infeasible vector.
int mode_
If 0 then we are using uninitialized weights, 1 then full, if 2 then uninitialized partial,...
virtual void clearArrays()
Gets rid of all arrays.
virtual int pivotRow()
Returns pivot row, -1 if none.
virtual double updateWeights(CoinIndexedVector &input, CoinIndexedVector &updatedColumn)
Updates weights and returns pivot alpha.
virtual ~AbcDualRowSteepest()
Destructor.
virtual void updateWeightsOnly(CoinIndexedVector &input)
virtual double updateWeights1(CoinIndexedVector &input, CoinIndexedVector &updateColumn)
Does most of work for weights and returns pivot alpha.
CoinIndexedVector * weights_
weight array
Persistence
enums for persistence
CoinIndexedVector * weights() const
Weights vector.
Persistence persistence_
Life of weights.
virtual void saveWeights(AbcSimplex *model, int mode)
Saves any weights round factorization as pivot rows may change Save model May also recompute infeasib...
double factorizationRatio_
Ratio of size of factorization to number of rows.
AbcSimplex * model() const
Model.
Persistence persistence() const
void fill(const AbcDualRowSteepest &rhs)
Fill most values.
int state_
Status 0) Normal -1) Needs initialization 1) Weights are stored by sequence number.
virtual bool looksOptimal() const
Returns true if would not find any row.
virtual void recomputeInfeasibilities()
Recompute infeasibilities.
CoinIndexedVector * savedWeights_
save weight array (so we can use checkpoint)
virtual void updatePrimalSolution(CoinIndexedVector &input, double theta)
Updates primal solution (and maybe list of candidates) Uses input vector which it deletes.
AbcDualRowSteepest & operator=(const AbcDualRowSteepest &rhs)
Assignment operator.
CoinIndexedVector * infeasible_
square of infeasibility array (just for infeasible rows)
void setPersistence(Persistence life)
Set/ get persistence.
virtual void updateWeights2(CoinIndexedVector &input, CoinIndexedVector &updateColumn)
Actually updates weights.
AbcDualRowSteepest(int mode=3)
Default Constructor 0 is uninitialized, 1 full, 2 is partial uninitialized, 3 starts as 2 but may swi...
virtual void updatePrimalSolutionAndWeights(CoinIndexedVector &weightsVector, CoinIndexedVector &updateColumn, double theta)
AbcDualRowSteepest(const AbcDualRowSteepest &)
Copy constructor.