NelderMeadIteration.h

00001 
00006 #ifndef _NelderMeadIteration_h
00007 #define _NelderMeadIteration_h
00008 
00009 // SYSTEM INCLUDES
00010 //
00011 
00012 // PROJECT INCLUDES
00013 //
00014 
00015 // LOCAL INCLUDES
00016 //
00017 #include "../IterationData.h"
00018 #include "../PointWithValue.h"
00019 
00020 // FORWARD REFERENCES
00021 //
00022 
00023 class NelderMeadIteration
00024     : public IterationData
00025 {
00026 public:
00027 
00028     typedef enum
00029     {
00030         REFLECTION = 1,
00031         EXPANSION,
00032         CONTRACTION,
00033         SHRINKAGE
00034     } SimplexModificationType;
00035 
00036 // LIFECYCLE
00037 
00040     //NelderMeadIteration(void);
00041 
00046     NelderMeadIteration(const std::vector<PointWithValue>& initialSimplex);
00047 
00050     ~NelderMeadIteration(void);
00051 
00052 // OPERATORS
00053 
00054 // OPERATIONS
00055 
00056     void    AddReflected(const PointWithValue&          reflected);
00057     void    AddExpanded(const PointWithValue&           expanded);
00058     void    AddContracted(const PointWithValue&         contracted);
00059     void    AddNewSimplex(const vector<PointWithValue>& simplex);
00060     void    SetSimplexModification
00061                         (const SimplexModificationType  simplexModification);
00062 
00063 // ACCESS
00064 
00065     virtual ColumnVector                EndValuePoint() const;
00066 
00067     virtual vector<IterationDataIdType> ClassIds() const;
00068 
00069     static IterationDataIdType          ClassId();
00070 
00071     const std::vector<PointWithValue>&  InitialSimplex() const;
00072     const std::vector<PointWithValue>&  NewSimplex() const;
00073     const PointWithValue&               Reflected() const;
00074     const PointWithValue&               Expanded() const;
00075     const PointWithValue&               Contracted() const;
00076     SimplexModificationType             SimplexModification() const;
00077     //const std::vector<ColumnVector>     Shrinked() const;
00078 
00079 // INQUIRY
00080 
00081 protected:
00082 private:
00083 
00086     std::vector<PointWithValue> mInitialSimplex;
00089     std::vector<PointWithValue> mNewSimplex;
00090     PointWithValue              mReflected;
00091     PointWithValue              mExpanded;
00092     PointWithValue              mContracted;
00093     SimplexModificationType     mSimplexModification;
00094 
00095 };
00096 
00097 // INLINE METHODS
00098 //
00099 
00100 // EXTERNAL REFERENCES
00101 //
00102 
00103 #endif  // _NelderMeadIteration_h

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