It seems relatively straightforward to implement a KrotovPulseProcessor that uses the Krotov package to optimize all the gates in the circuit. This would boil down to adapting OptPulseProcessor.load_circuit to generate Krotov objectives and run the optimization.
It would probably be more interesting to do this with an SCQubitsModel rather than a spin chain.
This is an excellent suggestion! I think it would be good to do both, the spin chain for direct comparison with the above mentioned paper and the SCQubitsModel as the most relevant example.
The paper "Pulse-level noisy quantum circuits with QuTiP" introduces
qutip-qip
, which has anOptPulseProcessor
that compiles gates into control pulses optimized with QuTiP's built-in GRAPE.Examples are available in the code accompanying the paper, specifically
dj_algorithm.py
for the Deutsch-Jozsa algorithm, Fig 3 for the paper.There's also some Jupyter notebook tutorials.
It seems relatively straightforward to implement a
KrotovPulseProcessor
that uses the Krotov package to optimize all the gates in the circuit. This would boil down to adapting OptPulseProcessor.load_circuit to generate Krotov objectives and run the optimization.It would probably be more interesting to do this with an
SCQubitsModel
rather than a spin chain.