00001
00121 #ifndef _DFP_h
00122 #define _DFP_h
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132 #include "../CustomValueCondition.h"
00133 #include "../DoubleParameter.h"
00134 #include "../FunctionBase.h"
00135 #include "../ProblemBase.h"
00136 #include "../MethodWithLineSearch.h"
00137 #include "../SquaredCustomValueCondition.h"
00138 #include "../ui/VariantedMethodWithLineSearchPanel.h"
00139
00140
00141
00142
00143
00144 class DFP
00145 : public MethodWithLineSearch
00146 {
00147 public:
00148
00149
00152 friend class MethodWithLineSearchPanel<DFP>;
00153 friend class VariantedMethodWithLineSearchPanel<DFP>;
00154
00157 ~DFP(void);
00158
00159
00160
00161
00162
00163
00166 virtual std::auto_ptr<Method> Clone() const;
00167
00168
00169
00172 virtual const wxString& Name() const;
00173
00176 virtual MethodIdType Id() const;
00177
00180 static MethodIdType ClassId();
00181
00182 virtual wxString ToString(bool standalone = true) const;
00183
00184
00185
00186 virtual bool CanHandle(const ProblemBase* pProblem) const;
00187
00188
00189 virtual StopConditions AllowedStopConditions() const;
00190
00191 protected:
00192 virtual wxString& rName();
00193
00196 DFP(void);
00197
00202 DFP(const DFP& from);
00203
00220 SquareMatrix CalculateNewD(const SquareMatrix& D,
00221 const ColumnVector& x_diff,
00222 const ColumnVector& grad_diff) const;
00223
00227 bool mModification;
00228
00229 private:
00230
00231 virtual std::auto_ptr<Result> Optimize(const ProblemBase& problem) const
00232 throw(OptimizationError);
00233 static wxString mName;
00234 static DFP mDFP;
00235 };
00236
00237
00238
00239
00240
00241
00242
00243 #endif // _DFP_h_