ClpNetworkBasis.hpp
Go to the documentation of this file.
1 /* $Id: ClpNetworkBasis.hpp 1722 2011-04-17 09:58:37Z stefan $ */
2 // Copyright (C) 2003, International Business Machines
3 // Corporation and others. All Rights Reserved.
4 // This code is licensed under the terms of the Eclipse Public License (EPL).
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 "CoinTypes.hpp"
18 #ifndef COIN_FAST_CODE
19 #define COIN_FAST_CODE
20 #endif
21 
27 
28 public:
29 
32  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 private:
103 
104  // checks looks okay
105  void check();
106  // prints data
107  void print();
110 #ifndef COIN_FAST_CODE
111  double slackValue_;
113 #endif
114  int numberRows_;
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
int CoinBigIndex
const ClpSimplex * model_
model
int * stack_
Stack.
ClpNetworkBasis()
Default constructor.
int numberRows_
Number of Rows in factorization.
int * pivot_
Pivot row.
int numberColumns_
Number of Columns in factorization.
int * stack2_
Second stack.
int * depth_
Depth.
int * descendant_
Descendant.
This deals with Factorization and Updates for network structures.
ClpNetworkBasis & operator=(const ClpNetworkBasis &other)
= copy
~ClpNetworkBasis()
Destructor.
int updateColumnTranspose(CoinIndexedVector *regionSparse, double array[]) const
Updates one column transpose (BTRAN) For large problems you should ALWAYS know where the nonzeros are...
double CoinFactorizationDouble
Definition: CoinTypes.hpp:57
int * permuteBack_
Permute back array.
Indexed Vector.
This solves LPs using the simplex method.
Definition: ClpSimplex.hpp:70
Abstract base class for Clp Matrices.
char * mark_
To mark rows.
double updateColumn(CoinIndexedVector *regionSparse, CoinIndexedVector *regionSparse2, int pivotRow)
Updates one column (FTRAN) from region, Returns pivot value if "pivotRow" >=0.
double * sign_
Sign of pivot.
int factorize(const ClpMatrixBase *matrix, int rowIsBasic[], int columnIsBasic[])
When part of LP - given by basic variables.
int * permute_
Permute into array.
int replaceColumn(CoinIndexedVector *column, int pivotRow)
Replaces one Column to basis, returns 0=OK, 1=Probably OK, 2=singular!!
int * parent_
Parent for each column.
int * leftSibling_
Left sibling.
int * rightSibling_
Right sibling.