////////////////////////////////////////////////////////////////////////
/// \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