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

  1. Translate each sensor reading into a probability distribution over scour depth using a calibrated observation model.

  2. Combine the individual distributions by multiplying the likelihoods and normalising (Bayes’ theorem).

  3. 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.