param_domains_cli_variables — the same sweep, with no directories

Sources: examples/workflow_param_domains_cli — settings in workflows/param_domains_cli_variables/.

workflow_settings.yml
workflows:
  - param_domains_cli_variables + max_speed/* + num_vehicles/* + signal_timing/* + road_length/*

Identical sources, identical command, identical metrics — and no domain directories at all. The four sweeps are declared as variables instead:

workflows/param_domains_cli_variables/_settings.yml
tasks:
  - name: main
    commands:
      - python3 simulate_traffic.py --max_speed ${max_speed} --num_vehicles ${num_vehicles} --signal_timing ${signal_timing} --road_length ${road_length}

variables:
  max_speed:
    type: list
    unit: kmh
    settings:
      list: [35, 45, 55]

  num_vehicles:
    type: list
    settings:
      list: [100, 300]

  signal_timing:
    type: list
    unit: s
    settings:
      list: [15, 45]

  road_length:
    type: list
    unit: km
    settings:
      list: [1, 5]

Selected the same way, with + max_speed/*, and named the same way — unit: kmh produces max_speed/35kmh, reproducing by declaration what the directory version encoded in its file names. This is the virtual parameter domain mechanism, and reading the two workflows side by side is the fastest way to understand it.

3 × 2 × 2 × 2 = 24 runs, from twenty lines of YAML and not one file.

Tip

Prefer variables whenever the values are just values. Keep directories when a configuration is a fragment of source code rather than a scalar — which is the usual case for RTL, and the unusual case for workflows.

Where to go next