Quodsi Docs

Check the model

Before you trust a model, check two things: does it do what you meant, and does it match reality? This is what lets you defend the answer in front of a client.

Two different questions

Simulation people call these verification and validation. The words are easy to mix up, so think of them this way:

TermPlain questionWho judges
VerificationDid I build what I meant to build?You
ValidationDoes what I built behave like the real process?You and the people who know the process

Do them in that order. Comparing a model with reality is pointless until you know it does what you intended.

Quodsi's Validation tab, the chip at the top of the Model editor, is narrower than validation in this sense. It tells you whether the model can run. A model with a ✓ can still be wrong about the real world.

Check it behaves as intended

Clear the errors

The chip at the top of the Model editor shows ✓ when all is well. A ⚠ with a number counts errors that stop a run, and What-if Analysis stays disabled until you clear them. A ✓ with a number counts warnings. Click the chip to read them, and use Go to source to jump to the problem where it's offered. Read the warnings as well. They don't stop the run, but they may be telling you something.

Do the arithmetic

Work out by hand what the model should do, then compare. Utilization should be close to arrival rate × processing time ÷ capacity. In our check-in example, that is 1 patient every 5 minutes × 4 minutes ÷ 1 desk, or 80%. The model gave 79%. If those had been far apart, we'd have gone looking for the reason.

Count what goes in and out

On Overview, Throughput shows how many entities finished and how many were created. Entities left over at the end of a run are normal, because work is still in progress. A large gap means work is piling up somewhere. Is that what you expect?

Push it to extremes

Break the model on purpose. These are quick tests with obvious right answers:

TryYou should see
Slow arrivals right downAlmost no waiting. Time in system close to the sum of the processing times.
Give a step a very large CapacityThe queue at that step disappears, and the constraint moves somewhere else or vanishes.
Make arrivals faster than the process can handleThe queue keeps growing. Verdict shows Overloaded or Fell behind.
Send all the work down one pathThe other path sees nothing.

Try these as what-ifs, so your model stays as it is. See Test your changes.

Watch it

Run with Include animation ticked and watch work move through your diagram on the Animation tab. Wrong routing and steps nobody visits are easy to spot by eye, even when they don't stand out in a table.

Compare it with what really happens

Set your targets first

Before you look at results, write down what the model should reproduce. Use numbers the client already trusts. Agree how close is close enough, and write down the conditions, such as "typical weekdays in March".

MeasureReal valueClose enoughSource
Patients per weekday140Within 5%Registration system, March
Average door-to-discharge95 minutesWithin 10%Registration system, March
Busiest stepProvider examSame stepCharge nurse
These values are made up for illustration.

Use data you didn't use to build the model where you can. If you set the inputs from March data, check against April. A model will always look good against the numbers it was built from.

Run the Baseline and compare

Look at the spread across replications, the repeated runs of the same period, not only the average. Real days vary too. A real value inside the model's range is a much better sign than one average that happens to match. Also compare the pattern: the right step should be the constraint, and queues should build where staff say they do.

Show it to the people who do the work

Sit down with a supervisor or a front-line expert and play the animation. Ask, "Does this look like your Tuesday?" They'll spot things no dataset shows. You'll also gain allies for when the results come out.

When it doesn't match

Resist the urge to nudge numbers until the output looks right. A model tuned that way matches for the wrong reasons and won't predict the effect of a change. Look for the cause, in this order:

  1. Inputs. Does a processing time include waiting? Are the arrivals demand or completions?
  2. Missing logic. Is there a shared resource, rework loop, batch or break the model leaves out? Shared resources need the Intermediate view.
  3. A flat assumption. Does one capacity number stand in for shifts that really change through the day?
  4. Start-up. See below.
  5. The real data. Sometimes the model is right and the client's report is wrong. It happens, and it's useful to find out.

Settings that affect the comparison

These live under Advanced Settings on the Model editor's Basic tab, and need the Intermediate view.

When you edit a model after a run, older results still reflect the older version. To bring a scenario up to date, re-run it and tick Use latest model definition.

What you should have now

You don't need a perfect model. You need one that is good enough for this decision, and you need to be able to show why.

Next