00001
00085 #ifndef _FletcherReeves_h
00086 #define _FletcherReeves_h
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096 #include "../DoubleParameter.h"
00097 #include "../FunctionBase.h"
00098 #include "../MethodWithLineSearch.h"
00099 #include "../ProblemBase.h"
00100 #include "../ui/VariantedMethodWithLineSearchPanel.h"
00101
00102
00103
00104
00105 class FletcherReeves
00106 : public MethodWithLineSearch
00107 {
00108 public:
00109
00110 friend class VariantedMethodWithLineSearchPanel<FletcherReeves>;
00111 friend class MethodWithLineSearchPanel<FletcherReeves>;
00112
00113
00114
00117 ~FletcherReeves(void);
00118
00119
00120
00121
00122
00125 virtual std::auto_ptr<Method> Clone() const;
00126
00127
00128
00129
00130
00133 virtual const wxString& Name() const;
00134
00137 virtual MethodIdType Id() const;
00138
00141 static MethodIdType ClassId();
00142
00143 virtual wxString ToString(bool standalone = true) const;
00144
00145
00146
00147 virtual bool CanHandle(const ProblemBase* pProblem)
00148 const;
00149 virtual StopConditions AllowedStopConditions() const;
00150
00151
00152 protected:
00153
00156 FletcherReeves(void);
00157
00162 FletcherReeves(const FletcherReeves& from);
00163
00167 bool mModification;
00168
00169 virtual wxString& rName();
00170 private:
00171
00172 virtual std::auto_ptr<Result> Optimize(const ProblemBase& problem) const
00173 throw(OptimizationError);
00174
00177 static wxString mName;
00180 static FletcherReeves mFletcherReeves;
00181
00182 };
00183
00184
00185
00186
00187
00188
00189
00190 #endif // _FletcherReeves_h