BenchmarkΒΆ
Warning
This interface documentation describes a deprecated version of the Analysis and Optimization Toolkit in JCMsuite. It has been superseded by JCMoptimizer and is retained solely for reference in legacy projects.
For all new simulation and optimization projects, use JCMOptimizer instead. The corresponding documentation is available here.
This class provides methods for benchmarking different
optimization studies against each other
Example:
benchmark = Benchmark('num_average',6);
benchmark.add_study(study1);
benchmark.add_study(study2);
studies = benchmark.studies();
for i_study = 1:length(studies)
study = studies{i_study};
while(not(study.is_done))
suggestion = study.get_suggestion();
observation = evaluate(suggestion.sample);
study.add_observation(observation,suggestion.id);
end
benchmark.add_study_results(study);
end
data = benchmark.get_data('x_type','num_evaluations','y_type','objective',...
'average_type','mean');
plots = [];
for ii=1:length(data.names)
X = data.X(ii,:);
Y = data.Y(ii,:);
plots(end+1) = plot(X,Y,'LineWidth',1.5);
end
legend(plots, data.names{:});
Methods:
add_study
Purpose: Adds a study to the benchmark.
Usage: benchmark.add_study(study1);
Input:
study: A study object.
add_study_results
Purpose: Adds the results of a benchmark study at the end
of an optimization run
Usage: benchmark.add_study_results(study1);
Input: A study object after the study was run
studies
Purpose: Returns a list of studies to be run for the benchmark
Usage: studies = benchmark.studies()
get_data
Purpose: Get benchmark data
Usage: data = benchmark.get_data('x_type','num_evaluations',...
'y_type','objective','average_type','mean');
Input:
x_type: Data on x-axis. Can be either 'num_evaluations' or 'time'
y_type: Data type on y-axis. Can be either 'objective', 'distance',
(i.e. accumulated minimum distance off all samples to overall
minimum), or 'min_distance' (i.e. distance of current minimum
to overall minimum).
y_type: Data type on y-axis. Can be either 'objective' or
'distance', i.e. distance to minimum.
average_type: Type of averaging over study runs. Can be either
'mean' w.r.t. x-axis data or 'median' w.r.t. y-axis data
invert: If True, the objective is multiplied by -1.
(Parameter not available for distance average types)
log_scale: If True, the output of Y and sdev are determined as
mean and standard deviations of the natural logarithm of the
considered y_type.
minimum: Vector with minimum position. (Only available for
distance average types)
scales: Vector with positive weights for scaling distance in
different directions. (Only available for distance average types)
norm: Order of distance norm as defined in
numpy.linalg.norm. (Only available for distance average types)
num_samples: Number of samples on y-axis. (Only available for
median average type or time on x-axis)