History¶
1.2.1 (2021-01-13)¶
Bugfix: Crash when initializing discretized numpy-array controls (#79, thanks to @loganbvh)
Bugfix: Corrected definition of co-states in Dissipative Qubit Reset example (#80, thanks to Alberto Castro)
Update: Switched Testing and Documentation deployment from Travis to Github Actions (#82)
1.2.0 (2020-08-17)¶
Added:
via_midpointsargument tokrotov.conversions.discretizefunctionChanged: Controls and update shapes are now discretized in a way that ensures numerical stability (#74, thanks to @zachmanson)
Changed: Replaced
unisegdependency withgrapheme(#76)
Note: due to the changes in the time discretization of the controls and update shapes, this version will generally not reproduce optimization results from previous versions to machine precision.
1.1.0 (2020-03-24)¶
Added: Support for Python 3.8
Added: Support for QuTiP 4.5.0
Added:
krotov.parallelization.set_parallelizationfunctionAdded:
krotov.parallelization.parallel_mapfunction (improved implementation of QuTiP’sparallel_map)Added: Ability to use threadpoolctl to limit unwanted threading
Added: limit_thread_pool option to
krotov.optimize_pulsesChanged:
krotov.propagators.expmnow guarantees single-threaded execution
1.0.0 (2019-12-16)¶
Update: Citation info now points to SciPost paper (#61)
Added: parameters col_formats and col_headers to customize the output of
krotov.info_hooks.print_table(#65)Added: info-hooks now have access to the additional arguments propagator, chi_constructor, mu, sigma, iter_start, and iter_stop (#66)
Added: parameter keep_original_objectives to
krotov.objectives.ensemble_objectives(#67)Added: “Related Software” in the documentation
Update: Documentation is now hosted on gh-pages and deployed by Doctr (#68)
0.5.0 (2019-12-04)¶
Update: Documentation now contains all information from https://arxiv.org/abs/1902.11284v5
Added: Allow to pass args to time-dependent control functions (#56, thanks to @timohillmann)
Changed: Renamed
krotov.structural_conversionstokrotov.conversionsBugfix: Crash when
krotov.optimize_pulsesis called withiter_stop=0(#58)Added:
krotov.result.Resultis now exposed at the top level of the API, askrotov.Result(#59, thanks to @nathanshammah)Added: str-representation of
krotov.result.Resultnow includes the total running time (#60, thanks to @nathanshammah)
0.4.1 (2019-10-11)¶
Update: Documentation now contains all information from https://arxiv.org/abs/1902.11284v4 (#54)
Added: a PDF of the documentation is now available at https://github.com/qucontrol/krotov/tree/master/docs/pdf (#52, thanks to @TejasAvinashShetty)
0.4.0 (2019-10-08)¶
Added: Support for Python 3.7
Changed: The
'shape'key inpulse_optionswas renamed to'update_shape', to further avoid confusion between pulse shapes and update shapes.Changed: The
.adjointproperty ofObjectiveis now a methodAdded: Ability to not use QuTiP
Qobjobjects, but arbitrary low-level objects instead.Improved: Printing an
Objectivenow uses internal counters and a symbolic notation to identify objects shared between different objectives. (#43)Improved:
gate_objectivesnow takes into account if target states are (reshuffled) basis states and does not create unnecessary new copies.Bugfix: Two
Objectiveinstances that contain numpy arrays as controls can now be compared with==(#44)Bugfix: Custom attributes (such as
weight) are now preserved when copying anObjective(#44)Bugfix: Calling
copy.deepcopyon anObjectivenow preserves control functions (#44)Improved: The
Objective.mesolveandObjective.propagatemethods can now receive argumentsHandc_opsto override the respective attributes of the objectives. This make is easier to analyze perform a robustness analysis, where the result of an optimization should be propagated under a perturbed Hamiltonian.Improved: The
print_tableandprint_debug_informationinfo-hooks now flush their output buffers after each iteration. As a result, when writing to a file, that file can be watched withtail -f.Changed: Redefine
tau_valsas their complex conjugate, fixing a bug inchis_ssandchis_sm(#46)Bugfix: Correctly calculate ∂H/∂ϵ if ϵ occurs in H multiple times (#47, thanks to @uiofgh)
Bugfix: Correctly calculate ∂H/∂ϵ=0 if the specific ϵ currently being updated does not occur in H (#48)
Added: Method
objectives_with_controlsforResultobject.
0.3.0 (2019-03-01)¶
Added: Preprint citation information (
krotov.__arxiv__,krotov.__citation__,krotov.__bibtex__)Added: Ability to continue from a previous optimization (#26)
Added: Parameter
outtoprint_tableinfo-hookAdded: Parameter
finalizetoResult.loadAdded: Ability to dump optimization result every so many iterations (
dump_resultcheck-convergence routine)Added: re-entrant option for
DensityMatrixODEPropagatorBugfix: Discretize controls to float values (#41)
Bugfix: Fix overlap for non-Hermitian operators (#39)
Bugfix: Interface for passing
tau_valstochi_constructor(#36)Added: function
above_valuefor convergence check (#35)
0.2.0 (2019-02-14)¶
Added: Implementation of all the standard functionals
Added: The
info_hookreceives additional information, including ∫gₐ(t)dt (#32)Added: Initialization of objectives for gate optimization in Liouville space
Added: A new propagator
DensityMatrixODEPropagatorfor faster density matrix propagationAdded: Support for “stateful” propagators by subclassing from
krotov.propagators.PropagatorChanged: more flexibility for parallelization (#29)
Added: Support for the second-order pulse update
Changed: The options for the controls (λₐ, update-shape) are now passed through a simplified
dictinterface, instead of a customPulseOptionsclass.
0.1.0 (2018-12-24)¶
Initial release with complete implementation of first-order Krotov’s method
Support for state-to-state and gate optimization, for both closed and open systems