RosenbrockDiscrete.h

00001 
00155 #ifndef _RosenbrockDiscrete_h
00156 #define _RosenbrockDiscrete_h
00157 
00158 // SYSTEM INCLUDES
00159 //
00160 
00161 // PROJECT INCLUDES
00162 //
00163 
00164 // LOCAL INCLUDES
00165 //
00166 #include "../DoubleParameter.h"
00167 #include "../FunctionBase.h"
00168 #include "../ProblemBase.h"
00169 #include "../Method.h"
00170 #include "../StandardStopCondition.h"
00171 #include "RosenbrockDiscreteIteration.h"
00172 
00173 // FORWARD REFERENCES
00174 //
00175 
00176 
00177 class RosenbrockDiscrete
00178     : public Method
00179 {
00180 public:
00181 // LIFECYCLE
00182 
00183     friend class RosenbrockDiscretePanel;
00184 
00187     ~RosenbrockDiscrete(void);
00188 
00189 
00190 // OPERATORS
00191 
00192 // OPERATIONS
00193 
00196     virtual std::auto_ptr<Method>   Clone() const;
00197 
00198     virtual void                    UpdateStartingConditions
00199                                                 (const Result* result) const;
00200 
00201     virtual void                    ResetStartingConditions() const;
00202 
00203 // ACCESS
00206     virtual const wxString&         Name() const;
00207 
00210     virtual MethodIdType            Id() const;
00211 
00214     static MethodIdType             ClassId();
00215 
00216     virtual wxString                ToString(bool standalone = true) const;
00217 
00218 // INQUIRY
00219 
00220     virtual bool                    CanHandle(const ProblemBase* pProblem) const;
00221 
00222     virtual StopConditions          AllowedStopConditions() const;
00223 
00224 protected:
00225 
00228     RosenbrockDiscrete(void);
00229 
00234     RosenbrockDiscrete(const RosenbrockDiscrete& from);
00235 
00275     void SearchAllDirections(const FunctionBase&            function,
00276                              ColumnVector&                  rxBest,
00277                              double&                        rMin,
00278                              const SquareMatrix&            D,
00279                              ColumnVector&                  rTau,
00280                              ColumnVector&                  rLambda,
00281                              RosenbrockDiscreteIteration&   rIterationData)
00282                                                                 const;
00283 
00318     void                RotateBase (
00319             SquareMatrix&                   rD,
00320             const ColumnVector&             lambda,
00321             RosenbrockDiscreteIteration&    rIterationData) const;
00322 
00326     ColumnVector            mTau;
00327 
00330     DoubleParameter         mAlpha;
00331 
00334     DoubleParameter         mBeta;
00335 
00338     DoubleParameter         mDelta;
00339 
00342     mutable ColumnVector    mStartingPoint;
00343     ColumnVector            mInitialStartingPoint;
00344 
00347     CountedPtr<const StandardStopCondition> mcpStopCondition;
00348 
00349     virtual wxString&               rName();
00350 private:
00351 
00352     virtual std::auto_ptr<Result> Optimize(const ProblemBase& problem) const
00353         throw(OptimizationError);
00354 
00355     static wxString      mName; 
00356     static RosenbrockDiscrete mRosenbrockDiscrete;    
00357 };
00358 
00359 // INLINE METHODS
00360 //
00361 
00362 // EXTERNAL REFERENCES
00363 //
00364 
00365 #endif  // _RosenbrockDiscrete_h_

Wygenerowano Fri Sep 29 21:04:48 2006 dla EduOptim2 programem  doxygen 1.4.6