00001 #ifndef NLPVARIABLES 00002 #define NLPVARIABLES 00003 00013 #include "IotrRefCount.hh" 00014 #include "IotrHandle.hh" 00015 #include "ElementGather.hh" 00016 00017 #include <iostream> 00018 00019 class IotrVector; 00020 class NlpBounds; 00021 class ElementGather; 00022 class NlpBounds; 00023 class NlpLinsysSol; 00024 class NlpResiduals; 00025 class NlpResidualShift; 00026 00027 typedef Handle<IotrVector> IotrVectorHandle; 00028 typedef Handle<ElementGather> ElementGatherHandle; 00029 typedef Handle<NlpBounds> NlpBoundsHandle; 00030 00037 class NlpIterate : public IotrRefCount { 00038 protected: 00041 IotrVectorHandle mX; 00042 IotrVectorHandle mY; 00043 00044 IotrVectorHandle mLambda; 00045 IotrVectorHandle mPi; 00046 IotrVectorHandle mGamma; 00047 IotrVectorHandle mPhi; 00048 public: 00050 NlpIterate( NlpBounds & bounds ); 00051 NlpIterate( IotrVector * x, 00052 IotrVector * gamma, IotrVector * phi, 00053 IotrVector * y, 00054 IotrVector * lambda, IotrVector * pi ); 00055 00058 virtual void axpy( double alpha, NlpLinsysSol & step ); 00059 00060 IotrVector & x() { return *mX; } 00061 IotrVector & y() { return *mY; } 00062 00063 IotrVector & lambda() { return *mLambda; } 00064 IotrVector & pi() { return *mPi; } 00065 IotrVector & gamma() { return *mGamma; } 00066 IotrVector & phi() { return *mPhi; } 00067 00069 virtual void getX( IotrVector& x ); 00071 virtual void startingPoint( NlpBounds& bounds ); 00073 virtual void asMfile( std::ostream & out ); 00074 virtual double dualStepbound( NlpLinsysSol &step, double maxstep ); 00075 virtual void inspect(); 00076 virtual void inspectAsMatlab(); 00077 virtual void copyFrom( NlpIterate & v ); 00078 virtual void setToConstant( double xVal, double yVal, double lamVal, 00079 double piVal, double gamVal, double phiVal ); 00080 virtual void setToIotrPi( NlpIterate & vnew, NlpResiduals & resids, 00081 NlpResidualShift & rshift ); 00082 }; 00083 00084 typedef Handle<NlpIterate> NlpIterateHandle; 00085 00086 #endif