Generators
Complete catalog of 18 generator types for realistic industrial signal simulation — sine, noise, random walk, correlated, transport delay, and more.
Generators produce member values each tick. Miravo ships 18 generator types organized into three categories.
Source Generators
Section titled “Source Generators”These produce values from their own configuration without requiring input from other members.
Sinusoidal oscillation with optional noise.
generator: type: sine center: 1750 # Supports $param.X amplitude: 50 period: 3600 noise: 0.01Formula: center + amplitude * sin(2 * pi * t / period) + N(0, noise * |center|)
Gaussian noise around a center value.
generator: type: noise center: 22.0 # Supports $param.X stddev: 0.5Formula: center + N(0, stddev)
random-walk
Section titled “random-walk”Bounded random walk. Stateful — remembers position between ticks.
generator: type: random-walk min: 0 max: 100 step: 0.5Cycles through a list of values at fixed intervals. Fully deterministic, no RNG.
generator: type: step values: [0, 25, 50, 75, 100] interval: 60Linear trajectory from a start value. Holds after duration.
generator: type: ramp start_value: 0 rate: 10 duration: 300mean-reverting-noise
Section titled “mean-reverting-noise”Ornstein-Uhlenbeck process. Bounded variance unlike random-walk.
generator: type: mean-reverting-noise mean: 50 # Supports $param.X tau: 10 sigma: 2.0Formula: value = mean + alpha * (prev - mean) + sigma * sqrt(1 - alpha^2) * N(0, 1) where alpha = exp(-dt / tau)
timetable
Section titled “timetable”Piecewise interpolation over time-value waypoints. Supports linear and step interpolation.
generator: type: timetable repeat: true interpolation: step points: - { time: 0, value: 0 } - { time: 21600, value: 1200 } - { time: 64800, value: 900 } - { time: 86400, value: 0 }state-machine
Section titled “state-machine”Probabilistic state transitions. Stateful.
generator: type: state-machine initial: "idle" transitions: - from: idle to: running probability: 0.1 - from: running to: idle probability: 0.05 - from: running to: faulted on: faultThe on: "fault" trigger fires only when the instance has active faults.
Dynamic Generators
Section titled “Dynamic Generators”These transform input from other members, parameters, or inline sub-generators.
Input Resolution
Section titled “Input Resolution”All dynamic generators accept an input field:
input: { member: "speed_feedback" } # Read from an earlier memberinput: { param: "rated_rpm" } # Read from a parameterinput: { generator: { type: noise, center: 50, stddev: 1 } } # Inline sub-generatorfirst-order-lag
Section titled “first-order-lag”PT1 low-pass filter. Models thermal lag, sensor response.
generator: type: first-order-lag tau: 30 gain: 1.0 # Supports $param.X bias: 0 # Supports $param.X input: { member: "speed_feedback" }integrator
Section titled “integrator”Accumulator with clamp or wrap. Models runtime hours, tank levels, energy totals.
generator: type: integrator gain: 0.000278 bias_rate: 0 clamp: [0, 100000] input: { member: "power_draw" }transport-delay
Section titled “transport-delay”Delays input by a configurable time. Ring buffer with interpolation.
generator: type: transport-delay delay: 15 # Supports $param.X interpolation: linear input: { member: "entry_signal" }slew-rate-limiter
Section titled “slew-rate-limiter”Limits rate of change with asymmetric up/down rates.
generator: type: slew-rate-limiter rate_up: 100 rate_down: 50 input: { member: "speed_command" }second-order
Section titled “second-order”Second-order dynamic response. Models underdamped overshoot or overdamped settling.
generator: type: second-order omega_n: 0.5 zeta: 0.3 gain: 1.0 # Supports $param.X bias: 0 # Supports $param.X input: { member: "load_setpoint" }hysteresis-relay
Section titled “hysteresis-relay”Two-threshold switching with dead band. String or numeric output.
generator: type: hysteresis-relay threshold_rising: 8.5 # Supports $param.X threshold_falling: 7.5 # Supports $param.X output_high: 1 output_low: 0 input: { member: "header_pressure" }weighted-sum
Section titled “weighted-sum”Linear combination of multiple inputs.
generator: type: weighted-sum bias: 0 # Supports $param.X terms: - input: { member: "inflow_rate" } weight: 1.0 # Supports $param.X - input: { member: "outflow_rate" } weight: -1.0Passes input through only when a Boolean member is true. Used for run/stop gating.
generator: type: gate enabled_member: running disabled_value: 0 input: { member: "speed_command" }Composite Generators
Section titled “Composite Generators”correlated
Section titled “correlated”Derives a value from another member with a linear transform.
generator: type: correlated source: speed_feedback factor: 0.008 # Supports $param.X offset: 2.0 # Supports $param.X noise: 0.02Formula: factor * source + offset + N(0, noise * |base|)
The source member must be declared earlier in the model’s members map.
health-dependent
Section titled “health-dependent”Delegates to different sub-generators based on the current lifecycle stage.
generator: type: health-dependent stages: healthy: type: noise center: 2.5 stddev: 0.3 degraded: type: noise center: 4.0 stddev: 0.8 critical: type: noise center: 7.0 stddev: 1.5Parameter References
Section titled “Parameter References”Many generator fields support $param.X references. These resolve to the instance’s parameter value at runtime:
parameters: rated_rpm: type: float default: 1750
members: speed: kind: variable data_type: Double generator: type: noise center: "$param.rated_rpm" stddev: 5Supported fields: center (sine, noise), mean (mean-reverting-noise), factor/offset (correlated), gain/bias (first-order-lag, second-order), delay (transport-delay), thresholds (hysteresis-relay), bias/weight (weighted-sum).