00001 #ifndef _HookeJeevesOptimal_h
00002 #define _HookeJeevesOptimal_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "../DistanceCondition.h"
00013 #include "../DoubleParameter.h"
00014 #include "../FunctionBase.h"
00015 #include "../MethodWithLineSearch.h"
00016 #include "../ProblemBase.h"
00017 #include "../Result.h"
00018 #include "../ui/MethodWithLineSearchPanel.h"
00019
00020 #include "HookeJeevesOptimalIteration.h"
00021
00022
00023
00024
00104 class HookeJeevesOptimal
00105 : public MethodWithLineSearch
00106 {
00107 public:
00108
00111 friend class MethodWithLineSearchPanel<HookeJeevesOptimal>;
00112
00113
00114
00117 ~HookeJeevesOptimal(void);
00118
00119
00120
00121
00122
00123
00126 virtual std::auto_ptr<Method> Clone() const;
00127
00128
00129
00132 virtual const wxString& Name() const;
00133
00136 virtual MethodIdType Id() const;
00137
00140 static MethodIdType ClassId();
00141
00142
00143
00144 virtual bool CanHandle(const ProblemBase* pProblem) const;
00145
00146 virtual StopConditions AllowedStopConditions() const;
00147
00148 protected:
00149
00152 HookeJeevesOptimal(void);
00153
00158 HookeJeevesOptimal(const HookeJeevesOptimal& from);
00159
00160
00177 double CoordinateSearch
00178 (const FunctionBase& function,
00179 ColumnVector& rx,
00180 HookeJeevesOptimalIteration& rIteration)
00181 const;
00182
00183 virtual wxString& rName();
00184 private:
00185
00186 virtual std::auto_ptr<Result> Optimize(const ProblemBase& problem) const
00187 throw(OptimizationError);
00188
00189 static wxString mName;
00190 static HookeJeevesOptimal mHookeJeevesOptimal;
00191 };
00192
00193
00194
00195
00196
00197
00198
00199 #endif // _HookeJeevesOptimal_h_