Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

QpGenVars.h

00001 /* OOQP                                                               *
00002  * Authors: E. Michael Gertz, Stephen J. Wright                       *
00003  * (C) 2001 University of Chicago. See Copyright Notification in OOQP */
00004 
00005 #ifndef QPGENVARS
00006 #define QPGENVARS
00007 
00008 #include "Variables.h"
00009 #include "OoqpVectorHandle.h"
00010 
00011 class QpGen;
00012 class QpGenData;
00013 class LinearAlgebraPackage;
00014 class MpsReader;
00015 
00016 #ifdef TESTING
00017 class QpGenVarsTester;
00018 #endif
00019 
00025 class QpGenVars : public Variables {
00026 #ifdef TESTING
00027   friend QpGenVarsTester;
00028 #endif
00029 protected:
00030   int nx, nxupp, nxlow;
00031   int my;
00032   int mz, mcupp, mclow;
00033 
00034   OoqpVectorHandle ixlow;
00035   OoqpVectorHandle ixupp;
00036   OoqpVectorHandle icupp;
00037   OoqpVectorHandle iclow;
00038 
00039 public:  
00040 
00041   OoqpVectorHandle x;
00042   OoqpVectorHandle s;
00043   OoqpVectorHandle y;
00044   OoqpVectorHandle z;
00045 
00046   OoqpVectorHandle v;
00047   OoqpVectorHandle phi;
00048 
00049   OoqpVectorHandle w;
00050   OoqpVectorHandle gamma;
00051 
00052   OoqpVectorHandle t;
00053   OoqpVectorHandle lambda;
00054   
00055   OoqpVectorHandle u;
00056   OoqpVectorHandle pi;
00057 
00060   QpGenVars( OoqpVector * x_in, OoqpVector * s_in,
00061              OoqpVector * y_in, OoqpVector * z_in,
00062              OoqpVector * v_in, OoqpVector * gamma_in,
00063              OoqpVector * w_in, OoqpVector * phi_in,
00064              OoqpVector * t_in, OoqpVector * lambda_in,
00065              OoqpVector * u_in, OoqpVector * pi_in,
00066              OoqpVector * ixlow_in, OoqpVector * ixupp_in,
00067              OoqpVector * iclow_in, OoqpVector * icupp_in );
00068 
00071   QpGenVars( LinearAlgebraPackage * la,
00072              int nx_, int my_, int mz_,
00073              OoqpVector * ixlow, OoqpVector * ixupp,
00074              OoqpVector * iclow, OoqpVector * icupp );
00075 
00076   virtual ~QpGenVars();
00077   
00079   virtual double mu();
00080 
00081   virtual double mustep(Variables *step_in, double alpha);
00082 
00083   virtual void saxpy( Variables *b, double alpha );
00084   virtual void negate();
00085   
00093   virtual double stepbound( Variables *b );
00094 
00117   virtual double findBlocking( Variables * step, 
00118                                double & primalValue,
00119                                double & primalStep,
00120                                double & dualValue,
00121                                double & dualStep,
00122                                int& firstOrSecond );
00123 
00126   virtual void interiorPoint( double alpha, double beta );
00127 
00130   virtual void shiftBoundVariables( double alpha, double beta );
00131 
00133   virtual int isInteriorPoint();
00134 
00135   virtual double violation();
00136 
00137   virtual void print();
00138   virtual void printSolution( MpsReader * reader, QpGenData * prob,
00139                               int& iErr );
00140 
00141   virtual void unscaleSolution( QpGenData * data);
00142   virtual void unscaleBounds  ( QpGenData * data);
00143 
00144   virtual int  validNonZeroPattern();
00145   
00146   virtual void copy(Variables *b);
00147 
00148   virtual double onenorm();
00149   virtual double infnorm();
00150 };
00151 
00158 enum { no_block = 0,
00159        t_block = 1,
00160        lambda_block = 2,
00161        u_block = 3,
00162        pi_block = 4,
00163        v_block = 5,
00164        gamma_block = 6,
00165        w_block = 7,
00166        phi_block = 8
00167 };  
00168 
00169 #endif
00170 

Generated on Mon May 24 17:40:46 2004 for OOQP by doxygen1.2.18