= Conditional algorithm parameter
A <conditional algorithm parameter> matters only when a stated condition on other settings holds. In an <algorithm parameter space>, the condition determines whether the child parameter is active. The ConfigSpace guide samples conditional settings only when their activation conditions are met.<ConfigSpace User Guide>[2nd Example: Conditional hyperparameters; conditions reference]{ref}
For an original example, an algorithm has modes plain and tuned. A depth setting $d\in\{1,2,3,4\}$ affects only tuned mode. The naive rectangular encoding has eight pairs, but the distinct effective settings are
$$
\Theta=\{(\mathrm{plain},\ast),(\mathrm{tuned},1),(\mathrm{tuned},2),(\mathrm{tuned},3),(\mathrm{tuned},4)\}.
$$
The four plain-mode encodings describe the same effective choice, so there are five settings, not eight. The star denotes inactivity; it is not an additional depth value used by the algorithm.
<ParamILS> excludes local moves that change only an inactive parameter, since such a move does not alter effective behavior.<ParamILS: An Automatic Algorithm Configuration Framework by Frank Hutter and others>[Section 3.1, one-exchange neighborhood and conditional-parameter handling]{ref} Switching from plain to tuned activates a choice of depth, while changing an unused plain-mode depth alone supplies no new measured behavior.
A <forbidden parameter combination> instead rules out a joint assignment. Inactive does not mean forbidden, missing data or a numeric zero. Recording the mode and activity conditions makes a returned configuration interpretable, especially when comparing costs or reusing settings in another implementation.
Back to article page