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

Solver.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 ALGORITHM_H
00006 #define ALGORITHM_H
00007 
00008 class Data;
00009 class Variables;
00010 class Residuals;
00011 class LinearSystem;
00012 class Status;
00013 class OoqpMonitor;
00014 class OoqpStartStrategy;
00015 class ProblemFormulation;
00016 
00026 class Solver
00027 {
00028 protected:
00029   OoqpMonitor * itsMonitors;
00030   Status *status;
00031   OoqpStartStrategy * startStrategy;
00032 
00034   double dnorm;
00035 
00037   double     mutol, artol;
00038 
00040   double gamma_f, gamma_a;
00041 
00044   double phi;
00045 
00047   int        maxit;
00048 
00050   double *mu_history;
00051 
00054   double *rnorm_history;
00055   
00057   double *phi_history;
00058 
00061   double *phi_min_history;
00062 
00063 public:
00064 
00066   int iter;
00067 
00068   Solver();
00069   virtual ~Solver();
00070 
00072   virtual void start( ProblemFormulation * formulation, 
00073                       Variables * iterate, Data * prob,
00074                       Residuals * resid, Variables * step);
00075 
00077   virtual void defaultStart( ProblemFormulation * formulation,
00078                              Variables * iterate, Data * prob,
00079                              Residuals * resid, Variables * step);
00080 
00082   virtual void stevestart ( ProblemFormulation * formulation,
00083                             Variables * iterate, Data * prob, 
00084                             Residuals * resid, Variables * step );
00085 
00089   virtual void dumbstart ( ProblemFormulation * formulation,
00090                            Variables * iterate, Data * prob, 
00091                            Residuals * resid, Variables * step );
00092 
00094   virtual int solve(Data *prob, Variables *iterate, Residuals * resids) = 0;
00095 
00097   virtual double finalStepLength( Variables *iterate, Variables *step );
00098 
00100   virtual void doMonitor( Data * data, Variables * vars,
00101                                                   Residuals * resids,
00102                                                   double alpha, double sigma,
00103                                                   int i, double mu,
00104                                                   int stop_code,
00105                                                   int level );
00108   virtual void defaultMonitor( Data * data, Variables * vars,
00109                                                            Residuals * resids,
00110                                                            double alpha, double sigma,
00111                                                            int i, double mu, 
00112                                                            int stop_code,
00113                                                            int level ) = 0;
00114 
00117   virtual int doStatus( Data * data, Variables * vars, 
00118                         Residuals * resids,
00119                         int i, double mu, 
00120                         int level );
00121 
00124   virtual int defaultStatus( Data * data, Variables * vars, 
00125                              Residuals * resids,
00126                              int i, double mu, 
00127                              int level );
00128 
00131   void addMonitor( OoqpMonitor * );
00132 
00135   void useStatus( Status * s ) { status = s; }
00136 
00139   void useStartStrategy( OoqpStartStrategy * s ) { startStrategy = s; }
00140 
00142   void monitorSelf();
00143  
00144   void setMuTol( double m ) { mutol = m; }
00145   double getMuTol() { return mutol; }
00146 
00147   void setArTol( double ar ) { artol = ar; }
00148   double getArTol() { return artol; }
00149 
00150   double dataNorm() { return dnorm; }
00153   LinearSystem * getLinearSystem() { return sys; };
00154 protected:
00155   LinearSystem *sys;
00156 };
00157 
00159 
00160 #endif
00161 

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