/home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/fit/mimir/include/mimir/Optimizer.hh Source File

Ratpac-two: /home/docs/checkouts/readthedocs.org/user_builds/ratpac/checkouts/latest/src/fit/mimir/include/mimir/Optimizer.hh Source File
Ratpac-two
Optimizer.hh
1 #pragma once
2 #include <RAT/DB.hh>
3 #include <functional>
4 #include <mimir/Cost.hh>
5 #include <mimir/ParamSet.hh>
6 
7 namespace Mimir {
8 
9 class Optimizer {
10  public:
11  Optimizer() = default;
12  virtual ~Optimizer() = default;
13 
14  // Configure the optimizer with a database link
15  virtual bool Configure(RAT::DBLinkPtr db_link) { return true; }
16 
17  // Optimize the given cost function with the provided parameters
18  void Minimize(const Cost* cost, ParamSet& params) {
19  return MinimizeImpl([cost](const ParamSet& p) { return (*cost)(p); }, params);
20  }
21 
22  void Maximize(const Cost* cost, ParamSet& params) {
23  return MinimizeImpl([cost](const ParamSet& p) { return -(*cost)(p); }, params);
24  }
25 
26  virtual void MinimizeImpl(std::function<double(const ParamSet&)> cost, ParamSet& params) = 0;
27 
28  const std::string& GetName() const { return name; }
29 
30  void SetName(const std::string& _name) { name = _name; }
31 
32  protected:
33  std::string name;
34 };
35 
36 } // namespace Mimir
Definition: Cost.hh:9
Definition: Optimizer.hh:9
Definition: ParamSet.hh:56