Input Model And Instance Format

This page documents the JSON files users interact with most often: configuration files passed to dsbx-gen gen, and artifacts emitted by the generator.

Minimal Input Model

The tutorial model is stored at docs/examples/minimal_input_model.json.

{
  "meta": {
    "grid": 1.0,
    "seed": 42,
    "version": "2.0"
  },
  "plant": {
    "machines": [
      {
        "id": "cut-1",
        "group": "cutting",
        "speed": 1.0
      },
      {
        "id": "cut-2",
        "group": "cutting",
        "speed": 1.1
      },
      {
        "id": "asm-1",
        "group": "assembly",
        "speed": 1.0
      },
      {
        "id": "test-1",
        "group": "testing",
        "speed": 0.9
      }
    ],
    "process_templates": [
      {
        "family": "standard",
        "route": [
          {
            "machine_group": "cutting",
            "process_time": {
              "dist": "const",
              "mean": 6.0,
              "scv": 0.0
            }
          },
          {
            "machine_group": "assembly",
            "process_time": {
              "dist": "const",
              "mean": 8.0,
              "scv": 0.0
            }
          },
          {
            "machine_group": "testing",
            "process_time": {
              "dist": "const",
              "mean": 5.0,
              "scv": 0.0
            }
          }
        ]
      },
      {
        "family": "express",
        "route": [
          {
            "machine_group": "cutting",
            "process_time": {
              "dist": "const",
              "mean": 5.0,
              "scv": 0.0
            }
          },
          {
            "machine_group": "testing",
            "process_time": {
              "dist": "const",
              "mean": 4.0,
              "scv": 0.0
            }
          }
        ]
      }
    ],
    "job_mix_weights": [
      0.75,
      0.25
    ]
  },
  "scale": {
    "horizon": 240.0,
    "jobs_total": 40
  },
  "dynamics": {
    "arrival_pattern": "periodic",
    "arrival_amplitude": 0.25,
    "arrival_period": 80.0
  },
  "targets": {
    "rho_global": 0.65,
    "ddt": 1.5,
    "scv_a": 1.0,
    "scv_p": 0.5,
    "disturbance": 0.05
  },
  "dynamic_scenarios": {
    "priority_change_rate": 0.05,
    "emergency_job_ratio": 0.05,
    "emergency_priority": -1,
    "normal_priority_change_value": 0,
    "ptime_change_rate": 0.02,
    "ptime_change_multiplier": [
      0.8,
      1.2
    ],
    "batch_arrival_probability": 0.05,
    "batch_size_mean": 3.0,
    "batch_size_std": 1.0
  },
  "evaluation": {
    "mode": "cold_start",
    "initial_wip_method": "auto"
  },
  "calibration": {
    "mode": "sequential",
    "max_steps": 5
  },
  "outputs": {
    "path": "runs/minimal"
  }
}

Run it with:

dsbx-gen gen -i docs/examples/minimal_input_model.json -o runs/minimal

Top-Level Sections

meta

General reproducibility metadata:

  • seed: random seed used by generation.

  • grid: report and segment time grid.

  • version: schema version. The current layered schema uses 2.0.

plant

Static production system definition:

  • machines: each machine has a unique id, a group, and a positive speed multiplier.

  • process_templates: each job family has a family name and a route.

  • job_mix_weights: optional family probabilities in process_templates order. If omitted, families are sampled uniformly.

Every route step references a machine group defined in machines.

scale

Problem size and horizon:

  • horizon: simulation time horizon.

  • jobs_total: optional fixed number of generated jobs. When present, it overrides derivation from target utilization.

  • num_machines and num_job_families: optional validation hints.

dynamics

Arrival-rate pattern:

  • arrival_pattern: constant, periodic, or linear_trend.

  • arrival_amplitude: fluctuation strength.

  • arrival_period: period for periodic; defaults to horizon / 3 when omitted.

targets

Target characteristics to calibrate:

  • rho_global: global utilization target.

  • rho_bottleneck: optional time-windowed group utilization targets.

  • load_cv: optional load imbalance target across machine groups.

  • ddt: due-date tightness factor.

  • scv_a: squared coefficient of variation for arrivals.

  • scv_p: squared coefficient of variation for processing times.

  • disturbance: disturbance level, such as downtime share.

  • availability: alternative to disturbance; do not set both.

rho_global, ddt, scv_a, scv_p, and disturbance can also be lists for batch generation. When lists are used, all list lengths must match.

dynamic_scenarios

Probabilities and parameters for dynamic events:

  • cancellation_rate

  • priority_change_rate

  • emergency_job_ratio

  • rework_probability

  • ptime_change_rate

  • pm_interval

  • batch_arrival_probability

  • route_change_probability

  • due_date_change_probability

Lower priority numbers represent higher urgency. For emergency jobs, use an emergency_priority value less than or equal to normal_priority_change_value.

evaluation

Experiment initialization:

  • mode: cold_start or warm_start.

  • initial_wip_method: auto or manual.

  • n0_initial: manual initial WIP count for warm-start experiments.

calibration

Generation strategy and budget:

  • mode: sequential, moo, hybrid, or auto.

  • max_steps: sequential calibration step budget.

  • moo_population_size, moo_n_generations: MOO budget.

  • hybrid_population_size, hybrid_n_generations: hybrid budget.

  • seq_tol_*: optional per-metric sequential tolerances.

For quick smoke tests, use a small max_steps. For final benchmark generation, use larger budgets and keep the full final_metrics.json and report.md.

outputs

Default output location. dsbx-gen gen -o ... overrides this field.

Generated Files

After generation, downstream commands expect a directory with these files:

File

Purpose

input_model.json

Normalized model used for this generated instance.

events.jsonl

Dynamic event stream.

static_jobs.json

Concrete jobs, routes, release times, and due dates.

static_machines.json

Concrete machines and groups.

final_metrics.json

Realized target metrics and calibration summary.

report.md

Human-readable generation report.

pareto_info.json

MOO/hybrid Pareto metadata, when available.

Use the generated directory with dsbx-agent run -d, not the original JSON configuration file.

Validation

Validate a generated event stream:

dsbx-eval check-events \
  -c runs/minimal/input_model.json \
  -e runs/minimal/events.jsonl \
  --strict-events \
  --fail-on-error

For large benchmark collections, run this validation before launching expensive agent sweeps.