00001 // @(#)root/quadp:$Id: TMehrotraSolver.h 20882 2007-11-19 11:31:26Z rdm $ 00002 // Author: Eddy Offermann May 2004 00003 00004 /************************************************************************* 00005 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. * 00006 * All rights reserved. * 00007 * * 00008 * For the licensing terms see $ROOTSYS/LICENSE. * 00009 * For the list of contributors see $ROOTSYS/README/CREDITS. * 00010 *************************************************************************/ 00011 00012 /************************************************************************* 00013 * Parts of this file are copied from the OOQP distribution and * 00014 * are subject to the following license: * 00015 * * 00016 * COPYRIGHT 2001 UNIVERSITY OF CHICAGO * 00017 * * 00018 * The copyright holder hereby grants you royalty-free rights to use, * 00019 * reproduce, prepare derivative works, and to redistribute this software* 00020 * to others, provided that any changes are clearly documented. This * 00021 * software was authored by: * 00022 * * 00023 * E. MICHAEL GERTZ gertz@mcs.anl.gov * 00024 * Mathematics and Computer Science Division * 00025 * Argonne National Laboratory * 00026 * 9700 S. Cass Avenue * 00027 * Argonne, IL 60439-4844 * 00028 * * 00029 * STEPHEN J. WRIGHT swright@cs.wisc.edu * 00030 * Computer Sciences Department * 00031 * University of Wisconsin * 00032 * 1210 West Dayton Street * 00033 * Madison, WI 53706 FAX: (608)262-9777 * 00034 * * 00035 * Any questions or comments may be directed to one of the authors. * 00036 * * 00037 * ARGONNE NATIONAL LABORATORY (ANL), WITH FACILITIES IN THE STATES OF * 00038 * ILLINOIS AND IDAHO, IS OWNED BY THE UNITED STATES GOVERNMENT, AND * 00039 * OPERATED BY THE UNIVERSITY OF CHICAGO UNDER PROVISION OF A CONTRACT * 00040 * WITH THE DEPARTMENT OF ENERGY. * 00041 *************************************************************************/ 00042 00043 #ifndef ROOT_TMehrotraSolver 00044 #define ROOT_TMehrotraSolver 00045 00046 #include "TQpSolverBase.h" 00047 00048 /////////////////////////////////////////////////////////////////////////// 00049 // // 00050 // Derived class of TQpSolverBase implementing the original Mehrotra // 00051 // predictor-corrector algorithm // 00052 // // 00053 /////////////////////////////////////////////////////////////////////////// 00054 00055 class TMehrotraSolver : public TQpSolverBase 00056 { 00057 protected: 00058 00059 Int_t fPrintlevel; // parameter in range [0,100] determines verbosity. (Higher value 00060 // => more verbose.) 00061 Double_t fTsig; // exponent in Mehrotra's centering parameter, which is usually 00062 // chosen to me (muaff/mu)^tsig, where muaff is the predicted 00063 // complementarity gap obtained from an affine-scaling step, while 00064 // mu is the current complementarity gap 00065 00066 TQpVar *fStep; // storage for step vectors 00067 00068 TQpProbBase *fFactory; 00069 00070 public: 00071 00072 TMehrotraSolver(); 00073 TMehrotraSolver(TQpProbBase *of,TQpDataBase *prob,Int_t verbose=0); 00074 TMehrotraSolver(const TMehrotraSolver &another); 00075 00076 virtual ~TMehrotraSolver(); 00077 00078 virtual Int_t Solve (TQpDataBase *prob,TQpVar *iterate,TQpResidual *resid); 00079 virtual void DefMonitor (TQpDataBase *data,TQpVar *vars,TQpResidual *resids, 00080 Double_t alpha,Double_t sigma,Int_t i,Double_t mu, 00081 Int_t status_code,Int_t level); 00082 00083 TMehrotraSolver &operator=(const TMehrotraSolver &source); 00084 00085 ClassDef(TMehrotraSolver,1) // Mehrotra Qp Solver class 00086 }; 00087 #endif