Stability Intelligence
Chapter 5 — Stability Intelligence
Section titled “Chapter 5 — Stability Intelligence”Stability Intelligence is the second intelligence layer in RAPID AI. It answers: Is the system stable or drifting toward failure? While Signal Intelligence (Chapter 4) analyzes individual components and signals, Stability Intelligence fuses evidence across the entire machine system to produce a unified health assessment. Two modules work together: Module C (SSI Fusion) and the AESF (Acceleration-Entropy Stability Framework).
Module C — SSI Fusion
Section titled “Module C — SSI Fusion”Purpose
Section titled “Purpose”No single signal tells the whole story. A bearing may show elevated kurtosis while the coupling vibration is normal and the foundation is stable. Or the foundation may be loose while the bearings appear healthy — but the loose foundation is amplifying forces that will destroy the bearings within weeks. Module C fuses all component-level evidence into a unified System Stability Index (SSI) and System State.
System Profiles
Section titled “System Profiles”Different machine types have different weight distributions. A centrifugal pump places more diagnostic importance on fluid flow and bearings than on coupling. A gearbox places more weight on gears and lubrication. Module C uses system profiles to encode this engineering knowledge:
Example — Pump Train Horizontal (PROFILE_PUMP_A):
| Block | Weight | Min Required |
|---|---|---|
| foundation | 0.15 | Yes |
| ac_motor | 0.10 | Yes |
| coupling | 0.10 | No |
| shafts | 0.10 | Yes |
| afb (bearings) | 0.25 | Yes |
| fluid_flow | 0.30 | Yes |
Weights auto-normalize when optional blocks are absent. If coupling data is unavailable, the remaining weights scale up proportionally so that SSI remains on the 0-1 scale.
Block Score Rules (BSR001-BSR007)
Section titled “Block Score Rules (BSR001-BSR007)”Each component block receives a score based on seven rules evaluated in priority order (first match wins):
| Rule | Priority | Condition | Block Score | Block State |
|---|---|---|---|---|
| BSR007 | 1 (highest) | B_match_score >= 0.90 | 0.90 | critical |
| BSR001 | 2 | trend == "accelerating" AND conf >= 0.70 | 0.85 | unstable |
| BSR003 | 2 | trend == "step" AND conf >= 0.70 | 0.80 | unstable |
| BSR005 | 3 | B_match >= 0.70 AND (trend == "stable" OR conf < 0.50) | 0.55 | watch |
| BSR002 | 4 | trend == "drifting" AND conf >= 0.60 | 0.65 | degrading |
| BSR004 | 5 | trend == "chaotic" AND process_corr >= 0.70 | 0.35 | process-driven |
| BSR006 | 6 (lowest) | B_match < 0.30 AND trend == "stable" | 0.15 | healthy |
The distinction between BSR004 (process-driven, score 0.35) and BSR002 (degrading, score 0.65) is important. Chaotic vibration that correlates with process variables (flow changes, pressure transients) indicates a process issue, not a mechanical failure. The lower score prevents false maintenance triggers while flagging the condition for process engineering review.
SSI Computation
Section titled “SSI Computation”SSI = Sum(weight_i * block_score_i) / Sum(weight_i) clamped to [0, 1]SSI to System State (CST001-CST004)
Section titled “SSI to System State (CST001-CST004)”| Threshold | SSI Range | System State | Severity |
|---|---|---|---|
| CST001 | < 0.30 | healthy | normal |
| CST002 | 0.30 - 0.60 | watch | watch |
| CST003 | 0.60 - 0.80 | warning | warning |
| CST004 | >= 0.80 | alarm | alarm |
Critical Instability Override
Section titled “Critical Instability Override”A crucial safety mechanism: if Module B.3 reports stability_state == "Critical_Instability", then SSI = max(SSI, 0.70) regardless of the computed value. This prevents a scenario where individual component scores appear moderate but the system’s entropy has reached critical levels — indicating impending catastrophic behavior that the component-level analysis cannot capture.
This override embodies the PLS3D principle from Chapter 2: sometimes the failure is not in any single component but in the system dynamics, and the entropy measurement catches what component-level analysis misses.
Outputs
Section titled “Outputs”Module C produces: SSI (0-1), System_State (healthy/watch/warning/alarm), severity_level, top_contributors[] (ranked by their contribution to SSI), recommended_action, SSI_components (per-block breakdown), and data_quality_flag. The top_contributors list is essential for the dashboard — it tells the reliability engineer which components are driving the system state, enabling focused investigation rather than broad inspection.
AESF — Acceleration-Entropy Stability Framework
Section titled “AESF — Acceleration-Entropy Stability Framework”Purpose
Section titled “Purpose”While Module C quantifies how unhealthy the system is, AESF characterizes what kind of instability is developing. It defines the machine’s operating “climate” across four dimensions: coherence, disorder, coupling, and transient instability.
AESF was developed to address a limitation of SSI: two machines can have the same SSI score but face completely different failure trajectories. One may be experiencing gradual bearing wear (localized, predictable). The other may be experiencing foundation looseness coupled with thermal growth (systemic, chaotic). AESF distinguishes these regimes.
Eight Input Features
Section titled “Eight Input Features”AESF takes eight normalized (0-1) features from the signal processing pipeline:
| Feature | Domain | What It Measures |
|---|---|---|
| E001: SpectralEntropy_LF | Low frequency (0-10 Hz) | Structural looseness drift |
| E002: SpectralEntropy_MF | Mid frequency (10-1000 Hz) | Modal coupling, running speed harmonics |
| E003: SpectralEntropy_HF | High frequency (>1000 Hz) | Impacts, cavitation, friction |
| E004: Line_to_Noise_Ratio | Full spectrum | Coherence of expected forcing lines |
| E005: Spectral_Flatness | Full spectrum | How noise-like the spectrum is |
| E006: Kurtosis_TWF | Time domain | Impulsiveness of waveform |
| E007: Crest_Factor | Time domain | Peak-to-RMS ratio |
| E008: Jerk_Index | Time domain | Derivative of acceleration — abrupt instability |
Four Composite Indices
Section titled “Four Composite Indices”AESF computes four indices, each scaled 0-100:
Stability Index (SI) — measures coherence. How well does the machine’s energy stay organized in expected spectral lines?
SI = 100 * (0.40 * LNR_n + 0.30 * LP_n + 0.20 * RLE_n + 0.10 * (1 - J_n))High SI means energy is concentrated in known forcing frequencies (1x, 2x, gear mesh, blade pass). Low SI means energy is spreading into unexpected locations.
Entropy Index (EI) — measures disorder. How much spectral energy is in noise versus discrete lines?
EI = 100 * (0.35 * SE_n + 0.25 * SF_n + 0.20 * BB_n + 0.20 * IMP_n)High EI means the spectrum is becoming flat and noise-like — energy is dispersing rather than concentrating.
Coupling Severity Score (CSS) — measures interaction. Are sidebands growing? Is energy migrating between frequency bands?
CSS = 100 * (0.40 * SB_n + 0.25 * HS_n + 0.20 * CBM_n + 0.15 * PI_n)High CSS indicates that failure mechanisms are coupling across components — for example, bearing damage modulating gear mesh frequencies.
Jerk Instability Index (JII) — measures abruptness. Are there sudden transient events?
JII = 100 * (0.50 * J_n + 0.25 * CF_n + 0.25 * K_n)High JII indicates impulsive events that may not show up in averaged measurements — cage failures, loose parts striking intermittently, incipient rubbing.
Pattern Rules (ER001-ER004)
Section titled “Pattern Rules (ER001-ER004)”Four rules identify specific fault clusters from the AESF indices:
| Rule | Pattern | Likely Fault | Gating Action |
|---|---|---|---|
| ER001 | Entropy rising + LNR falling + harmonics rising | Looseness / Rub | Check structural joints |
| ER002 | HF entropy rising + high kurtosis | Bearing / Impact | Run envelope analysis |
| ER003 | MF/HF broadband rising with process variable | Flow instability | Check cavitation / turbulence |
| ER004 | Flatness high + broadband dominant | Diffuse disorder | Escalate inspection |
These patterns encode decades of diagnostic experience. ER002, for instance, captures the classic bearing damage signature: high-frequency entropy increases (damage creates broadband noise in the HF band) while kurtosis rises (damage creates impulsive events). Neither metric alone is diagnostic, but together they point specifically to bearing impact damage.
Five Stability States (S0-S4)
Section titled “Five Stability States (S0-S4)”| State | SI | EI | CSS | JII | Description | Action |
|---|---|---|---|---|---|---|
| S0 | 80-100 | 0-20 | 0-20 | 0-20 | Coherent Stable | Normal monitoring |
| S1 | 60-80 | 20-40 | 20-40 | 20-40 | Localized Disturbance | Investigate early fault |
| S2 | 40-60 | 40-60 | 40-60 | 40-60 | Coupled Redistribution | Detailed diagnostic |
| S3 | 20-40 | 60-80 | 60-80 | 60-80 | Diffuse Disorder | Plan maintenance |
| S4 | 0-20 | 80-100 | 80-100 | 80-100 | Critical Transition | Immediate action |
The progression from S0 to S4 maps to the PLS3D framework from Chapter 2:
- S0 = Point level awareness (isolated, stable readings)
- S1 = Line level (single parameter trending)
- S2 = Surface level (multiple parameters correlating)
- S3 = 3D volume (system-wide disorder)
- S4 = Beyond 3D (the system is transitioning toward a fundamentally different operating regime)
The Diagnostic Value of AESF
Section titled “The Diagnostic Value of AESF”AESF provides something that SSI alone cannot: a characterization of the failure trajectory. Two machines at SSI = 0.65 (warning state) may be in very different situations:
-
Machine A: SI = 70, EI = 30, CSS = 20, JII = 15 — State S1. Energy is still coherent, but a localized disturbance (probably a single-point bearing defect) is developing. The failure is predictable and manageable.
-
Machine B: SI = 35, EI = 55, CSS = 60, JII = 45 — State S2/S3. Energy is dispersing, coupling between components is increasing, and transient events are occurring. The failure is systemic and accelerating. This machine needs immediate attention.
SSI tells you the severity. AESF tells you the character. Together, they provide the stability intelligence that Module D needs to select the right health stage and RUL model.
How Stability Intelligence Feeds Engineering Intelligence
Section titled “How Stability Intelligence Feeds Engineering Intelligence”The outputs of Module C and AESF flow into the Engineering Intelligence layer (Chapter 6):
- SSI feeds Module D for health stage classification and RUL estimation
- System_State feeds Module E for priority scoring and action selection
- AESF State feeds Module D for mechanism inference (certain failure mechanisms are more likely in certain AESF states)
- Top contributors feed Module E for targeted maintenance actions
- CSS (coupling severity) feeds Module G as a trigger for contradiction analysis — high coupling severity often indicates design contradictions
The Diagnostic Power of Fusion
Section titled “The Diagnostic Power of Fusion”To appreciate why fusion matters, consider a real-world scenario.
A horizontal centrifugal pump (P-101A) shows the following evidence from Signal Intelligence:
- Module B: AFB03 matched (lubrication starvation) with confidence 0.45 — below the 0.70 RCM activation threshold
- Module B.2: Trend class = “drifting” with slope 0.03 (just above the drift threshold of 0.02), severity 0.24
- Module B.3: SE = 0.42, TE = 0.38, DE = 0.31. SI = 0.62. State: Drifting (SR02). Entropy slope dSE/dt = 0.015
No single evidence source is alarming. The AFB03 match is below confidence threshold. The trend is barely drifting. The entropy is in the middle range. A traditional threshold-based system would show green.
But Module C fuses these signals using the confidence compounding formula:
confidence = 1 - (1 - 0.45)(1 - 0.24)(1 - 0.38) = 0.74The combined confidence is 0.74 — above the 0.70 RCM activation threshold. Module C assigns a block score of 0.65 (BSR002: drifting with confidence >= 0.60), and the weighted SSI computation places the system at 0.38 (watch state). The system transitions from “looks fine” to “investigate” — a transition that individual metrics could not trigger alone.
This is the diagnostic power of fusion: multiple weak signals compound into actionable intelligence. The pump bearing is not yet in trouble, but it is moving in a direction that, if unchecked, will lead to trouble. The maintenance planner receives a watch alert with the specific physics: “Bearing lubrication condition showing early signs of degradation. Kurtosis slightly elevated, trend drifting upward, entropy increasing. Recommend lubrication service at next available window.”
Three months later, the same pump shows AFB03 confidence at 0.72, accelerating trend with slope 0.08, and SI dropped to 0.44. The fused confidence is now 0.93. SSI has reached 0.71 (warning state). The system escalates to ACT002 (lubrication service) with priority 72 (within 24 hours). The bearing is saved because the fusion layer caught the degradation trajectory while individual metrics were still below alarm.
This scenario plays out across hundreds of assets simultaneously. The fusion layer is what makes it possible to monitor a large plant without drowning in false alarms or missing genuine developing faults.
The Stability Intelligence layer transforms component-level evidence into system-level understanding. The next chapter shows how that understanding is converted into engineering decisions: health staging, maintenance planning, reliability modeling, and design-out engineering.
5.5 — SEDL Entropy Formulas (Production)
Section titled “5.5 — SEDL Entropy Formulas (Production)”The SEDL (Spectral-Entropy Diagnostic Layer) in Module B.3 computes three entropy measures from the raw signal, each normalized to the [0, 1] interval so that maximum disorder always equals 1.0 regardless of signal length or axis count.
Shannon Entropy Definitions
Section titled “Shannon Entropy Definitions”All three entropies use the same Shannon formula with domain-specific normalization:
SE = −Σ(p_i × ln(p_i)) / ln(N) Spectral Entropy (frequency-domain)TE = −Σ(p_i × ln(p_i)) / ln(N) Temporal Entropy (time-domain)DE = −Σ(p_i × ln(p_i)) / ln(3) Directional Entropy (3 axes: H, V, A)-
SE (Spectral Entropy): The probability distribution
p_iis constructed from the power spectral density. When energy concentrates in a few discrete lines (1x, 2x, BPFO), SE is low. When energy spreads into broadband noise, SE approaches 1.0. Division byln(N)normalizes against the number of frequency bins. -
TE (Temporal Entropy): The probability distribution
p_iis constructed from windowed time-domain amplitude bins. A clean sinusoidal signal has low TE; a signal with random impulses, amplitude modulation, or chaotic behavior has high TE. Division byln(N)normalizes against the number of time bins. -
DE (Directional Entropy): The probability distribution
p_iis constructed from the energy ratio across the three measurement axes (Horizontal, Vertical, Axial). A machine with energy concentrated in one axis (e.g., purely vertical vibration from imbalance) has low DE. A machine with energy distributed equally across all three axes has DE approaching 1.0. Division byln(3)normalizes against the three possible directions.
Stability Index
Section titled “Stability Index”The three entropies combine into a single Stability Index using production-frozen weights:
SI = 1 − (0.5·SE + 0.3·TE + 0.2·DE)Clamped to [0, 1]. Higher SI means more stable behavior.
| Component | Weight | Rationale |
|---|---|---|
| SE (Spectral Entropy) | 0.5 | Spectral disorder is the strongest early indicator of mechanical degradation |
| TE (Temporal Entropy) | 0.3 | Temporal disorder captures impulsive and modulated events |
| DE (Directional Entropy) | 0.2 | Directional spread indicates structural looseness and mode coupling |
The weighting reflects an engineering judgment validated against field data: spectral entropy is the most sensitive early indicator (it rises before amplitude thresholds are exceeded), while directional entropy provides confirmatory evidence of structural looseness.
State Rules SR01–SR05
Section titled “State Rules SR01–SR05”Module B.3 applies five state rules in strict priority order (highest priority first, first match wins). These rules classify the entropy regime for downstream fusion:
| Rule | Condition | State | Severity |
|---|---|---|---|
| SR05 | SI ≤ 0.40 | Critical_Instability | alarm |
| SR04 | SE ≥ 0.65 AND (TE ≥ 0.60 OR DE ≥ 0.60) | Chaotic | warning |
| SR03 | dSE/dt ≥ 0.02 AND SI < 0.60 | Destabilizing | warning |
| SR02 | SE > 0.35 AND SE < 0.65 AND dSE/dt < 0.02 | Drifting | watch |
| SR01 | SE ≤ 0.35 AND TE < 0.50 AND SI ≥ 0.70 | Stable | normal |
Reading the rules:
- SR05 fires when the combined stability index drops below 0.40 — the system has lost coherence across all three entropy dimensions. This is the trigger for the Critical Instability override in Module C (SSI floor = 0.70).
- SR04 fires when spectral entropy is high and at least one other entropy dimension is also elevated. High SE alone might indicate broadband process noise; SR04 requires corroboration from temporal or directional disorder to declare chaotic state.
- SR03 captures the rate of change. Even if current SI is moderate (below 0.60 but above 0.40), a rising spectral entropy slope (
dSE/dt ≥ 0.02) indicates destabilization in progress. This rule catches developing faults before they reach SR05. - SR02 is the drift zone: moderate spectral entropy with a slow or flat trend. The machine is not healthy but not actively deteriorating.
- SR01 is the healthy state: all entropy dimensions are low and SI is high. All three conditions must be met — low SE alone is insufficient if temporal entropy is elevated (which would indicate impulsive events masked in the frequency domain).
5.6 — Block Score Rules (BSR001–BSR007)
Section titled “5.6 — Block Score Rules (BSR001–BSR007)”The block score rules are the bridge between Signal Intelligence (per-component evidence) and Stability Intelligence (system-level health). Each component block is evaluated against all seven rules in strict priority order. The first matching rule sets the block’s score and state.
Complete BSR Rule Set
Section titled “Complete BSR Rule Set”| Rule | Priority | Condition | Score | State |
|---|---|---|---|---|
| BSR007 | 1 (highest) | B_match ≥ 0.90 | 0.90 | critical |
| BSR001 | 2 | Trend = Accelerating AND conf ≥ 0.70 | 0.85 | unstable |
| BSR003 | 2 | Trend = Step AND conf ≥ 0.70 | 0.80 | unstable |
| BSR002 | 3 | Trend = Drift AND conf ≥ 0.60 | 0.65 | degrading |
| BSR005 | 4 | B_match ≥ 0.70 AND (Stable OR conf < 0.50) | 0.55 | watch |
| BSR004 | 5 | Trend = Chaotic AND proc_corr ≥ 0.70 | 0.35 | process-driven |
| BSR006 | 6 (lowest) | B_match < 0.30 AND Stable | 0.15 | healthy |
Design notes:
- BSR007 fires on high fault-pattern match alone — if the pattern library says “this is a known fault with 90%+ confidence,” the block goes to critical regardless of trend.
- BSR001 and BSR003 share priority 2 but BSR001 evaluates first. An accelerating trend is scored higher (0.85) than a step change (0.80) because acceleration implies an ongoing mechanism, whereas a step may have already stabilized at a new operating point.
- BSR005 captures a subtle scenario: the pattern match is high (≥ 0.70) but the trend is stable or confidence is low. The machine shows a known fault signature that is not currently progressing. This warrants monitoring (watch) rather than immediate action.
- BSR004 assigns a deliberately low score (0.35) when chaotic vibration correlates with process variables. This prevents maintenance triggers for what is fundamentally a process engineering issue.
SSI Computation
Section titled “SSI Computation”The System Stability Index aggregates block scores using machine-profile weights:
SSI = Σ(weight_i × block_score_i)Clamped to [0, 1]. Weights are defined by the machine profile (e.g., PROFILE_PUMP_A assigns 0.25 to bearings, 0.30 to fluid flow). When optional blocks are absent, remaining weights auto-normalize.
SSI to System State Classification
Section titled “SSI to System State Classification”| SSI Range | System State | Severity |
|---|---|---|
| < 0.30 | stable | normal |
| 0.30 – 0.60 | degrading | watch |
| 0.60 – 0.80 | unstable | warning |
| ≥ 0.80 | critical | alarm |
Special rule: If more than 50% of blocks have process_correlation ≥ 0.70, the system state is overridden to process-driven regardless of SSI value. This prevents maintenance escalation when the root cause is operational rather than mechanical.
Health Stage Mapping
Section titled “Health Stage Mapping”Module D uses SSI to assign a health stage and associated RUL (Remaining Useful Life) band:
| SSI Range | Health Stage | RUL Band |
|---|---|---|
| ≥ 0.80 | Critical | < 7 days |
| 0.60 – 0.80 | Unstable | 1–4 weeks |
| 0.30 – 0.60 | Degrading | 1–6 months |
| < 0.30 | Healthy | > 6 months |
These bands are initial estimates that Module F refines using Weibull analysis and condition-adjusted reliability models. The health stage determines which RUL model is applied: Healthy uses the linear model, Degrading uses the drift-adjusted model, and Unstable/Critical use the accelerating model with NLI adjustment.
Slope Escalation Rules
Section titled “Slope Escalation Rules”Even within a health stage, the rate of SSI change can trigger escalation to the next stage:
if Degrading AND SSI_slope > 0.05 → escalate to Unstableif Healthy AND SSI_slope > 0.02 → escalate to DegradingThese escalation rules ensure that a rapidly deteriorating machine is not left in a lower health stage simply because the SSI magnitude has not yet crossed the threshold. A machine at SSI = 0.45 (Degrading) with a slope of 0.06 will reach Unstable territory within a few measurement windows — the slope escalation rule catches this trajectory and escalates proactively.
5.7 — Cross-Pipeline Formulas
Section titled “5.7 — Cross-Pipeline Formulas”The formulas in this section operate across the full pipeline, connecting Signal Intelligence outputs to Stability Intelligence decisions. They govern how evidence is combined, how confidence propagates, and how state transitions are managed.
Effective Severity
Section titled “Effective Severity”S_eff = S_fusion × Q_dataThe effective severity is the product of the fused severity score and the data quality score from the Guard stage. Poor data quality suppresses severity — a high severity reading from a noisy or clipped signal is downweighted proportionally. This prevents false alarms from degraded sensors while preserving genuine fault signals from healthy instrumentation.
Confidence Propagation
Section titled “Confidence Propagation”C_final = Q_data × (1 − ∏(1 − C_i))Where C_i = [B.2 severity_score, B.3 SI, B match confidence]. This is the canonical v1.0 compounding formula. Each module contributes independent evidence; the product ∏(1 − C_i) represents the probability that all modules are wrong simultaneously. As more modules agree, confidence rises nonlinearly. The Q_data gate ensures that confidence is suppressed when data quality is poor — no amount of module agreement can overcome unreliable input data.
Example: Three modules report confidence [0.45, 0.24, 0.38]:
C_final = Q_data × (1 − (1−0.45)(1−0.24)(1−0.38)) = Q_data × (1 − 0.55 × 0.76 × 0.62) = Q_data × (1 − 0.259) = Q_data × 0.741With Q_data = 1.0 (clean signal), C_final = 0.74 — above the 0.70 RCM activation threshold even though no individual module exceeded 0.50.
Gating Rules
Section titled “Gating Rules”If stability_state == 'Critical_Instability' → SSI_floor = 0.70When Module B.3 fires SR05 (SI ≤ 0.40, Critical_Instability state), Module C enforces a minimum SSI of 0.70 regardless of block-level scores. This is the safety gate that connects entropy analysis to system health assessment: the entropy layer detects systemic instability that component-level analysis may miss, and the floor ensures the system state reflects this detection.
State Transition Thresholds with Hysteresis
Section titled “State Transition Thresholds with Hysteresis”State transitions use asymmetric persistence windows to prevent oscillation at boundaries:
| Transition | S_eff Threshold | Persistence (escalation) | Persistence (de-escalation) | Hysteresis Band |
|---|---|---|---|---|
| → Degrading | > 0.55 | 3 windows | 5 windows | ±0.08 |
| → Unstable | > 0.70 | 3 windows | 5 windows | ±0.08 |
| → Critical | > 0.85 | 2 windows | 5 windows | ±0.08 |
How hysteresis works:
- Escalation (moving to a higher severity state): S_eff must exceed the threshold for the specified number of consecutive measurement windows. The → Critical transition requires only 2 windows (faster response to dangerous conditions), while → Degrading and → Unstable require 3 windows.
- De-escalation (returning to a lower severity state): S_eff must drop below
threshold − 0.08(the hysteresis band) for 5 consecutive windows. The asymmetry is deliberate — it is harder to de-escalate than to escalate, reflecting the engineering principle that genuine improvement requires sustained evidence, not a single good reading. - The ±0.08 band prevents chatter: a machine at S_eff = 0.71 will not oscillate between Degrading and Unstable. Once it escalates to Unstable at 0.70, it must drop below 0.62 (0.70 − 0.08) and sustain that level for 5 windows before de-escalating.
Persistence Windows
Section titled “Persistence Windows”| Direction | Windows Required | Rationale |
|---|---|---|
| Escalation | 3 (standard) / 2 (→ Critical) | Confirm deterioration is real, not transient |
| De-escalation | 5 (all transitions) | Require sustained improvement before downgrading severity |
The 3-to-escalate, 5-to-de-escalate asymmetry encodes a fundamental reliability engineering principle: it is cheaper to investigate a genuine alert than to miss a developing fault. The system is biased toward caution — once a machine enters a higher severity state, it must demonstrate sustained recovery before the alert is lowered.
Implementation note (v1.0): The stateless API processes each call independently. Persistence tracking and hysteresis are the responsibility of the client (historian, dashboard, or edge gateway). The thresholds above define the canonical transition rules for client-side implementation.
Reference Implementation: SSI Fusion & SEDL
Section titled “Reference Implementation: SSI Fusion & SEDL”"""RAPID AI — Module B.3 & C: Stability IntelligenceSEDL entropy calculation and SSI fusion reference implementation."""import numpy as npfrom dataclasses import dataclass
@dataclass(frozen=True)class EntropyResult: spectral_entropy: float # SE temporal_entropy: float # TE directional_entropy: float # DE stability_index: float # SI state: str
def shannon_entropy(probabilities: np.ndarray) -> float: """Normalized Shannon entropy H = -sum(p * ln(p)) / ln(N)""" p = probabilities[probabilities > 0] # filter zeros if len(p) == 0: return 0.0 return -np.sum(p * np.log(p)) / np.log(len(p))
def compute_sedl(spectrum: np.ndarray, time_signal: np.ndarray, tri_axial: np.ndarray) -> EntropyResult: """Compute SEDL entropy metrics.
Args: spectrum: Power spectral density array time_signal: Time-domain signal tri_axial: Array of shape (3,) with H, V, A RMS values """ # Spectral Entropy (frequency domain) psd_norm = spectrum / np.sum(spectrum) if np.sum(spectrum) > 0 else spectrum se = shannon_entropy(psd_norm)
# Temporal Entropy (time domain) hist, _ = np.histogram(time_signal, bins=64, density=True) hist_norm = hist / np.sum(hist) if np.sum(hist) > 0 else hist te = shannon_entropy(hist_norm)
# Directional Entropy (3 axes) dir_norm = tri_axial / np.sum(tri_axial) if np.sum(tri_axial) > 0 else tri_axial de = -np.sum(dir_norm[dir_norm > 0] * np.log(dir_norm[dir_norm > 0])) / np.log(3) de = np.clip(de, 0, 1)
# Stability Index si = 1.0 - (0.5 * se + 0.3 * te + 0.2 * de) si = np.clip(si, 0, 1)
# State classification (priority order) if si <= 0.40: state = "Critical_Instability" elif se >= 0.65 and (te >= 0.60 or de >= 0.60): state = "Chaotic" elif se > 0.35 and se < 0.65: state = "Drifting" elif se <= 0.35 and te < 0.50 and si >= 0.70: state = "Stable" else: state = "Drifting"
return EntropyResult(se, te, de, si, state)
# --- SSI Fusion ---# Block weight profiles per asset typeSSI_PROFILES = { "pump": {"vibration": 0.35, "temperature": 0.25, "process": 0.25, "electrical": 0.15}, "gearbox": {"vibration": 0.45, "temperature": 0.20, "oil_analysis": 0.25, "electrical": 0.10}, "fan": {"vibration": 0.40, "temperature": 0.20, "process": 0.20, "electrical": 0.20},}
def compute_ssi(block_scores: dict[str, float], asset_type: str) -> float: """Compute System Stability Index from weighted block scores.
Args: block_scores: Dict of {block_name: severity_score} asset_type: One of 'pump', 'gearbox', 'fan'
Returns: SSI value 0.0 (healthy) to 1.0 (critical) """ weights = SSI_PROFILES.get(asset_type, SSI_PROFILES["pump"]) ssi = sum(block_scores.get(block, 0.0) * w for block, w in weights.items()) return np.clip(ssi, 0, 1)
# SSI → System State mappingdef ssi_to_state(ssi: float) -> str: if ssi <= 0.20: return "Normal" elif ssi <= 0.40: return "Watch" elif ssi <= 0.60: return "Alert" elif ssi <= 0.80: return "Alarm" else: return "Critical"Standards Alignment
Section titled “Standards Alignment”| Standard | Relevance to This Chapter |
|---|---|
| ISO 13374 — Condition monitoring and diagnostics of machines | Module C (SSI Fusion) implements ISO 13374 Level 4 (Health Assessment) by fusing component-level evidence into system-level health scores. The AESF framework extends beyond the standard by characterizing the type of instability, not just its severity. |
| ISO 17359 — General guidelines for condition monitoring | The profile-weighted fusion approach (different weights for different machine types) implements ISO 17359’s recommendation to tailor monitoring strategies to equipment type and criticality. |
| ISO 13381-1 — Prognostics | The SSI-to-health-stage mapping and the confidence compounding formula provide the foundation for ISO 13381-1-compliant prognostic assessments, connecting current health state to remaining useful life estimation. |
Changelog
Section titled “Changelog”| Version | Date | Author | Changes |
|---|---|---|---|
| 2.1.0 | 2026-03-17 | Rick D | Added standards alignment, living doc metadata, changelog |
| 2.0.0 | 2026-03-17 | Rick D | Enriched with production codebase content |
| 1.0.0 | 2026-03-17 | Rick D | Initial chapter creation |
Next: Chapter 6 — Engineering Intelligence Previous: Chapter 4 — Signal Intelligence