00001
00002
00003
00004
00005 #ifndef HuberVARS_H
00006 #define HuberVARS_H
00007
00008 #include "SimpleVectorHandle.h"
00009 #include "Variables.h"
00010
00018 class HuberVars : public Variables
00019 {
00020 public:
00021
00023 int nobservations;
00024
00026 int npredictors;
00027
00030 SimpleVectorHandle beta, t, gamma1, gamma2, lambda1, lambda2;
00031
00034 HuberVars(int nobservations_in, int npredictors_in);
00035
00039 HuberVars(int nobservations_in, int npredictors_in,
00040 double * beta, double * t,
00041 double * lambda1, double * lambda2,
00042 double * gamma1, double * gamma2 );
00043
00045 virtual ~HuberVars();
00046
00047 virtual void saxpy( Variables *b, double alpha );
00048 virtual void negate();
00049
00050 virtual double mu();
00051 virtual double mustep(Variables *step, double alpha);
00052
00053 virtual double stepbound( Variables *b );
00054 virtual double findBlocking( Variables * step,
00055 double & primalValue,
00056 double & primalStep,
00057 double & dualValue,
00058 double & dualStep,
00059 int& firstOrSecond );
00060
00061 virtual void interiorPoint( double alpha, double beta );
00062
00064 virtual void print();
00065
00068 virtual void printBeta();
00069
00070 virtual void copy(Variables *b);
00071
00072 virtual void shiftBoundVariables( double alpha, double beta );
00073 virtual double violation();
00074 virtual double onenorm();
00075 virtual double infnorm();
00076 };
00077
00078 #endif
00079