Scenario

The scenario-object is used to configure SMAC and can be constructed either by providing an acutal scenario-object or by specifing the options in a scenario file.

Create Scenario

Specify the options directly:

from smac.scenario.scenario import Scenario

scenario = Scenario({
    'option': 'value',
    ...
})

or specify the options in a scenario.txt file:

OPTION1 = VALUE1
OPTION2 = VALUE2

Use "true" or "false" for boolean values, respectively.

Finally, create the scenario object by handing over the filename:

from smac.scenario.scenario import Scenario

scenario = Scenario("/path/to/your/scenario.txt")

Options

Following options can be defined within the scenario object:

algo_runs_timelimit

Maximum amount of CPU-time used for optimization. Default: inf.

always_race_default

Race new incumbents always against default configuration.

cost_for_crash

Defines the cost-value for crashed runs on scenarios with quality as run-obj. If multi-objective is used, a list or comma separated string is accepted too. Default: 2147483647.0.

cutoff

Maximum runtime, after which the target algorithm is cancelled. Required if *run_obj* is runtime.

deterministic

If true, SMAC assumes that the target function or algorithm is deterministic (the same static seed of 0 is always passed to the function/algorithm). If false, different random seeds are passed to the target function/algorithm. Default: True.

execdir

Specifies the path to the execution-directory. Default: ..

feature_fn

Specifies the file with the instance-features.

initial_incumbent

DEFAULT is the default from the PCS. Default: DEFAULT.

memory_limit

Maximum available memory the target algorithm can occupy before being cancelled in MB.

multi_objectives

List of string or comma-separated strings of objectives to optimize. Default: cost.

overall_obj

PARX, where X is an integer defining the penalty imposed on timeouts (i.e. runtimes that exceed the cutoff-time). Default: par10.

pcs_fn

Specifies the path to the PCS-file.

run_obj

Defines what metric to optimize. When optimizing runtime, cutoff_time is required as well.

save_results_instantly

If true, runhistory and stats are saved immediately on changes. Otherwise, runhistory and states are only saved once after the optimization process has finished. Default: True.

ta

Specifies the target algorithm call that SMAC will optimize. Interpreted as a bash-command.

ta_run_limit

Maximum number of algorithm-calls during optimization. Default: inf.

test_inst_fn

Specifies the file with the test-instances.

train_inst_fn

Specifies the file with the training-instances.

wallclock_limit

Maximum amount of wallclock-time used for optimization. Default: inf.

Additionally, you can also specify SMAC options with the scenario object:

abort_on_first_run_crash

If true, SMAC will abort if the first run of the target algorithm crashes. Default: True.

acq_opt_challengers

Number of challengers returned by acquisition function optimization. Also influences the number of randomly sampled configurations to optimized the acquisition function Default: 5000.

always_race_default

Race new incumbents always against default configuration.

hydra_iterations

number of hydra iterations. Only active if mode is set to Hydra Default: 3.

input_psmac_dirs

For parallel SMAC, multiple output-directories are used.

intens_adaptive_capping_slackfactork

Slack factor of adpative capping (factor * adpative cutoff). Only active if obj is runtime. If set to very large number it practically deactivates adaptive capping. Default: 1.2.

intens_min_chall

Minimal number of challengers to be considered in each intensification run (> 1). Set to 1 and in combination with very small intensification-percentage. it will deactivate randomly sampled configurations (and hence, extrapolation of random forest will be an issue.) Default: 2.

intensification_percentage

The fraction of time to be used on intensification (versus choice of next Configurations). Default: 0.5.

limit_resources

If true, SMAC will use pynisher to limit time and memory for the target algorithm. Allows SMAC to use all resources available. Applicable only to func TAEs. Set to ‘False’ by default. (Warning: This only works on Linux. Use with caution!)

maxR

Maximum number of calls per configuration. Default: 2000.

minR

Minimum number of calls per configuration. Default: 1.

output_dir

Specifies the output-directory for all emerging files, such as logging and results. Default: smac3-output_2022-07-14_08:13:31_599946.

rand_prob

probablity to run a random configuration instead of configuration optimized on the acquisition function Default: 0.5.

random_configuration_chooser

path to a python module containing a class`RandomConfigurationChooserImpl` implementingthe interface of RandomConfigurationChooser

rf_do_bootstrapping

Use bootstraping in random forest. Default: True.

rf_max_depth

Maximum depth of each tree in the random forest. Default: 20.

rf_min_samples_leaf

Minimum required number of samples in each leaf of a tree in the random forest. Default: 3.

rf_min_samples_split

Minimum number of samples to split for building a tree in the random forest. Default: 3.

rf_num_trees

Number of trees in the random forest (> 1). Default: 10.

rf_ratio_features

Ratio of sampled features in each split ([0.,1.]). Default: 0.8333333333333334.

shared_model

Whether to run SMAC in parallel mode.

sls_max_steps

Maximum number of local search steps in one iteration during the optimization of the acquisition function.

sls_n_steps_plateau_walk

Maximum number of steps on plateaus during the optimization of the acquisition function. Default: 10.

transform_y

Transform all observed cost values via log-transformations or inverse scaling. The subfix “s” indicates that SMAC scales the y-values accordingly to apply the transformation. Default: NONE.

use_ta_time

Instead of measuring SMAC’s wallclock time, only consider time reported by the target algorithm (ta).