The PyCMA CMA-ES Benchmark

Task: control the step size of CMA-ES on BBOB functions
Cost: negative objective value
Number of hyperparameters to control: one float
State Information: current point, the last 40 objective values, population size, current step size, the deltas between the last 80 objective values, the deltas between the last 40 step sizes
Noise Level: fairly large, depends on target function
Instance space: the BBOB functions with ids, starting point and starting sigma as well as population size

This benchmark uses the PyCMA implementation to control the step size of the CMA-ES algorithm on the BBOB function set. The goal in the optimization is to find the global function minimum before the cutoff, so the cost is defined as the current negativ objective value.

The BBOB functions provide a varied instance space that is well suited for testing generalization capabilites of DAC methods. Due to this large instance space and very different scales of objective values (and thus cost), the CMA-ES benchmark is one of the more difficult to solve ones in DACBench.

The CMA-ES benchmark was constructed by Shala et al. for the paper `”Learning Step-size Adaptation in CMA-ES” <https://ml.informatik.uni-freiburg.de/wp-content/uploads/papers/20-PPSN-LTO-CMA.pdf>`_ at PPSN 2020

class dacbench.benchmarks.cma_benchmark.CMAESBenchmark(config_path=None, config=None)

Bases: AbstractBenchmark

Benchmark with default configuration & relevant functions for CMA-ES

get_benchmark(seed=0)

Get benchmark from the LTO paper

Parameters

seed (int) – Environment seed

Returns

env – CMAES environment

Return type

CMAESEnv

get_environment()

Return CMAESEnv env with current configuration

Returns

CMAES environment

Return type

CMAESEnv

read_instance_set(test=False)

Read path of instances from config into list

CMA-ES environment adapted from CMAWorld in “Learning Step-size Adaptation in CMA-ES” by G.Shala and A. Biedenkapp and N.Awad and S. Adriaensen and M.Lindauer and F. Hutter. Original author: Gresa Shala

class dacbench.envs.cma_es.CMAESEnv(config)

Bases: AbstractEnv

Environment to control the step size of CMA-ES

close()

No additional cleanup necessary

Returns

Cleanup flag

Return type

bool

get_default_reward(_)

Compute reward

Returns

Reward

Return type

float

get_default_state(_)

Gather state description

Returns

Environment state

Return type

dict

render(mode: str = 'human')

Render env in human mode

Parameters

mode (str) – Execution mode

reset()

Reset environment

Returns

Environment state

Return type

np.array

step(action)

Execute environment step

Parameters

action (list) – action to execute

Returns

state, reward, done, info

Return type

np.array, float, bool, dict