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

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

add PE code

File size: 2.0 KB
Line 
1/*
2   Authors
3
4   Jeremy Omer, Mehdi Towhidi
5
6   Last update: april 10, 2015
7
8 */
9
10#ifndef ClpPEPrimalColumnDantzig_H
11#define ClpPEPrimalColumnDantzig_H
12
13#ifndef HAVE_CONFIG_H
14#define HAVE_CONFIG_H
15#endif
16
17#include "ClpPrimalColumnDantzig.hpp"
18#include "ClpPrimalColumnPivot.hpp"
19#include "ClpSimplex.hpp"
20#include "CoinIndexedVector.hpp"
21#include "ClpFactorization.hpp"
22#include "ClpNonLinearCost.hpp"
23#include "ClpSimplexPrimal.hpp"
24#include "ClpPackedMatrix.hpp"
25#include "ClpPESimplex.hpp"
26
27
28class ClpPEPrimalColumnDantzig : public ClpPrimalColumnDantzig{
29
30public:
31        /** constructors */ 
32        ClpPEPrimalColumnDantzig(double psi = 0.5);
33        ClpPEPrimalColumnDantzig(const ClpPEPrimalColumnDantzig &); //copy constructor
34
35        /** destructor */
36        ~ClpPEPrimalColumnDantzig();
37
38        /** assignment operator */
39  ClpPEPrimalColumnDantzig & operator=(const ClpPEPrimalColumnDantzig& rhs);
40       
41        /** clone */
42  ClpPrimalColumnPivot * clone(bool copyData = true) const;
43       
44        virtual int pivotColumn(CoinIndexedVector * updates,
45                                                                        CoinIndexedVector * spareRow1,
46                                                                        CoinIndexedVector * spareRow2,
47                                                                        CoinIndexedVector * spareColumn1,
48                                                                        CoinIndexedVector * spareColumn2);
49       
50     //@}
51     /** Save weights - this may initialize weights as well
52         This is as parent but may initialize ClpPESimplex
53     */
54     virtual void saveWeights(ClpSimplex * model, int mode);
55     //---------------------------------------------------------------------------
56private:
57    /* this PESimplex object is used to identify the compatible variables */
58    ClpPESimplex *modelPE_;
59
60    /* psi is the factor used in the bi-dimensional pricing, it is < 1 and
61       1/psi grows with the priority given to compatible variables */
62    double psi_;
63
64    /* useful counters for the update of the set of compatible variables */
65    int iCurrent_;
66    int iInterval_;
67
68    /* record if previous iterations concluded that compatibles should not be checked */
69    int coDegenCompatibles_;
70    int coConsecutiveCompatibles_;
71    bool updateCompatibles_;
72
73};
74#endif
Note: See TracBrowser for help on using the repository browser.