Optimal control

464 views
Skip to first unread message

kuk...@gmail.com

unread,
Sep 9, 2016, 9:32:14 AM9/9/16
to QuTiP: Quantum Toolbox in Python
Hi, 

I want to optimize a pulse shape to create a specific state in a resonator. Basically I have an initial state |i> which adiabatically evolves to a target state |t> under the action of some drive. I want to optimize the pulse shape of the drive. I cannot define a unitary for this operation because of large Hilbert space. I know |i> should transform to |t> but I don't know or care about what happens to other states. So rather than minimizing the distance between an evolution and target unitary I would like to to minimize distance between an evolution and target state. Is this possible in qutip?

Thanks!

Alex Pitchford

unread,
Sep 9, 2016, 2:25:11 PM9/9/16
to qu...@googlegroups.com
Hi,

It is certainly possible to evolve from state to state in qutip.control.  You could see my example
ctrl_pulse_optim_example_2qubit_interact.py
in

However, there are lots of unitaries created during the optimisation, so you may find memory an issue.

Let me know how you get on, and if I can help in any way.

Alex

--
You received this message because you are subscribed to the Google Groups "QuTiP: Quantum Toolbox in Python" group.
To unsubscribe from this group and stop receiving emails from it, send an email to qutip+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

kuk...@gmail.com

unread,
Sep 13, 2016, 7:18:48 AM9/13/16
to QuTiP: Quantum Toolbox in Python

Hi Alex,

Thanks for the quick reply. I've been trying to implement the optimization but it doesn't seem to work. It works for the qubit case, that is the example you sent does work, but when i try to optimize the pulse shape of the drive to create a specific state in the resonator nothing seems to happen. I put in a bunch of pulses like RND, SQUARE etc and it gives a pulse which looks exactly like the input I gave. I can't seem to figure out what could be the cause for this.

Thanks,
Shruti
To unsubscribe from this group and stop receiving emails from it, send an email to qutip+un...@googlegroups.com.

Alex Pitchford

unread,
Sep 14, 2016, 9:17:26 AM9/14/16
to qu...@googlegroups.com
Hi Shruti,

I suspect that maybe you are using the 3.1 release version. There were issues with state-to-state control for this version.
State control has been shown to be working for later versions, including the latest 4.0dev release, which is available to download from the qutip website.

Alex

To unsubscribe from this group and stop receiving emails from it, send an email to qutip+unsubscribe@googlegroups.com.

shruti puri

unread,
Sep 14, 2016, 10:59:58 AM9/14/16
to qu...@googlegroups.com
Hi Alex,

I just finished installing the new version and ran the code. It works now! Also, i just wanted to know if there is a provision for fixing the final amplitude for the drive? I know there are grape algorithms do this but note sure if its included in qutip yet.

Thanks,
Shruti

--
You received this message because you are subscribed to a topic in the Google Groups "QuTiP: Quantum Toolbox in Python" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/qutip/wT1N_vkOHoA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to qutip+unsubscribe@googlegroups.com.

Alex Pitchford

unread,
Sep 14, 2016, 6:02:14 PM9/14/16
to qu...@googlegroups.com
Hi Shutri,

Thanks for reporting back on the success.

We have not yet implemented any constraints on the drive pulse other than maximum amplitudes. Have you got some references for the constrained pulse grape algorithms you refer to? I am happy to add this to the development plans.

Thanks

Alex

shruti puri

unread,
Sep 16, 2016, 10:09:12 AM9/16/16
to qu...@googlegroups.com
Hi Alex,

Here is a reference which talk about smoothing and fixed boundary conditions. It will be great to have these features in qutip as well.


Thanks,
Shruti

Message has been deleted

Ron B.

unread,
Sep 21, 2016, 1:50:20 PM9/21/16
to QuTiP: Quantum Toolbox in Python
Hi,

I have a similar issue.
Does the state-to-state evolution work for non-unitary dynamics?
I tried evolving a ket with a nonhermitian Hamiltonian but the fidelity computed by the class FidCompTraceDiff does not correspond to the actual fidelity between the target and evolved kets.
Thanks

Alex Pitchford

unread,
Sep 21, 2016, 4:13:35 PM9/21/16
to qu...@googlegroups.com
Hi Shruti
Many thanks for the ref, I will add this as an issue / feature request and see what we can do...
Alex



Alex Pitchford

unread,
Sep 21, 2016, 4:19:19 PM9/21/16
to qu...@googlegroups.com
Hi Ron,
Firstly, quick check on versions, can I assume that you are on some reasonably recent github release?

Also, I suppose there are many measure of fidelity. Are you saying that FidCompTraceDiff does not compute the fidelity that it is documented to do? Or that it does not match some other measure you are using?
I have not tried the FidCompTraceDiff with state-to-state. I would be happy to look at your example if you want to email it to me directly.

Alex 

Ron B.

unread,
Sep 21, 2016, 8:38:38 PM9/21/16
to QuTiP: Quantum Toolbox in Python
Hi Alex,

Yes I am using the latest github version 4.0.0.dev0+2aa51b9.

I suppose that FidCompTraceDiff does what it is supposed to do but I am not fully sure what is it. I do not fully understand the code, hence my question.
I guess what I expected was something similar to the description in the original GRAPE paper (eqs.2 and 12)
http://www.org.ch.tum.de/glaser/94(GRAPE_JMR_05).pdf

There, the fidelity measure is the usual overlap between two states(pure or mixed).

Here is a very simple(and stupid) example
https://gist.github.com/anonymous/2e71ec0bd31a060d98f60ae7d905d1e5

I don't know if it make any sense, but the fidelity calculated by the FidComp class is clearly not the overlap between the target and actual final states.

Thanks,
Ron

p.s I would also be interested in the smoothing features,

Alex Pitchford

unread,
Sep 23, 2016, 7:23:24 AM9/23/16
to qu...@googlegroups.com
Hi Ron,

I discussed this question with a former college yestereve. 
The FidCompTraceDiff uses the Frobenius norm. It's not clear that this can be applied to states, but let's say it cannot.
Now if your system is not unitary, then it must be modelled as an open quantum system. This means that you need to consider the evolution of the density matrix using the master equation formalism. You will find a lot of literature on this. Most of qutip is for solving this kind of problem. You can find a control example of this in the notebooks:

There is another version in:

You will note however, that these example are for gate synthesis. So now the question is how do you compare evolved and target states. Well, my former college said he has been working on this recently, and it was not all that trivial. I guess as it is part of his current research, then he did not want to give it away as yet. So you may have to figure this one out yourself. There is nothing in qutip.control for it presently. We would be happy to receive a contribution :) It is also the part of my current research, so maybe I will add something soon.  It is pretty easy to subclass a FidComp however. There are examples in my qtrl-tutorial repo for this.

All the best

Alex

Ron B.

unread,
Oct 4, 2016, 10:22:40 AM10/4/16
to QuTiP: Quantum Toolbox in Python
Hi Alex,

Thanks for your reply.
I managed to do something that seems to work.
I'll see if I can put it together with qutip.

Best,
Ron
To unsubscribe from this group and stop receiving emails from it, send an email to qutip+un...@googlegroups.com.

Alex Pitchford

unread,
Oct 4, 2016, 11:10:32 AM10/4/16
to qu...@googlegroups.com
Hi Ron,

I have just back from a conference on quantum optimal control algorithms. Someone there mentioned evolving under non-hermitian dynamics generators, 'Hamiltonians' of a kind.

Clearly the propagators of evolution will not be unitary and hence the state vectors will not be normalised. I think it would still make sense to use the unitary fidelity computer, which calculates the overlap, however you may have to modify (by subclassing) it to normalise the state vector first.

All the best,

Alex

To unsubscribe from this group and stop receiving emails from it, send an email to qutip+unsubscribe@googlegroups.com.

Sourabh Kumar

unread,
Aug 17, 2017, 4:38:08 AM8/17/17
to QuTiP: Quantum Toolbox in Python
Hi, 

I was wondering if the feature of fixing the initial and final pulse amplitudes for the drives has been incorporated yet. This is needed for the stabilization of the final state in our problem. 

Thanks, 
Sourabh


On Wednesday, September 21, 2016 at 2:13:35 PM UTC-6, Alex Pitchford wrote:
Hi Shruti
Many thanks for the ref, I will add this as an issue / feature request and see what we can do...
Alex


On 21 September 2016 at 18:46, Ron B. <ronb...@gmail.com> wrote:
Hi,

I have a similar issue.
Does the state-to-state evolution work for non-unitary dynamics?
I tried evolving a ket with a nonhermitian Hamiltonian but the fidelity computed by the class FidCompTraceDiff does not correspond to the actual fidelity between the target and evolved kets.
Thanks

--
You received this message because you are subscribed to the Google Groups "QuTiP: Quantum Toolbox in Python" group.
To unsubscribe from this group and stop receiving emails from it, send an email to qutip+un...@googlegroups.com.

Alex Pitchford

unread,
Aug 17, 2017, 11:46:41 AM8/17/17
to qu...@googlegroups.com
Hi,

No, sorry we have not implemented anything to do this as yet.

Alex

To unsubscribe from this group and stop receiving emails from it, send an email to qutip+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages