Class EstimationTestHarness
java.lang.Object
neqsim.process.calibration.EstimationTestHarness
- All Implemented Interfaces:
Serializable
Test harness for validating parameter estimation systems before deployment.
This class provides a framework for testing estimation algorithms (EnKF, Gauss-Newton, etc.) using synthetic data with known ground truth, ensuring the estimator works correctly before being deployed with real plant data.
Key Testing Capabilities:
- Convergence testing - verify estimator converges to true values
- Noise robustness - test performance under various noise levels
- Outlier robustness - verify estimator handles bad data
- Drift tracking - test detection of parameter changes over time
- Monte Carlo validation - statistical confidence in estimates
Usage Example:
// Create test harness
EstimationTestHarness harness = new EstimationTestHarness(processSystem);
// Define parameters and measurements
harness.addParameter("Pipe1.heatTransferCoefficient", 12.0); // true value = 12.0
harness.addParameter("Pipe2.heatTransferCoefficient", 18.0);
harness.addMeasurement("HPManifold.temperature", "C", 0.5);
// Run convergence test
TestReport report = harness.runConvergenceTest(estimator, 50);
// Check results
if (report.passes(criteria)) {
System.out.println("Ready for deployment!");
}
- Version:
- 1.0
- Author:
- NeqSim Development Team
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classMeasurement specification.static classMonte Carlo validation report.static classParameter specification with ground truth.static classTest report containing results and metrics. -
Field Summary
FieldsModifier and TypeFieldDescriptionMeasurements to generate.Parameters with true values.private ProcessSystemThe process system to test with.private RandomRandom number generator.private static final longprivate ProcessVariableAccessorVariable accessor for reading/writing. -
Constructor Summary
ConstructorsConstructorDescriptionEstimationTestHarness(ProcessSystem processSystem) Creates a test harness for a process system. -
Method Summary
Modifier and TypeMethodDescriptionaddMeasurement(String path, String unit, double noiseStd) Adds a measurement variable.addParameter(String path, double trueValue) Adds a parameter with known true value.addParameter(String path, double trueValue, double minBound, double maxBound) Adds a parameter with known true value and bounds.generateMeasurement(double noiseMultiplier) Generates synthetic measurements using true parameter values.runConvergenceTest(EnKFParameterEstimator estimator, int numSteps) Runs a convergence test.runConvergenceTest(EnKFParameterEstimator estimator, int numSteps, double noiseMultiplier, Consumer<Integer> progressCallback) Runs a convergence test with optional progress callback.runDriftTrackingTest(EnKFParameterEstimator estimator, int numSteps, int driftingParamIndex, double driftRate) Runs a parameter drift tracking test.runMonteCarloValidation(Supplier<EnKFParameterEstimator> estimatorFactory, int numTrials, int stepsPerTrial) Runs Monte Carlo validation with multiple trials.runNoiseRobustnessTest(EnKFParameterEstimator estimator, int stepsPerLevel, double[] noiseLevels) Runs a noise robustness test at multiple noise levels.setSeed(long seed) Sets the random seed for reproducibility.
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
processSystem
The process system to test with. -
variableAccessor
Variable accessor for reading/writing. -
parameters
Parameters with true values. -
measurements
Measurements to generate. -
rng
Random number generator.
-
-
Constructor Details
-
EstimationTestHarness
Creates a test harness for a process system.- Parameters:
processSystem- the process system to test with
-
-
Method Details
-
setSeed
Sets the random seed for reproducibility.- Parameters:
seed- random seed- Returns:
- this harness for chaining
-
addParameter
Adds a parameter with known true value.- Parameters:
path- variable pathtrueValue- ground truth value- Returns:
- this harness for chaining
-
addParameter
public EstimationTestHarness addParameter(String path, double trueValue, double minBound, double maxBound) Adds a parameter with known true value and bounds.- Parameters:
path- variable pathtrueValue- ground truth valueminBound- minimum boundmaxBound- maximum bound- Returns:
- this harness for chaining
-
addMeasurement
Adds a measurement variable.- Parameters:
path- variable pathunit- unit of measurementnoiseStd- measurement noise standard deviation- Returns:
- this harness for chaining
-
generateMeasurement
-
runConvergenceTest
public EstimationTestHarness.TestReport runConvergenceTest(EnKFParameterEstimator estimator, int numSteps) Runs a convergence test.- Parameters:
estimator- the estimator to testnumSteps- number of update steps- Returns:
- test report
-
runConvergenceTest
public EstimationTestHarness.TestReport runConvergenceTest(EnKFParameterEstimator estimator, int numSteps, double noiseMultiplier, Consumer<Integer> progressCallback) Runs a convergence test with optional progress callback.- Parameters:
estimator- the estimator to testnumSteps- number of update stepsnoiseMultiplier- noise level multiplierprogressCallback- optional callback for progress updates- Returns:
- test report
-
runNoiseRobustnessTest
public Map<Double, EstimationTestHarness.TestReport> runNoiseRobustnessTest(EnKFParameterEstimator estimator, int stepsPerLevel, double[] noiseLevels) Runs a noise robustness test at multiple noise levels.- Parameters:
estimator- the estimator to teststepsPerLevel- steps at each noise levelnoiseLevels- array of noise multipliers to test- Returns:
- map of noise level to test report
-
runDriftTrackingTest
public EstimationTestHarness.TestReport runDriftTrackingTest(EnKFParameterEstimator estimator, int numSteps, int driftingParamIndex, double driftRate) Runs a parameter drift tracking test.- Parameters:
estimator- the estimator to testnumSteps- number of stepsdriftingParamIndex- which parameter driftsdriftRate- rate of drift per step- Returns:
- test report with tracking accuracy
-
runMonteCarloValidation
public EstimationTestHarness.MonteCarloReport runMonteCarloValidation(Supplier<EnKFParameterEstimator> estimatorFactory, int numTrials, int stepsPerTrial) Runs Monte Carlo validation with multiple trials.- Parameters:
estimatorFactory- factory to create fresh estimator instancesnumTrials- number of Monte Carlo trialsstepsPerTrial- steps per trial- Returns:
- summary statistics across all trials
-