00001 #ifndef MERT_OPTIMIZER_FACTORY_H_
00002 #define MERT_OPTIMIZER_FACTORY_H_
00003
00004 #include <vector>
00005 #include "Types.h"
00006
00007 namespace MosesTuning
00008 {
00009
00010
00011 class Optimizer;
00012
00013 class OptimizerFactory
00014 {
00015 public:
00016
00017 enum OptimizerType {
00018 POWELL = 0,
00019 RANDOM_DIRECTION = 1,
00020 RANDOM,
00021 NOPTIMIZER
00022 };
00023
00024 static std::vector<std::string> GetTypeNames();
00025
00026
00027 static void SetTypeNames();
00028
00029
00030 static OptimizerType GetOptimizerType(const std::string& type);
00031
00032 static Optimizer* BuildOptimizer(unsigned dim,
00033 const std::vector<unsigned>& to_optimize,
00034 const std::vector<bool>& positive,
00035 const std::vector<parameter_t>& start,
00036 const std::string& type,
00037 unsigned int nrandom);
00038
00039 private:
00040 OptimizerFactory() {}
00041 ~OptimizerFactory() {}
00042
00043 static std::vector<std::string> m_type_names;
00044 };
00045
00046 }
00047
00048
00049 #endif // MERT_OPTIMIZER_FACTORY_H_