00001 #ifndef PLAYA_STEEPESTDESCENT_H 00002 #define PLAYA_STEEPESTDESCENT_H 00003 00004 00005 #include "PlayaLineSearchBasedOptBase.hpp" 00006 00007 00008 namespace Playa 00009 { 00010 /** 00011 * Implements the steepest descent method, used here mainly for debugging 00012 * objective functions and gradients. 00013 * 00014 * @author Kevin Long 00015 */ 00016 class SteepestDescent : public LineSearchBasedOptBase 00017 { 00018 public: 00019 /** */ 00020 SteepestDescent(const ParameterList& params); 00021 00022 /** */ 00023 std::string description() const {return "SteepestDescent";} 00024 00025 /** */ 00026 RCP<DirectionGeneratorBase> makeDirectionGenerator() const ; 00027 }; 00028 00029 /** */ 00030 class SteepestDescentDirection : public DirectionGeneratorBase 00031 { 00032 public: 00033 /** */ 00034 SteepestDescentDirection() {} 00035 00036 /** */ 00037 ~SteepestDescentDirection() {} 00038 00039 /** */ 00040 bool generateDirection(const RCP<ObjectiveBase>& obj, 00041 const Vector<double>& xCur, 00042 const Vector<double>& gradCur, 00043 const double& fCur, 00044 Vector<double>& p) ; 00045 }; 00046 00047 } 00048 00049 #endif