Changelog
Version 0.2.0 (Mar 24, 2026)
Bug Fixes
Reinforcement learning module (src/qutip_qoc/_rl.py):
Corrections in algorithm execution time #31
JOPT
- Fix: Enable JOPT to support open-system optimization with TRACEDIFF fidelity #49
This PR resolves an issue where JOPT failed to optimize open quantum systems using TRACEDIFF fidelity due to incompatibilities between JAX autodiff and Qobj data structures.
GRAPE
- Match grape infidelity with manually computed one #51 (fixes #46):
With this PR the GRAPE-reported infidelity matches the manually computed one by evolving the system using the optimized control pulses.
GitHub Workflows
Update versions of action tools #35
Make upload and download artifacts functionality compatible with the API of artifacts@v4 #64
Pulse optimisation and objective modules
Fix state transfer not working for GRAPE and CRAB #36 (fixes #34)
Documentation
Fixing broken links in README #39
Fix: Load jQuery explicitly to resolve broken search panel on deployed docs #42
Miscellaneous
Add interactive test notebooks for closed systems #43
Added requirements for interactive tests to setup.cfg #53
Make it possible to display qutip-qoc as a family package #56
Dependencies management
Make all JAX and machine learning related dependencies optional #32
Dependabot dependencies upgrades
#25
#26
#27
#28
#45
#61
Version 0.1.1 (Oct 04, 2024)
This is an update to the beta release of qutip-qoc.
It mainly introduces the new reinforcement learning algorithm qutip_qoc._rl.
Non-public facing functions have been renamed to start with an underscore.
As with other QuTiP functions,
optimize_pulsesnow takes atlistargument instead of_TimeInterval.The structure for the control guess and bounds has changed and now takes in an optional
__time__keyword.The
resultdoes no longer returnoptimized_objectivesbut insteadoptimized_H.
Features
New reinforcement learning algorithm, developed during GSOC24 (#19, #18, by LegionAtol)
Automatic transfromation of initial and target operator to superoperator (#23, by flowerthrower)
Bug Fixes
Prevent loss of
__time__keyword inoptimize_pulses(#22, by flowerthrower)
Version 0.1.0b1 (July, 2024)
This is the beta release of qutip-qoc, the extended quantum control package in QuTiP.
It has undergone major refactoring and restructuring of the codebase.
Non-public facing functions have been renamed to start with an underscore.
As with other QuTiP functions,
optimize_pulsesnow takes atlistargument instead of_TimeInterval.The structure for the control guess and bounds has changed and now takes in an optional
__time__keyword.The
resultdoes no longer returnoptimized_objectivesbut insteadoptimized_H.
Bug Fixes
basinhopping result does not contain minimizer message
boundary issues with CRAB
Version 0.0.0 (December 26, 2023)
This is the alpha version of qutip-qoc, the extended quantum control package in QuTiP.
The qutip-qoc package builds up on the qutip-qtrl package.
It enhances it by providing two additional algorithms to optimize analytically defined control functions.
The package also aims for a more general way of defining control problems with QuTiP and makes switching between the four control algorithms very easy.
Features
qutip_qoc.GOATis an extension to the Gradient Optimization of Analytic conTrols (GOAT) [1] algorithm. It encoporates an additional time parameterization to allow for optimization over the total evolution time.qutip_qoc.JOPTis an JAX automatic differentiation Optimization of Analytic conTrols (JOPT) algorithm.Both algorithms can be addressed by the
qutip_qoc.optimize_pulsesfunction, which consists of a two-layer approach to find global optimal values for parameterized analytical control functions. The global optimization layer providesscipy.optimize.dual_annealingandscipy.optimize.basinhopping, while the local minimization layer supports all gradient drivenscipy.optimize.minimizemethods.
Bug Fixes
None