nulinspiratie / SilQ

Software for quantum control of donor atoms in silicon
Other
6 stars 1 forks source link

Add auto-tuning routines #295

Open maij opened 2 years ago

maij commented 2 years ago

WIP. Input is welcome!

This PR integrates the autotuning scripts developed by Serwan for various experiments. It employs the Nelder-mead optimisation algorithm provided by scipy.

Todo:

At the moment this module has no classes, and it might not need them. We don't have any objects that need to be passed around so this might be fine.

nulinspiratie commented 2 years ago

Hey @maij good suggestion! I think your second todo item is already covered by optimize_nelder_mead, don't you think? My thought was to make a general function that only needs a cost function and then optimizes over it. So it isn't specific to gate voltages. I also think that an abstract class isn't needed. The requirements for a cost function are super general: provide values for variables -> return cost.

I think it makes sense to split the file into two: one contains the general optimization functions (currently the top two functions) and another that is specific for voltage optimization etc. (the rest of the file)

Also, when I was writing this code, I was uncertain whether I should use classes or just functions. In the end I went for functions because I thought the optimize_nelder_mead would be very general, whereas the functions calling this would vary a lot in how they're structured. But it's something I'm not entirely sure about, what are your thoughts?

Once we have converged here I can at least give a crack at writing docstrings for the methods, that will hopefully make their usage more clear