1 /* $Id: ClpPdco.hpp 1665 2011-01-04 17:55:54Z lou $ */
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 Tomlin
9 
10  */
11 #ifndef ClpPdco_H
12 #define ClpPdco_H
13 
14 #include "ClpInterior.hpp"
15 
16 /** This solves problems in Primal Dual Convex Optimization
17 
18     It inherits from ClpInterior.  It has no data of its own and
19     is never created - only cast from a ClpInterior object at algorithm time.
20 
21 */
22 class ClpPdco : public ClpInterior {
23 
24 public:
25 
26      /**@name Description of algorithm */
27      //@{
28      /** Pdco algorithm
29 
30          Method
31 
32 
33      */
34 
35      int pdco();
36      // ** Temporary version
37      int  pdco( ClpPdcoBase * stuff, Options &options, Info &info, Outfo &outfo);
38 
39      //@}
40 
41      /**@name Functions used in pdco */
42      //@{
43      /// LSQR
44      void lsqr();
45 
46      void matVecMult( int, double *, double *);
47 
48      void matVecMult( int, CoinDenseVector<double> &, double *);
49 
50      void matVecMult( int, CoinDenseVector<double> &, CoinDenseVector<double> &);
51 
52      void matVecMult( int, CoinDenseVector<double> *, CoinDenseVector<double> *);
53 
54      void getBoundTypes( int *, int *, int *, int**);
55 
56      void getGrad(CoinDenseVector<double> &x, CoinDenseVector<double> &grad);
57 
58      void getHessian(CoinDenseVector<double> &x, CoinDenseVector<double> &H);
59 
60      double getObj(CoinDenseVector<double> &x);
61 
62      void matPrecon( double, double *, double *);
63 
64      void matPrecon( double, CoinDenseVector<double> &, double *);
65 
66      void matPrecon( double, CoinDenseVector<double> &, CoinDenseVector<double> &);
67 
68      void matPrecon( double, CoinDenseVector<double> *, CoinDenseVector<double> *);
69      //@}
70 
71 };
72 #endif
73