ClpNetworkBasis.hpp
Go to the documentation of this file.
1 /* $Id: ClpNetworkBasis.hpp 1525 2010-02-26 17:27:59Z mjs $ */
2 // Copyright (C) 2003, International Business Machines
3 // Corporation and others. All Rights Reserved.
4 
5 /*
6  Authors
7 
8  John Forrest
9 
10  */
11 #ifndef ClpNetworkBasis_H
12 #define ClpNetworkBasis_H
13 
14 class ClpMatrixBase;
15 class CoinIndexedVector;
16 class ClpSimplex;
17 #include "CoinFinite.hpp"
18 #ifndef COIN_FAST_CODE
19 #define COIN_FAST_CODE
20 #endif
21 
27 
28 public:
29 
32 
33  ClpNetworkBasis ( );
35  ClpNetworkBasis(const ClpSimplex * model,
36  int numberRows, const CoinFactorizationDouble * pivotRegion,
37  const int * permuteBack, const CoinBigIndex * startColumn,
38  const int * numberInColumn,
39  const int * indexRow, const CoinFactorizationDouble * element);
41  ClpNetworkBasis ( const ClpNetworkBasis &other);
42 
44  ~ClpNetworkBasis ( );
46  ClpNetworkBasis & operator = ( const ClpNetworkBasis & other );
48 
59  int factorize ( const ClpMatrixBase * matrix,
60  int rowIsBasic[], int columnIsBasic[]);
62 
65 
69  int replaceColumn ( CoinIndexedVector * column,
70  int pivotRow);
72 
79  double updateColumn ( CoinIndexedVector * regionSparse,
80  CoinIndexedVector * regionSparse2,
81  int pivotRow);
87  int updateColumn ( CoinIndexedVector * regionSparse,
88  double array[] ) const;
95  int updateColumnTranspose ( CoinIndexedVector * regionSparse,
96  double array[] ) const;
98  int updateColumnTranspose ( CoinIndexedVector * regionSparse,
99  CoinIndexedVector * regionSparse2) const;
101 
102 private:
103 
104  // checks looks okay
105  void check();
106  // prints data
107  void print();
110 #ifndef COIN_FAST_CODE
111 
112  double slackValue_;
113 #endif
114 
121  int * parent_;
123  int * descendant_;
125  int * pivot_;
131  double * sign_;
133  int * stack_;
135  int * permute_;
139  int * stack2_;
141  int * depth_;
143  char * mark_;
145 };
146 #endif