Decision Layer
Op^3 includes a Bayesian decision layer that combines multiple sensor channels into a single scour diagnosis and recommends the maintenance action that minimises expected cost.
Three-step procedure
Translate each sensor reading into a probability distribution over scour depth using a calibrated observation model.
Combine the individual distributions by multiplying the likelihoods and normalising (Bayes’ theorem).
Select the maintenance action that minimises expected cost under the combined posterior.
The implementation lives in op3.uq.sequential_bayesian.
Sensor channels
Three channels are supported:
Frequency channel (accelerometer): broad likelihood, slow sensitivity to scour
Capacity channel (strain gauge): narrow likelihood, fast sensitivity to scour
Statistical channel (anomaly detector): binary step function, confirms persistent change
Value of information
The VoI analysis answers: “if I install one more sensor, which one changes the maintenance decision most often?”
from op3.uq.sequential_bayesian import SequentialBayesianTracker
tracker = SequentialBayesianTracker()
tracker.update(freq_ratio=0.994, capacity_ratio=0.99, anomaly=False)
tracker.update(freq_ratio=0.985, capacity_ratio=0.92, anomaly=True)
print(tracker.summary())
Sequential updating
The SequentialBayesianTracker propagates the posterior from each
epoch to the next. Over time, the posterior tightens as evidence
accumulates, and the recommended action escalates if the degradation
trend persists.