Domain parameters define the search space for your optimization campaign. Understanding parameter types, bounds, and constraints is essential for setting up an effective campaign.
MatCraft supports three parameter types:
Real-valued parameters with lower and upper bounds. This is the most common type.
- name: temperature
type: continuous
bounds: [200, 800]
unit: "°C"The optimizer searches the continuous range between the bounds. CMA-ES handles continuous parameters natively.
Integer-valued parameters or parameters that can only take specific numeric steps:
- name: num_layers
type: discrete
bounds: [1, 10]
step: 1 # Optional, defaults to 1
- name: concentration
type: discrete
bounds: [0.1, 1.0]
step: 0.1 # Only values 0.1, 0.2, ..., 1.0Discrete parameters are handled by rounding the continuous CMA-ES output to the nearest valid step.
Parameters that take one of a fixed set of non-numeric values:
- name: solvent
type: categorical
choices: ["DMF", "DMSO", "NMP", "DMAc"]Categorical parameters are encoded using one-hot encoding internally. For k categories, this adds k-1 dimensions to the search space (one category is treated as the reference).
Bounds define the range of valid values. For best results:
# Too tight -- may miss the optimum
bounds: [0.48, 0.52]
# Too wide -- wastes evaluations on infeasible regions
bounds: [0.0, 1.0]
# Good -- covers the feasible range based on domain knowledge
bounds: [0.3, 0.7]Units are metadata — they do not affect the optimization. They are displayed in results and visualizations for clarity:
- name: pressure
bounds: [1, 100]
unit: "bar"You can specify a default or initial value that the optimizer uses as a starting point:
- name: temperature
bounds: [200, 800]
default: 450 # CMA-ES will center initial distribution hereMatCraft automatically normalizes all parameters to [0, 1] internally for the optimizer. This ensures that parameters with different magnitudes (e.g., temperature in hundreds of degrees vs. concentration in fractional percentages) are treated equally. You do not need to manually scale your parameters.