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 uses2.0.
plant
Static production system definition:
machines: each machine has a uniqueid, agroup, and a positivespeedmultiplier.process_templates: each job family has afamilyname and a route.job_mix_weights: optional family probabilities inprocess_templatesorder. 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_machinesandnum_job_families: optional validation hints.
dynamics
Arrival-rate pattern:
arrival_pattern:constant,periodic, orlinear_trend.arrival_amplitude: fluctuation strength.arrival_period: period forperiodic; defaults tohorizon / 3when 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 todisturbance; 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_ratepriority_change_rateemergency_job_ratiorework_probabilityptime_change_ratepm_intervalbatch_arrival_probabilityroute_change_probabilitydue_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_startorwarm_start.initial_wip_method:autoormanual.n0_initial: manual initial WIP count for warm-start experiments.
calibration
Generation strategy and budget:
mode:sequential,moo,hybrid, orauto.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 |
|---|---|
|
Normalized model used for this generated instance. |
|
Dynamic event stream. |
|
Concrete jobs, routes, release times, and due dates. |
|
Concrete machines and groups. |
|
Realized target metrics and calibration summary. |
|
Human-readable generation report. |
|
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.