Closed-loop optimization

The closed-loop optimization module provides optimization tools that communicate directly with a given experimental apparatus. This is useful for optimization problems where a complete understanding of the quantum system is not available. Instead of building a detailed model of the system, the optimizer uses feedback from the system to converge to low values of a specified cost function.

To run a closed-loop optimization, begin by creating an optimizer using one of the boulderopal.closed_loop.ClosedLoopOptimizer classes. Then if the interface with your experimental apparatus can straightforwardly be defined through a function, you can use boulderopal.closed_loop.optimize to easily set up and run the whole optimization. If you need more flexibility, you can create the iteration loop yourself and use boulderopal.closed_loop.step to take an optimization step at each iteration.

For a quick introduction, see the Find optimal pulses with automated optimization tutorial and the How to automate closed-loop hardware optimization user guide.

Classes

BoundType

Boundary type for parameter bounds.

Bounds

A box constraint with which you can define the (inclusive) bounds and their type for each optimizable parameter in your optimization.

ClosedLoopOptimizer

Abstract class for optimizers used in closed-loop optimization.

Cmaes

The covariance matrix adaptation evolution strategy (CMA-ES) optimizer.

GaussianProcess

The Gaussian process optimizer.

NeuralNetwork

The neural network optimizer.

Results

Results from evaluating the closed-loop optimization cost function.

SimulatedAnnealing

The simulated annealing optimizer.

Functions

optimize

Run a closed-loop optimization to find a minimum of the given cost function.

step

Perform a single step in a closed-loop optimization.