00001 #ifndef _MethodWithLineSearch_h 00002 #define _MethodWithLineSearch_h 00003 00004 00005 // SYSTEM INCLUDES 00006 // 00007 00008 // PROJECT INCLUDES 00009 // 00010 00011 // LOCAL INCLUDES 00012 // 00013 #include "CountedPtr.h" 00014 #include "FunctionBase.h" 00015 #include "LineSearch.h" 00016 #include "StandardStopCondition.h" 00017 #include "UnconstrainedProblem.h" 00018 00019 // FORWARD REFERENCES 00020 // 00021 class ProblemBase; 00022 00023 00029 class MethodWithLineSearch 00030 : public Method 00031 { 00032 public: 00033 // LIFECYCLE 00034 00035 00038 virtual ~MethodWithLineSearch(void); 00039 00040 00041 // OPERATORS 00042 00043 // OPERATIONS 00044 00045 virtual void AttachObserver(Observer* pObserver) const; 00046 00047 virtual void DetachObserver(Observer* pObserver) const; 00048 00049 virtual void UpdateStartingConditions(const Result* result) const; 00050 00051 virtual void ResetStartingConditions() const; 00052 00053 // ACCESS 00054 virtual wxString ToString(bool standalone = true) const; 00055 00056 // INQUIRY 00057 00058 00059 protected: 00060 00065 MethodWithLineSearch(void); 00066 00071 MethodWithLineSearch(const MethodWithLineSearch& from); 00072 00098 ColumnVector StepInDirection(const FunctionBase& function, 00099 const ColumnVector& point, 00100 const ColumnVector& direction, 00101 double* const pStepLength = NULL) 00102 const throw (Error); 00103 00106 mutable ColumnVector mStartingPoint; 00107 00108 ColumnVector mInitialStartingPoint; 00109 00110 /* Metoda poszukiwań w kierunku. 00111 */ 00112 CountedPtr<const LineSearch> mcpLineSearch; 00113 00116 CountedPtr<const StandardStopCondition> mcpStopCondition; 00117 00118 private: 00119 00120 }; 00121 00122 // INLINE METHODS 00123 // 00124 00125 // EXTERNAL REFERENCES 00126 // 00127 00128 #endif // _MethodWithLineSearch_h_