//////////////////////////////////////////////////////////////////////// /// \class RAT::Optimisers::MetaOptimiser /// /// \brief All Meta Optimisers derive from this /// /// \author Phil G Jones /// \author Matthew Mottram -- contact person /// /// REVISION HISTORY:\n /// 26/04/2011 : P G Jones - New file, stub \n /// 02/05/2012 : P G Jones - Refactor. /// /// \details Meta optimisers run optimisers, i.e. they alter a seed and /// call a or many optimisers. Thus meta optimisers require a /// seeded method. /// //////////////////////////////////////////////////////////////////////// #ifndef __RAT_Optimiser_MetaOptimiser_ #define __RAT_Optimiser_MetaOptimiser_ #include namespace RAT { namespace DS { class FitResult; } namespace Methods { class SeededMethod; class OptimisedMethod; } namespace Optimisers { class MetaOptimiser : public Optimiser { public: /// Set the method to be optimised virtual void SetComponent( OptimisedComponent* component ); protected: /// Produce a new seed based on the start seed virtual DS::FitResult NewSeed( const DS::FitResult& startSeed ) = 0; Methods::SeededMethod* fSeededMethod; Methods::OptimisedMethod* fMethod; }; } //::Optimiser } //::RAT #endif