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.



Boundary type for parameter bounds.


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


Abstract class for optimizers used in closed-loop optimization.


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


The Gaussian process optimizer.


The neural network optimizer.


Results from evaluating the closed-loop optimization cost function.


The simulated annealing optimizer.



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


Perform a single step in a closed-loop optimization.