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.


BoundTypeBoundary type for parameter bounds.
BoundsA box constraint with which you can define the (inclusive) bounds and their type for each optimizable parameter in your optimization.
ClosedLoopOptimizerAbstract class for optimizers used in closed-loop optimization.
CmaesThe covariance matrix adaptation evolution strategy (CMA-ES) optimizer.
GaussianProcessThe Gaussian process optimizer.
NeuralNetworkThe neural network optimizer.
ResultsResults from evaluating the closed-loop optimization cost function.
SimulatedAnnealingThe simulated annealing optimizer.


optimizeRun a closed-loop optimization to find a minimum of the given cost function.
stepPerform a single step in a closed-loop optimization.

Was this useful?