Theme
Common Errors and Messages
A comprehensive troubleshooting dictionary for error messages issued by Jupiter, along with diagnostics for anomalous simulation outputs.
Error Message Dictionary
INVALID_EXPRESSION: unknown identifier 'X'
A guard condition or metric formula references a name that does not exist in the model.
- Is the identifier spelled with exact casing? Identifiers are case-sensitive (
Queueis distinct fromqueue). - Is the
#prefix missing? To reference place token counts, write#Queue. Without#, the engine searches for a parameter and fails. - Was a parameter renamed? When renaming a parameter, update any formulas that reference the old name.
INVALID_EXPRESSION: unexpected token
The expression contains syntax errors or invalid characters:
- Trailing operators at the end of a line (e.g.,
E{#Queue} +). - Unbalanced parentheses or braces
E{ }. - An
IFclause without its requiredELSEcounterpart. - Scientific notation (
1e-6is invalid; use0.000001). - Commas used as decimal separators (
0,5is invalid; use0.5).
INVALID_DISTRIBUTION: transition 'T' has a non-positive mean delay
A timed transition received a duration less than or equal to zero.
- Mean delays must be strictly positive ($> 0$).
- If the duration comes from a parameter, verify its value.
- In scenario sweeps using Consider as rate, ensure the sweep range does not contain zero.
NON_FINITE_METRIC: metric 'X' produced a non-finite value (Infinity/NaN)
A metric attempted to divide by zero.
- Guard potentially zero denominators using the
IFclause:IF divisor > 0 THEN dividend / divisor ELSE 0 - In transient simulations, replace divisions by instantaneous counters with multiplications by arrival delays.
DUPLICATE_NAME: duplicate place/transition name 'X'
Two nodes share the exact same identifier.
- Every place and transition must have a unique name because mathematical formulas rely on unambiguous identifiers.
MAX_EVENTS_REACHED
The simulation exceeded the configured safety cap for discrete events.
- Fix 1: Reduce the simulation time in the configuration modal.
- Fix 2: Increase the maximum event limit under Advanced Options.
- Frequently occurs when ultra-fast microsecond transitions are paired with very long simulation horizons.
INVALID_DEFINITIONS: cyclic dependencies
Two or more parameters depend mutually on one another in a circular loop.
- Designate one parameter as the independent baseline and define the others as unidirectional functions of it.
INVALID_JSON: unknown variant
The model includes a transition configured with a theoretical distribution not supported by the simulation engine.
- The stochastic engine simulates Exponential, Normal, and Deterministic distributions. Set the transition to one of these three.
Diagnosing Anomalous Results
When a model runs without error messages but produces numbers that do not match expectations, consult these checks:
1. Results double when doubling simulation time
- Cause: The system is saturated (arrival rate exceeds maximum service capacity).
- In saturated queues, tokens accumulate indefinitely; no finite steady-state equilibrium exists. Reduce load or expand capacity.
2. Sizing up workers does not improve response time
- Cause: The timed service transition is set to Single Server (S).
- Change the transition policy to Infinite Server (I) so workers process items concurrently.
3. Orders-of-magnitude discrepancies (60x, 1000x, or 3600x)
- Cause 1 (Time unit mismatch): The model mixes seconds and minutes across transitions. Check the global time unit in the right inspector panel.
- Cause 2 (Rate vs. delay confusion): An arrival rate was entered into a field expecting a mean delay. Remember: in Jupiter, all duration fields are mean delays. Convert $\text{delay} = 1 / \text{rate}$.
4. Throughput falls short of arrival rate
- Check component utilization: a resource has reached 100% capacity (saturation bottleneck).
- If capacity buffers exist, evaluate Probability / Blocking to quantify dropped items.
- Verify that arc multiplicities are balanced and not destroying tokens unintentionally.
5. A metric reports exactly zero in transient plots
- The metric likely divides by a transient place that is empty at most sampling instants. Use the stable formulation shown in Response Time.
6. Debugging complex models with bisection
If a large model produces unexpected dynamics, use the bisection method:
- Remove or bypass half of the pipeline with a single dummy transition.
- Simulate the simplified model and confirm that outputs match analytical expectations.
- Reintroduce components one by one until the exact source of discrepancy is isolated.
Next steps
Review the formal grammar and token rules in Supported Syntax and Expressions.