00001
00072 #ifndef _PolakRibiere_h
00073 #define _PolakRibiere_h
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083 #include "../DoubleParameter.h"
00084 #include "../FunctionBase.h"
00085 #include "../MethodWithLineSearch.h"
00086 #include "../ProblemBase.h"
00087 #include "../ui/MethodWithLineSearchPanel.h"
00088
00089
00090
00091
00092 class PolakRibiere
00093 : public MethodWithLineSearch
00094 {
00095 public:
00096
00097 friend class MethodWithLineSearchPanel<PolakRibiere>;
00098
00099
00100
00103 ~PolakRibiere(void);
00104
00105
00106
00107
00108
00111 virtual std::auto_ptr<Method> Clone() const;
00112
00113
00114
00115
00118 virtual const wxString& Name() const;
00119
00122 virtual MethodIdType Id() const;
00123
00126 static MethodIdType ClassId();
00127
00128
00129
00132 virtual bool CanHandle(const ProblemBase* pProblem) const;
00133
00134 virtual StopConditions AllowedStopConditions() const;
00135
00136 protected:
00137
00140 PolakRibiere(void);
00141
00146 PolakRibiere(const PolakRibiere& from);
00147
00148 virtual wxString& rName();
00149 private:
00150
00151 virtual std::auto_ptr<Result> Optimize(const ProblemBase& problem) const
00152 throw(OptimizationError);
00153
00156 static wxString mName;
00159 static PolakRibiere mPolakRibiere;
00160
00161 };
00162
00163
00164
00165
00166
00167
00168
00169 #endif // _PolakRibiere_h