Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

Nlp.hh

Go to the documentation of this file.
00001 
00002 #ifndef NLP
00003 #define NLP
00004 
00018 #include "IotrRefCount.hh"
00019 #include "IotrHandle.hh"
00020 #include "LinearOperator.hh"
00021 #include <iostream>
00022 
00023 class NlpIterate;
00024 class NlpResiduals;
00025 class NlpLinsys;
00026 class NlpLocalModel;
00027 class NlpValues;
00028 class NlpBounds;
00029 class NlpGrads;
00030 class NlpHessian;
00031 class GenMatrix;
00032 class Functional;
00033 
00043 class Nlp : public IotrRefCount {
00044 public:
00048   virtual void initialize( IotrVector & rxlow, IotrVector & rxupp,
00049                            IotrVector & rclow, IotrVector & rcupp,
00050                            IotrVector & x,     IotrVector & yz,
00051                            double bignum,
00052                            Functional * c) = 0;
00054   virtual NlpBounds     * getBoundsPtr() = 0;
00056   virtual NlpBounds & bounds() = 0;
00057 
00061   virtual NlpIterate  * newVariables() = 0;
00062   virtual NlpIterate  * initialVariables() = 0;
00063   virtual NlpResiduals  * newResiduals() = 0;
00064   virtual NlpLinsys     * newLinsys() = 0;
00065   virtual NlpValues     * newValues() = 0;
00066   virtual NlpGrads      * newGrads() = 0;
00067   virtual NlpHessian    * newHessian() = 0;
00069 
00070   virtual NlpLocalModel * localModelAt( NlpIterate & ) = 0;
00072   virtual void writeConfiguration( std::ostream & out, char indent[] ) = 0;
00074   virtual void inspect() = 0;
00075 };
00076 typedef Handle<Nlp> NlpHandle;
00077 
00078 
00080 
00084 class NlpLocalModel : public IotrRefCount {
00085 public:
00087   virtual void updateValues( NlpValues & values ) = 0;
00089   virtual void updateGrads( NlpGrads & grads ) = 0;
00091   virtual void updateHessian( NlpHessian & hessian ) = 0;
00092 };
00093 typedef Handle<NlpLocalModel>   NlpLocalModelHandle;
00094 
00095 
00097 
00101 class NlpValues : public IotrRefCount {
00102 public:
00104   NlpValues() {}
00105 
00106   virtual const IotrVector & c() const = 0;
00107 
00108   virtual double obj() = 0;
00109 
00110   virtual void inspect() = 0;
00111 
00112   virtual void inspectAsMatlab() = 0;
00113 };
00114 typedef Handle<NlpValues>       NlpValuesHandle;
00115 
00116 
00118 
00122 class NlpGrads : public IotrRefCount {
00123 public:
00125   NlpGrads() {}
00127   virtual void getObjectiveGradient( IotrVector & g ) = 0;
00129   virtual void jacobianTransposeMult( double alpha, IotrVector & x,
00130                                       double beta,  IotrVector & y ) = 0;
00131   virtual void jacobianTransposeMult( double alpha, IotrVector & y,
00132                                       IotrVector & lambda, IotrVector & pi,
00133                                       IotrVector & gamma,  IotrVector & phi,
00134                                       double beta,  IotrVector & x ) = 0;
00135 
00137   virtual void jacobianMult( double alpha, IotrVector & x,
00138                              double beta,  IotrVector & y ) = 0;
00139 
00141   virtual void condensedJacobianMult( double alpha, IotrVector & x,
00142                              double beta, IotrVector & y ) = 0;
00143 
00144   virtual void inspect() = 0;
00145   virtual void inspectAsMatlab() = 0;
00146 };
00147 typedef Handle<NlpGrads>        NlpGradsHandle;
00148 
00149 
00151 
00154 class NlpJacobianMult : public LinearOperator {
00155 protected:
00156   NlpGradsHandle mGrads;
00157 public:
00158   NlpJacobianMult( NlpGrads * grads );
00159 
00160   virtual void mult( double alpha, IotrVector & x,
00161                      double beta,  IotrVector & y );
00162 };
00163 typedef Handle<NlpJacobianMult> NlpJacobianMultHandle;
00164 
00165 
00170 class NlpHessian : public IotrRefCount {
00171 public:
00173   NlpHessian() {}
00174 
00175   virtual double lowerBoundEigenvalue() = 0;
00176   virtual void mult(double alpha, IotrVector & x,
00177                     double beta,  IotrVector & y ) = 0;
00178   virtual void inspect() = 0;
00179   virtual void inspectAsMatlab() = 0;
00180 };
00181 typedef Handle<NlpHessian>      NlpHessianHandle;
00182 
00183 
00184 
00185 #endif

Generated on Wed Aug 27 10:03:41 2003 for iotr by doxygen1.2.18