source: trunk/Clp/src/ClpPEDualRowDantzig.hpp @ 2470

Last change on this file since 2470 was 2385, checked in by unxusr, 10 months ago

formatting

File size: 2.1 KB
Line 
1// Copyright (C) 2002, International Business Machines
2// Corporation and others.  All Rights Reserved.
3/*
4   Authors
5
6   Jeremy Omer
7
8   Last update: april 10, 2015
9
10 */
11
12#ifndef ClpPEDualRowDantzig_H
13#define ClpPEDualRowDantzig_H
14
15#include "ClpDualRowPivot.hpp"
16#include "ClpDualRowDantzig.hpp"
17#include "ClpSimplex.hpp"
18#include "CoinIndexedVector.hpp"
19#include "ClpFactorization.hpp"
20#include "ClpNonLinearCost.hpp"
21#include "ClpSimplexDual.hpp"
22#include "ClpPackedMatrix.hpp"
23#include "ClpPESimplex.hpp"
24
25class ClpPEDualRowDantzig : public ClpDualRowDantzig {
26
27public:
28  /// Default Constructor
29  ClpPEDualRowDantzig(double psi = 0.5);
30
31  /// Copy constructor
32  ClpPEDualRowDantzig(const ClpPEDualRowDantzig &);
33
34  /// Assignment operator
35  ClpPEDualRowDantzig &operator=(const ClpPEDualRowDantzig &rhs);
36
37  /// Destructor
38  virtual ~ClpPEDualRowDantzig();
39
40  /// Clone
41  virtual ClpDualRowPivot *clone(bool copyData = true) const;
42
43public:
44  ///@name Algorithmic methods
45  //@{
46
47  /// Returns pivot row, -1 if none
48  virtual int pivotRow();
49
50  /// Update the compatible variables and
51  /// call the base class method to update weights
52  virtual double updateWeights(CoinIndexedVector *input,
53    CoinIndexedVector *spare,
54    CoinIndexedVector *spare2,
55    CoinIndexedVector *updatedColumn);
56
57  /** Save weights - this may initialize weights as well
58         This is as parent but may initialize ClpPESimplex
59     */
60  virtual void saveWeights(ClpSimplex *model, int mode);
61  //@}
62
63  //---------------------------------------------------------------------------
64
65private:
66  /* this PESimplex object is used to identify the compatible variables */
67  ClpPESimplex *modelPE_;
68
69  /* psi is the factor used in the bi-dimensional pricing, it is < 1 and
70       1/psi grows with the priority given to compatible variables */
71  double psi_;
72
73  /* useful counters for the update of the set of compatible variables */
74  int iCurrent_;
75  int iInterval_;
76
77  /* record if previous iterations concluded that compatibles should not be checked */
78  bool updateCompatibles_;
79  int coDegenCompatibles_, coConsecutiveCompatibles_;
80};
81#endif
82
83/* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
84*/
Note: See TracBrowser for help on using the repository browser.