Experiment Results
This page shows what an experiment compares, checks and writes: the comparison of designs, the checks, the observed values, the files and the report.
The tutorial page Parameter Sweeps teaches these features step by step.
What It Is
An experiment gives the numbers that answer a question about the shop: which design keeps the wait under a target, how much one design differs from another, and whether the model agrees with values measured in the real shop. It writes them to files and a report.
How to Use It
Compare Designs
For each measure and each sweep point, a compare pair gives three things: the variant's value minus the baseline's in each replication, the mean of those differences, and the mean's Student t half-width. An interval that does not contain 0 says the designs differ at that confidence level.
Check Results
A check bounds one measure of one variant, or of every variant when variant is left out:
maxandmin: the bound, or both for a range.on: interval, the default, compares the far end of the interval with the bound: the upper end withmaxand the lower end withmin. A mean below the bound only by chance does not pass.on: meancompares the mean, for a quick look, not a decision.
A check whose measure is not in measures is refused. The experiment writes every file before it reports a failed check, so the report shows what failed.
Compare With Observed Values
observed names a CSV of values measured in the real system, with the columns measure, value, unit, population and horizon. Each row is placed beside the simulated interval of variant (the first variant when it is not given), and the report says whether the value lies inside it. A value means something only beside a simulated value of the same kind, so the experiment refuses a row whose unit, population or horizon differs from the measure's:
| Statistic | Unit | Population |
|---|---|---|
wait_* of a task, recorded when an instance starts work |
s |
started instances |
service_* of a task, recorded when an instance finishes |
s |
finished instances |
utilization and utilization_avg |
percent |
end of run and time average |
other *_avg, such as queue_length_avg |
count, or amount for a container |
time average |
task and flow counts, such as finished and started |
count |
count over the horizon |
in_system of a flow and in_progress of a task |
count |
end of run |
other readings, such as queue_length |
count, or amount for a container |
end of run |
The horizon is until minus the warm-up, in seconds or a duration such as 57 min. The horizon describes a run that ends at until, so with a stop or a drain, the observed values must cover the same entities as the simulated ones. The observed comparison checks the model's output against the real system's. It does not fit an input distribution, which Input Fitting covers.
Files
An experiment writes six files to its output folder:
| File | Holds |
|---|---|
experiment.json |
the settings, the question, assumptions, inputs and limits; the model's source and its SHA-256, its sim id and its compiled parameters; desflow, SimPy, NumPy and Python versions; each design's registry values, seeds and the streams each run drew from; the counts' names; the observed comparison |
results.csv |
one row per design, replication and statistic: design, variant, a column per swept path, replication, seed, statistic, kind (measure or count), unit, population and value |
summary.csv |
one row per design and statistic: unit, population, n, mean, half_width, low, high and level |
comparisons.csv |
one row per compared pair, sweep point and measure: both means, difference, half_width, low, high, and the streams in streams_both, streams_baseline_only and streams_variant_only |
checks.csv |
one row per check, design and bound: on, bound, limit, the checked value and passed |
report.md |
the report, built from the five files above |
Read the Report
report.md has the sections below, and a section with nothing to report says so:
- Question, Model and Assumptions.
- Inputs and Provenance: every distribution of the model with its parameters, and its provenance from
inputsor "not stated". - Run Settings.
- Counts: the mean of each count the statistics publish, such as finished orders, for each design.
- Results, with the population each measure is taken over.
- Comparisons, Checks, Observed Comparison and Limits.
- Missing Inputs: what the experiment does not state, such as an input without a provenance. The report names it rather than filling it in.
The middle of the example's report follows. It is for the example's own shop, not the busy hour of the tutorials:
desflow report results/packers builds the report again from the other five files, such as after editing experiment.json by hand.
How It Works
Each replication of each design gives one row per statistic in results.csv, and summary.csv holds each design's mean and interval over its replications. A comparison pairs the replications of two designs that ran with the same seed, so the two runs of a pair draw the same times wherever they share a random stream. comparisons.csv holds the mean difference and its interval, and lists the streams both designs drew from and those only one did. The checks and the observed comparison read these intervals. report.md is built from the other five files. The experiment writes every file before it reports a failed check, so the report shows what failed.