43using ConfigValue = std::variant<double, int64_t, std::string>;
62 ValidateNewName(name);
63 if (!(lower < upper)) {
64 throw std::invalid_argument(
"SearchSpace::AddContinuous: lower must be < upper");
77 ValidateNewName(name);
79 throw std::invalid_argument(
"SearchSpace::AddLogUniform: lower must be > 0");
81 if (!(lower < upper)) {
82 throw std::invalid_argument(
"SearchSpace::AddLogUniform: lower must be < upper");
92 void AddInteger(std::string name, int64_t lower, int64_t upper) {
93 ValidateNewName(name);
95 throw std::invalid_argument(
"SearchSpace::AddInteger: lower must be <= upper");
98 static_cast<double>(lower),
99 static_cast<double>(upper), {}});
107 ValidateNewName(name);
108 if (categories.empty()) {
109 throw std::invalid_argument(
"SearchSpace::AddCategorical: categories must be non-empty");
111 parameters_.push_back(
116 [[nodiscard]]
const std::vector<ParameterSpec>&
parameters()
const {
return parameters_; }
119 [[nodiscard]]
size_t size()
const {
return parameters_.size(); }
126 for (
const auto& p : parameters_) {
127 if (p.name == name) {
131 throw std::out_of_range(
"SearchSpace::Get: no parameter named '" + name +
"'");
135 [[nodiscard]]
bool Contains(
const std::string& name)
const {
136 for (
const auto& p : parameters_) {
137 if (p.name == name) {
145 void ValidateNewName(
const std::string& name)
const {
147 throw std::invalid_argument(
"SearchSpace: parameter name '" + name +
"' already exists");
151 std::vector<ParameterSpec> parameters_;
Describes a hyperparameter search space as an ordered list of named, typed parameters....
Definition search_space.hpp:54
bool Contains(const std::string &name) const
Whether a parameter with this name exists.
Definition search_space.hpp:135
void AddCategorical(std::string name, std::vector< std::string > categories)
Adds a categorical parameter, one of categories.
Definition search_space.hpp:106
size_t size() const
Number of parameters in this search space.
Definition search_space.hpp:119
void AddLogUniform(std::string name, double lower, double upper)
Adds a log-uniform parameter sampled from [lower, upper] on a log scale (e.g. learning rates,...
Definition search_space.hpp:76
const std::vector< ParameterSpec > & parameters() const
Every parameter, in the order added.
Definition search_space.hpp:116
const ParameterSpec & Get(const std::string &name) const
Looks up a parameter by name.
Definition search_space.hpp:125
void AddContinuous(std::string name, double lower, double upper)
Adds a continuous parameter sampled from [lower, upper].
Definition search_space.hpp:61
void AddInteger(std::string name, int64_t lower, int64_t upper)
Adds an integer parameter sampled from [lower, upper] (inclusive both ends).
Definition search_space.hpp:92
Definition acquisition_functions.hpp:16
std::map< std::string, ConfigValue > Configuration
A concrete hyperparameter configuration: parameter name -> concrete value.
Definition search_space.hpp:46
std::variant< double, int64_t, std::string > ConfigValue
A concrete value for one parameter – a double (Continuous/LogUniform), an int64_t (Integer),...
Definition search_space.hpp:43
ParameterKind
Which family of values a named parameter draws from.
Definition search_space.hpp:22
One named parameter's description: its kind plus the bounds/categories that kind needs....
Definition search_space.hpp:30
std::string name
Definition search_space.hpp:31
std::vector< std::string > categories
Definition search_space.hpp:35
ParameterKind kind
Definition search_space.hpp:32
double upper
Definition search_space.hpp:34
double lower
Definition search_space.hpp:33