discopt.doe#

discopt.doe – Design of Experiments.

This package has three complementary entry points, each tailored to a different question:

  1. “What is the best operating condition?” optimize_round() runs one active-learning round: fit a surrogate to the experiments completed so far, recommend the next batch via an acquisition function (expected improvement, UCB, steepest ascent), append the batch to a workbook for execution. See the active-learning tutorial notebook.

  2. “Does this factor matter?” factorial_2level_design() builds 2-level full factorial screening designs; effects_estimates() gives signed main-effect estimates; anova_report() produces the F-table.

  3. “How precisely can I estimate the model parameters?” optimal_experiment() and batch_optimal_experiment() solve for an exact D/A/E-optimal design using the Fisher Information Matrix computed with JAX autodiff; diagnose_identifiability() and estimability_rank() warn when the chosen experiments cannot identify the parameters.

Quick start (FIM-based parameter-estimation design)#

>>> from discopt.doe import compute_fim, optimal_experiment, DesignCriterion
>>> fim_result = compute_fim(experiment, param_values, design_values)
>>> design = optimal_experiment(experiment, param_values, design_bounds)
>>> print(design.summary())

Quick start (active-learning optimization)#

>>> from discopt.doe import optimize_round, OptimizationCriterion
>>> result = optimize_round(
...     workbook="opt.xlsx",
...     criterion=OptimizationCriterion.MAXIMIZE,
...     surrogate="gp",                       # or sklearn estimator, or Surrogate
...     acquisition="expected_improvement",
...     batch_size=4,
... )
>>> print(result.next_designs)

Identifiability and estimability diagnostics#

>>> from discopt.doe import diagnose_identifiability, estimability_rank, profile_likelihood
>>> diag = diagnose_identifiability(experiment, param_values)
>>> est = estimability_rank(experiment, param_values)
>>> profile = profile_likelihood(experiment, data, "k")

See Also#

discopt.estimate : Parameter estimation using the same Experiment interface. discopt.doe.surrogate : Surrogate model protocol + sklearn adapter. discopt.doe.acquisition : Acquisition functions (EI, UCB, steepest ascent).

Submodules#