Optimal Experimental Design Routines#

This package provides the classes and utilities needed to formulate and solve Optimal Experimental Design (OED) problems for various applications.

An OED problem seeks a design \(\zeta^*\) that optimizes an objective (optimality criterion) \(\Phi(\zeta)\) over a design space \(\mathcal{D}\):

\[\zeta^* = \arg\min_{\zeta \in \mathcal{D}} \; \Phi(\zeta)\]

Common criteria include A-optimality (trace of posterior covariance), D-optimality (log-determinant), and information-theoretic measures (expected information gain, KL divergence).

Our main assumption is that an OED problem involves an inverse problem (we focus on model-constrained OED), however, the base classes are extensible enough to relax this assumption.

Key OED Classes at a Glance#

pyoed.oed.core.oed.OED

Base class for implementations of OED (Optimal Experimental Design) methods/approaches.

pyoed.oed.core.inversion_oed.InversionOED

The main class for all implementations of OED for Inverse Problems (Bayesian of not).

pyoed.oed.core.sensor_placement_oed.SensorPlacementInversionOED

Base class for sensor placement OED for inverse problems.

pyoed.oed.sensor_placement.SensorPlacementBayesianInversionOED

This class provides a general implementation for sensor-placement OED in Bayesian inverse problems.

pyoed.oed.robust_oed.RobustSensorPlacementBayesianInversionOED

This is the main implementation of researech development on robust OED presented in [1].

OED Main Classes#

OED Base/Core Classes#