00001
00081 #ifndef _SteepestDescent_h
00082 #define _SteepestDescent_h
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092 #include "../CustomValueCondition.h"
00093 #include "../DoubleParameter.h"
00094 #include "../FunctionBase.h"
00095 #include "../ProblemBase.h"
00096 #include "../MethodWithLineSearch.h"
00097 #include "../SquaredCustomValueCondition.h"
00098 #include "../ui/MethodWithLineSearchPanel.h"
00099
00100
00101
00102
00103
00104 class SteepestDescent
00105 : public MethodWithLineSearch
00106 {
00107 public:
00108
00109
00112 friend class MethodWithLineSearchPanel<SteepestDescent>;
00113
00116 ~SteepestDescent(void);
00117
00118
00119
00120
00121
00122
00125 virtual std::auto_ptr<Method> Clone() const;
00126
00127
00128
00131 virtual const wxString& Name() const;
00132
00135 virtual MethodIdType Id() const;
00136
00139 static MethodIdType ClassId();
00140
00141
00142
00143 virtual bool CanHandle(const ProblemBase* pProblem) const;
00144
00145 virtual StopConditions AllowedStopConditions() const;
00146
00147 protected:
00148
00151 SteepestDescent(void);
00152
00157 SteepestDescent(const SteepestDescent& from);
00158
00159 virtual wxString& rName();
00160 private:
00161
00162 virtual std::auto_ptr<Result> Optimize(const ProblemBase& problem) const
00163 throw(OptimizationError);
00164 static wxString mName;
00165 static SteepestDescent mSteepestDescent;
00166 };
00167
00168
00169
00170
00171
00172
00173
00174 #endif // _SteepestDescent_h_