Configuration reference#
An OMADS run is described by one dictionary (or JSON file) with up to four sections:
data = {
"evaluator": {...}, # how to evaluate a point (required)
"param": {...}, # the problem: variables, bounds (required)
"options": {...}, # algorithmic and run options (required)
"search": {...}, # the search step (required by mads and search)
}
Keys are passed straight to the constructors of Evaluator,
Parameters, Options and
search_sampling, so a misspelled key raises a TypeError instead of being ignored.
evaluator#
Key |
Default |
Description |
|---|---|---|
|
|
A Python callable, or the file name of an executable (in |
|
|
A list passed as the second argument of the callable, |
|
|
Working directory of an executable blackbox. |
|
|
Input file name of an executable blackbox (one design variable per line). |
|
|
Output file name of an executable blackbox: the objective on the first line, then one constraint per line. |
|
|
Extra arguments appended to the executable command (on Windows, the whole command). |
|
|
Seconds before an executable evaluation is killed and counted as a failure. |
|
|
Must stay |
param#
Problem definition#
Key |
Default |
Description |
|---|---|---|
|
required |
Starting point \(x^0\). A list of lists gives several starting points; all are evaluated and the best one is used. |
|
required |
Lower and upper bounds, one per variable. |
|
|
Run name, used for the output folders and files. |
|
current directory |
Folder for |
|
|
Variable names (column headers of the result files). |
|
|
Objective names (column headers of the result files). Give one per objective in multi-objective runs. |
|
|
Scalar or per-variable divisor \(s\): poll steps are expressed in units of
\((u-\ell)/s\). Use |
|
all |
Variable types: |
|
|
Dictionary of named value lists used by |
|
|
Same as |
Warning
Mixed-variable support ("I", "D_*", "C_*", "B") is experimental in
this release: the poll directions for non-real variables are not reliable yet. Prefer
real variables and round (or index into a list of values) inside the blackbox.
Constraints#
Key |
Default |
Description |
|---|---|---|
|
all |
One entry per constraint: |
|
|
Initial barrier threshold \(h^0_{\max}\). |
|
|
Trigger for picking the infeasible frame centre first, and penalty parameter for points with \(h \ge h_{\max}\). |
|
|
Initial Lagrange multipliers (scalar or list) used by that penalty. |
Mesh#
Key |
Default |
Description |
|---|---|---|
|
|
|
|
all |
(GMESH) Per-variable granularity ( |
|
from bounds |
(GMESH) Initial \(\Delta^0\) and \(\delta^0\); by default \(\Delta^0_i = (u_i - \ell_i)/10\). |
|
|
(GMESH) Lower limits for the frame and mesh sizes. |
|
|
Reserved. |
|
|
Reserved (the orthogonal mesh always doubles and halves). |
Multi-objective and barrier#
Key |
Default |
Description |
|---|---|---|
|
|
Number of objectives returned by the blackbox. |
|
|
Run a Pareto study (required when |
|
|
Reference point for the hypervolume indicator; computed from the front when omitted. |
|
equal |
Objective weights (normalized to sum to one). |
|
|
A feasible point can become a frame centre only if its frame size is at least \(10^{-w}\) times the largest one. |
|
|
Use \((n+1)(n+2)\) Latin hypercube samples at the first search step. |
|
Informational or reserved. |
options#
Key |
Default |
Description |
|---|---|---|
|
|
Random seed. The same seed and input give the same run. |
|
|
Maximum number of blackbox evaluations. |
|
|
Stop when every frame (poll) or mesh (search) size component is below this value. |
|
|
Initial frame size of the orthogonal mesh (scalar or list). |
|
|
Store evaluated points in the cache. Set it to |
|
|
Skip candidates already in the cache. Recommended: |
|
|
Random Householder directions (asymptotically dense). Recommended: |
|
|
|
|
|
Stop evaluating the current poll or search set at the first full success. |
|
|
Evaluate candidate sets in parallel processes. |
|
|
Number of worker processes (capped at the number of CPU cores). |
|
|
|
|
|
Print the evaluation of the starting point and a run summary. |
|
|
Write extra diagnostics (e.g. the sampling-search policy) to |
|
|
Write every evaluation to |
|
|
Write the poll points of each iteration to |
|
|
Reserved. |
|
|
Choose the primary frame centre with the dominance-distance trigger (see Algorithm 2). |
|
|
When |
|
|
Count any improvement of the non-dominated set as a full success (DMS rule). |
|
|
(GMESH) Threshold of the anisotropic enlargement rule. |
|
|
(GMESH) Enable anisotropic enlargement. Note the spelling of the key. |
|
|
(GMESH) Refine the frame every |
|
|
Stop after this many trial points hit the bounds. |
|
Reserved. |
search#
Key |
Default |
Description |
|---|---|---|
|
|
|
|
|
|
|
|
Samples per search step. |
|
|
|
|
|
Space-filling criterion of the Latin hypercube sampler (for example |
|
|
Level weights of the full-factorial sampler. |
|
|
Reserved. |
Tip
"ACTIVE" is the best general-purpose choice. On strongly multimodal problems a
space-filling "LH" search with a few dozen samples often finds a better basin; see the
Eggholder example in Toy problems.
Complete example#
As a Python dictionary:
data = {
"evaluator": {"blackbox": my_function},
"param": {
"name": "demo",
"baseline": [0.5, 0.5],
"lb": [0.0, 0.0],
"ub": [1.0, 1.0],
"var_names": ["x1", "x2"],
"scaling": [1.0, 1.0],
"constraints_type": ["PB", "EB"],
"post_dir": "./post",
},
"options": {
"seed": 0, "budget": 500, "tol": 1e-9,
"check_cache": True, "store_cache": True, "rich_direction": True,
"save_results": True,
},
"search": {"type": "sampling", "s_method": "ACTIVE", "ns": 10},
}
The same problem as a JSON file, with an executable blackbox:
{
"evaluator": {"blackbox": "my_simulator", "path": "./sim"},
"param": {
"name": "demo",
"baseline": [0.5, 0.5],
"lb": [0.0, 0.0],
"ub": [1.0, 1.0],
"var_names": ["x1", "x2"],
"scaling": [1.0, 1.0],
"constraints_type": ["PB", "EB"],
"post_dir": "./post"
},
"options": {
"seed": 0, "budget": 500, "tol": 1e-9,
"check_cache": true, "store_cache": true, "rich_direction": true,
"save_results": true
},
"search": {"type": "sampling", "s_method": "ACTIVE", "ns": 10}
}