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

Last change on this file since 2149 was 2149, checked in by forrest, 5 years ago

add PE code

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