This package implements direct collocation to solve quantum optimal control problems. It currently relies on MathOptInterface.jl, with Ipopt.jl as the nonlinear solver backend.
To install and use this repo on your own machine:
- clone the repo into a directory of your choosing
- open a julia REPL from the repo directory and enter the package manager via
julia> ]
- run
(@v1.7) pkg> activate .
- then run
(Pico) pkg> instantiate
- now the package can be used via
using Pico
See Documenter.jl for more details.
- run
julia --project=. docs/make.jl
in the shell - in the REPL, run
using LiveServer; serve(dir="docs/build")
Given a Hamiltonian for a qubit (or qubit coupled to harmonic oscillator(s)) system of the form
we solve the optimization problem
The state vector nqstates
) quantum isomorphism states isodim = 2*ketdim
) and the augmented control states augdim
). The action vector ncontrols
. Thus, we have:
So, nqstates * isodim + ncontrols * augdim = nstates
, and ncontrols
.
Currently the code is set up to support any quantum state cost function
Finally,
I will the use the notation
It can be shown that
where
where
The implicit dynamics constraint function
- min time problem reimplementation
- implementation
- tests
- add details to notes
- analytic derivatives
- integrators
- 2nd order Pade
- 4th order Pade
- exponential
- objective
- integrators
- document solver options (kinda completed, see
options.jl
) - integrator functor type
- higher order Pade integrators
- exponential integrator
- add constraints on a(t)
- write documentation
- constraint types
- systems
- multimode system with specified control limits
- two qubit system (try CNOT)
- transmon system
- multimode system
- implicit
$\ddot a(t)$ - add ability to change linear solver
- mac
- ubuntu
- arch (manjaro)
- add ability to save and load trajectories