00001
00115 #ifndef _PowellVariant1_h
00116 #define _PowellVariant1_h
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126 #include "../DoubleParameter.h"
00127 #include "../FunctionBase.h"
00128 #include "../ProblemBase.h"
00129 #include "../MethodWithLineSearch.h"
00130 #include "../ui/MethodWithLineSearchPanel.h"
00131 #include "PowellVariant1Iteration.h"
00132
00133
00134
00135
00136
00137 class PowellVariant1
00138 : public MethodWithLineSearch
00139 {
00140 public:
00141
00142
00143 friend class MethodWithLineSearchPanel<PowellVariant1>;
00144
00147 ~PowellVariant1(void);
00148
00149
00150
00151
00152
00153
00156 virtual std::auto_ptr<Method> Clone() const;
00157
00158
00159
00162 virtual const wxString& Name() const;
00163
00166 virtual MethodIdType Id() const;
00167
00170 static MethodIdType ClassId();
00171
00172
00173
00174 virtual bool CanHandle(const ProblemBase* pProblem) const;
00175
00176 virtual StopConditions AllowedStopConditions() const;
00177
00178 protected:
00179
00182 PowellVariant1(void);
00183
00188 PowellVariant1(const PowellVariant1& from);
00189
00204 void SearchAllDirections(const FunctionBase& function,
00205 ColumnVector& rxBest,
00206 const SquareMatrix& D,
00207 PowellVariant1Iteration& rIterationData) const;
00208
00209 virtual wxString& rName();
00210 private:
00211
00212 virtual std::auto_ptr<Result> Optimize(const ProblemBase& problem) const
00213 throw(OptimizationError);
00214 static wxString mName;
00215 static PowellVariant1 mPowellVariant1;
00216 };
00217
00218
00219
00220
00221
00222
00223
00224 #endif // _PowellVariant1_h_