PIPS-NLP
sInfo.h
Go to the documentation of this file.
1 /* PIPS-NLP
2  * Author: Nai-Yuan Chiang
3  * (C) 2015 Argonne National Laboratory
4  */
5 
6 #ifndef STOCHNLPINFO
7 #define STOCHNLPINFO
8 
9 #include "mpi.h"
10 #include "NlpInfo.h"
11 
12 #include "OoqpVectorHandle.h"
13 #include "OoqpVector.h"
14 #include "DoubleMatrixHandle.h"
15 
16 #include <vector>
17 
18 
19 class sData;
20 class sTree;
21 class SparseSymMatrix;
22 class SparseGenMatrix;
23 class NlpGenVars;
24 class stochasticInput;
25 class multiStageInputTree;
26 
27 
28 // for Jeq
29 // x0 x1 x2
30 // Bmat
31 // Amat Bmat
32 // Amat 0 Bmat
33 // E0 E1 E2
34 
35 // for Jineq
36 // x0 x1 x2
37 // Dmat
38 // Cmat Dmat
39 // Cmat 0 Dmat
40 // F0 F1 F2
41 
42 class sInfo : public NlpInfo
43 {
44 public:
45 
54 
56 
57  std::vector<sInfo*> children;
58 
60 
62 
63  /* MPI communicator */
64  MPI_Comm mpiComm;
65 
66  sInfo();
67  sInfo(sData *data_in);
68  sInfo(sData *data_in, stochasticInput &in){assert(0);}
69 
70  sInfo(int nx_in,int my_in,int mz_in,int nzH_in,int nzA_in,int nzC_in);
71  sInfo( int nx_in,int my_in,int mz_in,int nzH_in,int nzA_in,int nzC_in,
72  int nxL_in,int nxU_in,int nsL_in,int nsU_in);
73 
74  virtual ~sInfo();
75 
76 
77 
78  virtual void Hessian_FromSon( NlpGenVars * vars, double *tempFromParH ) = 0;
79  virtual void ObjGrad_FromSon( NlpGenVars * vars, OoqpVector *grad, double *tempFromParH ) = 0;
80  virtual void writeSolution( NlpGenVars * vars_){};
81 
82  virtual double ObjValue( NlpGenVars * vars) = 0;
83 
84  virtual void ConstraintBody( NlpGenVars * vars, OoqpVector *conEq, OoqpVector *conIneq) = 0;
85 
86  virtual int ObjGrad( NlpGenVars * vars, OoqpVector *grad ) = 0;
87 
88 
89 
90  virtual void Hessian( NlpGenVars * vars, SymMatrix *Hess ) = 0;
91 
92  virtual void JacFull( NlpGenVars * vars, GenMatrix* JacA, GenMatrix* JacC) = 0;
93 
94 
95  virtual void get_InitX0(OoqpVector* vX) = 0;
96 
97  virtual void createChildren( sData *data_in,stochasticInput& in) = 0;
98 // void createChildren( sData *data_in);
99 
100  virtual void AddChild(sInfo* child);
101 
102  virtual void Emult(double beta, OoqpVector& y,
103  double alpha, OoqpVector& x );
104  virtual void Fmult(double beta, OoqpVector& y,
105  double alpha, OoqpVector& x );
106 
107 protected:
108  void destroyChildren();
109 
110 };
111 
112 
113 
117 class sInfoDummy : public sInfo {
118 protected:
119 
120 public:
122  : sInfo() {};
123 
124  virtual void AddChild(sInfo* child){};
125  virtual void createChildren(sData* data_in, stochasticInput& in) {};
126 
127  virtual double ObjValue( NlpGenVars * vars) { return 0;};
128 
129  virtual void ConstraintBody( NlpGenVars * vars, OoqpVector *conEq, OoqpVector *conIneq){};
130 
131  virtual int ObjGrad( NlpGenVars * vars, OoqpVector *grad ){return 0;};
132 
133 
134 
135  virtual void Hessian( NlpGenVars * vars, SymMatrix *Hess ){};
136 
137  virtual void JacFull( NlpGenVars * vars, GenMatrix* JacA, GenMatrix* JacC){};
138 
139 
140  virtual void get_InitX0(OoqpVector* vX){};
141 
142  virtual void Hessian_FromSon( NlpGenVars * vars, double *tempFromParH ){};
143  virtual void ObjGrad_FromSon( NlpGenVars * vars, OoqpVector *grad, double *tempFromParH ){};
144  virtual void writeSolution( NlpGenVars * vars_){};
145 
146  virtual void Emult(double beta, OoqpVector& y,
147  double alpha, OoqpVector& x ){};
148  virtual void Fmult(double beta, OoqpVector& y,
149  double alpha, OoqpVector& x ){};
150 };
151 
152 
153 
154 #endif
155 
sTree * stochNode
Definition: sInfo.h:59
virtual double ObjValue(NlpGenVars *vars)
Definition: sInfo.h:127
SparseGenMatrix * Bmat
Definition: sInfo.h:49
virtual void Hessian(NlpGenVars *vars, SymMatrix *Hess)
Definition: sInfo.h:135
int locMy
Definition: sInfo.h:55
virtual void JacFull(NlpGenVars *vars, GenMatrix *JacA, GenMatrix *JacC)
Definition: sInfo.h:137
int locNx
Definition: sInfo.h:55
virtual void Emult(double beta, OoqpVector &y, double alpha, OoqpVector &x)
Definition: sInfo.C:92
sInfo(sData *data_in, stochasticInput &in)
Definition: sInfo.h:68
Definition: SparseGenMatrix.h:21
Definition: DoubleMatrix.h:241
Definition: sTree.h:17
SparseGenMatrix * Amat
Definition: sInfo.h:48
virtual void Fmult(double beta, OoqpVector &y, double alpha, OoqpVector &x)
Definition: sInfo.C:98
Definition: stochasticInput.hpp:32
SparseSymMatrix * Qdiag
Definition: sInfo.h:46
Definition: sInfo.h:42
virtual void Fmult(double beta, OoqpVector &y, double alpha, OoqpVector &x)
Definition: sInfo.h:148
virtual void get_InitX0(OoqpVector *vX)
Definition: sInfo.h:140
Definition: NlpInfo.h:16
Definition: sInfo.h:117
virtual int ObjGrad(NlpGenVars *vars, OoqpVector *grad)=0
virtual void get_InitX0(OoqpVector *vX)=0
int locMz
Definition: sInfo.h:55
virtual void Hessian_FromSon(NlpGenVars *vars, double *tempFromParH)=0
SparseGenMatrix * Dmat
Definition: sInfo.h:51
SparseGenMatrix * Emat
Definition: sInfo.h:52
sInfoDummy()
Definition: sInfo.h:121
virtual void ObjGrad_FromSon(NlpGenVars *vars, OoqpVector *grad, double *tempFromParH)
Definition: sInfo.h:143
virtual void ConstraintBody(NlpGenVars *vars, OoqpVector *conEq, OoqpVector *conIneq)=0
Definition: SparseSymMatrix.h:20
SparseGenMatrix * Qborder
Definition: sInfo.h:47
virtual void writeSolution(NlpGenVars *vars_)
Definition: sInfo.h:80
virtual int ObjGrad(NlpGenVars *vars, OoqpVector *grad)
Definition: sInfo.h:131
sInfo * parent
Definition: sInfo.h:61
virtual void ObjGrad_FromSon(NlpGenVars *vars, OoqpVector *grad, double *tempFromParH)=0
Definition: NlpGenVars.h:27
virtual void Hessian_FromSon(NlpGenVars *vars, double *tempFromParH)
Definition: sInfo.h:142
virtual void createChildren(sData *data_in, stochasticInput &in)=0
virtual void AddChild(sInfo *child)
Definition: sInfo.h:124
MPI_Comm mpiComm
Definition: sInfo.h:64
virtual void AddChild(sInfo *child)
Definition: sInfo.C:87
std::vector< sInfo * > children
Definition: sInfo.h:57
Definition: DoubleMatrix.h:188
virtual void createChildren(sData *data_in, stochasticInput &in)
Definition: sInfo.h:125
Definition: OoqpVector.h:34
sInfo()
Definition: sInfo.C:19
Definition: sData.h:28
virtual ~sInfo()
Definition: sInfo.C:14
virtual void Emult(double beta, OoqpVector &y, double alpha, OoqpVector &x)
Definition: sInfo.h:146
virtual void writeSolution(NlpGenVars *vars_)
Definition: sInfo.h:144
virtual void Hessian(NlpGenVars *vars, SymMatrix *Hess)=0
void destroyChildren()
Definition: sInfo.C:78
virtual void ConstraintBody(NlpGenVars *vars, OoqpVector *conEq, OoqpVector *conIneq)
Definition: sInfo.h:129
virtual void JacFull(NlpGenVars *vars, GenMatrix *JacA, GenMatrix *JacC)=0
virtual double ObjValue(NlpGenVars *vars)=0
SparseGenMatrix * Fmat
Definition: sInfo.h:53
SparseGenMatrix * Cmat
Definition: sInfo.h:50