ClientΒΆ
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 creating new optimization studies.
Example:
domain = {};
domain(1).name = 'x1';
domain(1).type = 'continuous';
domain(1).domain = [-1.5, 1.5];
domain(2).name = 'x2';
domain(2).type = 'continuous';
domain(2).domain = [-1.5, 1.5];
study = client.create_study('domain', domain, 'name', 'basic example');
Methods
check_server
Purpose: Checks whether there is a running optimization server.
Usage: client.check_server(warn)
Input:
warn: If true, shows warning messages.
shutdown_server
Purpose: Shuts down the optimization server
Usage: client.shutdown_server()
Input:
port: The port where the optimization server is running. If not port is
provided, the server started by calling jcmwave_optimizer_startup()
is closed.
force: If True the optimization server is closed even if a study
is not yet finished.
create_study
Purpose: Creates a new optimization study object.
Usage: client.create_study('domain', domain, 'name', 'basic example');
Input: key-value list to configure the optimization study
domain: Cell array of domain definitions for each parameter. A domain
definition consists of a struct with the entries:
name: Name of the parameter. E.g. 'x1'. The name should contain
no spaces and must not be equal to function names like
'sin', 'cos', 'exp' etc.
type: Type of the parameter. Either 'continuous', 'discrete',
'categorial' or 'fixed'. Fixed parameters are not optimized,
but can be used in the constraint functions.
domain: The domain of the parameter. For continuous parameters this
is a tuple [min, max]. For discrete parameters this is a list
of values, e.g. [1.0,2.5,3.0]. For categorial inputs it is a list
of strings, e.g. {% raw %}{{'cat1','cat2','cat3'}}{% endraw %}. Note, that categorial
values are internally mapped to integer representations, which
are allowed to have a correlation. The categorial values should
therefore be ordered according to their similarity.
For fixed parameters the domain is a single parameter value.
Example:
domain = {};
domain(1).name = 'x1';
domain(1).type = 'continuous';
domain(1).domain = [-1.5, 1.5];
domain(2).name = 'x2';
domain(2).type = 'continuous';
domain(2).domain = [-1.5, 1.5];
domain(3).name = 'x3';
domain(3).type = 'discrete';
domain(3).domain = [-1,0,1];
domain(4).name = 'x4';
domain(4).type = 'categorial';
domain(4).domain = {'a','b','c'};
domain(5).name = 'radius';
domain(5).type = 'fixed';
domain(5).domain = 2;
constraints: List of constraints on the domain. Each list element is a
dictionary with the entries
name: Name of the constraint.
constraint: A string defining a function that is smaller zero if and
only if the constraint is met. The following operations and
functions may be used: +,-,*,/,^,sqrt,sin,cos,tan,abs,round,
sgn, tunc. E.g. 'x1^2 + x2^2 + sin(x1+x2)'
Example:
constraints = {};
constraints(1).name = 'circle';
constraints(1).constraint = 'x1^2 + x2^2 - 4';
constraints(2).name = 'triangle';
constraints(2).constraint = 'x1 - x2';
study_id: A unique identifier of the study. All relevant information on
the study are saved in a file named study_id+'.jcmo'
If the study already exists, the domain and constraints
do not need to be provided. If not set, the study_id is set to
a random unique string.
name: The name of the study that will be shown in the dashboard.
save_dir: The path to a directory, where the study
file (jcmo-file) is saved. If false, no study file is saved.
output_precision: Precision level for output of parameters. (Default: 1e-10)
Note: Rounding the output can potentially lead to a slight
breaking of constraints.
driver: Driver used for the study (default: 'BayesOptimization').
For a list of drivers, see the
Analysis and Optimization Toolkit (deprecated)/Driver Reference
dashboard: If true, a dashboard server will
be started for the study. (Default: true)
open_browser: If true, a browser window with the dashboard is started.
(Default: true)
create_benchmark
Purpose: Creates a new benchmark object for benchmarking different optimization
studies against each other.
Usage: client.create_benchmark('num_average', 6);
Input: key-value list to configure the benchmark
benchmark_id: A unique identifier of the benchmark
num_average: Number of study runs to determine average study performance