1 /* $Id: ClpPdco.hpp 2385 2019-01-06 19:43:06Z unxusr $ */
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   /**@name Description of algorithm */
26   //@{
27   /** Pdco algorithm
28 
29          Method
30 
31 
32      */
33 
34   int pdco();
35   // ** Temporary version
36   int pdco(ClpPdcoBase *stuff, Options &options, Info &info, Outfo &outfo);
37 
38   //@}
39 
40   /**@name Functions used in pdco */
41   //@{
42   /// LSQR
43   void lsqr();
44 
45   void matVecMult(int, double *, double *);
46 
47   void matVecMult(int, CoinDenseVector< double > &, double *);
48 
49   void matVecMult(int, CoinDenseVector< double > &, CoinDenseVector< double > &);
50 
51   void matVecMult(int, CoinDenseVector< double > *, CoinDenseVector< double > *);
52 
53   void getBoundTypes(int *, int *, int *, int **);
54 
55   void getGrad(CoinDenseVector< double > &x, CoinDenseVector< double > &grad);
56 
57   void getHessian(CoinDenseVector< double > &x, CoinDenseVector< double > &H);
58 
59   double getObj(CoinDenseVector< double > &x);
60 
61   void matPrecon(double, double *, double *);
62 
63   void matPrecon(double, CoinDenseVector< double > &, double *);
64 
65   void matPrecon(double, CoinDenseVector< double > &, CoinDenseVector< double > &);
66 
67   void matPrecon(double, CoinDenseVector< double > *, CoinDenseVector< double > *);
68   //@}
69 };
70 #endif
71 
72 /* vi: softtabstop=2 shiftwidth=2 expandtab tabstop=2
73 */
74