Skip to content

Exact alignment conformance

The alignment plugin takes an EventLog and an AcceptingPetriNet and computes, for every distinct trace variant, the cheapest alignment between the observed trace and a firing sequence the model permits. It returns an AlignmentSet: per variant, the alignment moves and their costs.

This is exact. It is not a token-replay approximation and it is not sampled. The variant-level factoring is what makes it affordable — a log with 2,812 cases and 40 variants costs 40 alignments, not 2,812.

Three kinds, and the interesting information is in which kind dominates:

  • Synchronous move — log and model agree. Nothing to see.
  • Log move — the log did something the model does not allow at that point. Either the model is wrong, or the process is not following it.
  • Model move — the model requires something the log did not record. Either a step was skipped, or it is not being logged at all.

A cluster of model moves on a single transition usually means an activity is missing from the data rather than missing from the process. That distinction is worth making explicitly before anyone concludes there is a compliance problem.

The plugin reports a fitness figure derived from alignment cost. Treat it as one of four dimensions, not a score:

  • Fitness — can the model reproduce the log?
  • Precision — does the model allow much the log never did?
  • Generalisation — will it accept reasonable unseen behavior?
  • Simplicity — can a person read it?

A model with fitness 1.0 may be the flower model that permits everything. Reporting fitness alone is the most common way to make a discovered model look better than it is.

The Inductive Visual Miner plugin runs the same exact alignment kernel and animates the result over the model — cases flowing through, deviations visible where they occur, a time scrubber over the log’s period.

It is the same computation, not a lighter approximation. The animation is a rendering of an exact result, which is why it is worth putting in front of a stakeholder: what they see is what the numbers say.

Alignment is the expensive step in most pipelines. Cost grows with model size and with the number of distinct variants, and a large, highly concurrent model with thousands of variants is where a browser tab starts to hurt.

Two things to do before concluding it is too slow:

  1. Filter to the variants you care about. The tail of one-off variants often dominates cost and rarely changes the conclusion.
  2. Move execution rather than the analysis. The same plugin runs on a local engine with real threads and no tab memory ceiling — see Engines and scaling.

For OCEL data there is a separate path: OCEL/OCPN Replay replays timestamped events against an object-centric Petri net and reports where tokens go missing, and OCPN Comparison diffs two nets per object type with τ-abstracted differences called out. See Object-centric techniques.

Object-centric techniques.