Configuration#
Example Configurations#
Single Objective Optimization#
# Single objective optimization config
optimization_options:
objective_options:
objectives:
# List all of your metrics here,
# only list 1 metric for a single objective optimization
- name: rmse
boa_metric: RootMeanSquaredError
# List all outcome constraints here
outcome_constraints: []
# Here we explicitly define a generation strategy
# for our trials.
# This can always be done, but if left off,
# Will be autoselected.
# Here we say we want for first 5 trials
# To be a random sobol survey,
# and then the rest be Gaussian process expected improvement
generation_strategy:
steps:
# Other options are possible, see Ax GenerationStrategy
# for more information
- model: SOBOL
num_trials: 5
- model: GPEI
num_trials: -1
# experiment options we wish to use
# we specify an experiment name, which we can
# also use to name our experiment running and output directory
experiment:
name: "test_experiment"
# Scheduler options we wish to use
# Here we specify a total of 10 trials will be ran.
scheduler:
total_trials: 10
# Instead of putting all of your parameters under the parameters key,
# You can put them under different keys, and then
# pass a list of lists where each list is the json/yaml pathing to the
# additional parameters key section.
# See below for an example.
parameter_keys: []
# optimization parameters
parameters:
x1:
type: range
bounds: [0, 1]
x2:
type: range
bounds: [0, 1]
x3:
type: range
bounds: [0, 1]
x4:
type: range
bounds: [0, 1]
x5:
type: fixed
values: .5
# optimization parameter constraints
parameter_constraints:
- x2 + x1 => >.1
- x2 + x1 + .6*x1 <= .6
# non optimization model options
# anything can go here
model_options:
model_specific_options:
- 1
- 2
- 3
Multi Objective Optimization#
# MultiObjective Optimization config
optimization_options:
objective_options:
objectives:
# List all of your metrics here,
# only list multiple objectives for a multi objective optimization
- name: rmse
boa_metric: RootMeanSquaredError
- name: r2
boa_metric: R2
outcome_constraints: []
objective_thresholds: []
experiment:
name: "test_experiment"
scheduler:
total_trials: 10
parameters:
x1:
type: range
bounds: [0, 1]
x2:
type: range
bounds: [0, 1]
x3:
type: range
bounds: [0, 1]
x4:
type: range
bounds: [0, 1]
x5:
type: fixed
values: .5
parameter_constraints:
- x2 + x1 => >.1
- x2 + x1 + .6*x1 <= .6
model_options:
model_specific_options:
- 1
- 2
- 3
Additional Configurations#
Example of parameters being specified in alternative ways than the traditional parameters key location.
Useful for if you have multiple sections of parameters that you want to keep logically separated but you are still optimizing over them all, such as different plant species in a multi-species plant model.
optimization_options:
# Instead of putting all of your parameters under the parameters key,
# You can put them under different keys, and then
# pass a list of lists where each list is the json/yaml pathing to the
# additional parameters key section.
# Useful for if you have multiple sections of parameters that you
# want to keep logically separated but you are still optimizing over
# them all, such as different plant species in a multi-species plant model.
parameter_keys: [
["params", "a"],
["params", "b"],
["params_a"],
["params2", 0, 0],
["params2", 1, 0],
]
# Alternatively, these keys can be expressed in more traditional YAML
# syntax, but the above more traditional json like syntax might be easier
# to understand. They both mean the same thing, a list of lists
# -
# - "params"
# - "a"
# -
# - "params"
# - "b"
# -
# - "params_a"
# -
# - "params2"
# - 0
# - 0
# -
# - "params2"
# - 1
# - 0
params:
a:
x1:
type: range
bounds: [0, 1]
x2:
type: fixed
value: 0.5
b:
x1:
type: range
bounds: [ 0, 1 ]
x2:
type: fixed
value: 0.5
params_a:
x1:
type: range
bounds: [ 0, 1 ]
x2:
type: fixed
value: 0.5
params2:
- 0:
x1:
type: range
bounds: [ 0, 1 ]
x2:
type: fixed
value: 0.5
- 0:
x1:
type: range
bounds: [ 0, 1 ]
x2:
type: fixed
value: 0.5