krotov.result module

Module defining the Result object that is returned by optimize_pulses().

Summary

Classes:

Result

Result of a Krotov optimization with optimize_pulses().

__all__: Result

Reference

class krotov.result.Result[source]

Bases: object

Result of a Krotov optimization with optimize_pulses().

objectives

The control objectives

Type:

list[Objective]

tlist

The time grid values

Type:

numpy.ndarray

iters

Iteration numbers, starting at 0.

Type:

list[int]

iter_seconds

for each iteration number, the number of seconds that were spent in the optimization

Type:

list[int]

info_vals

For each iteration, the return value of info_hook, or None

Type:

list

tau_vals

for each iteration, a list of complex overlaps between the target state and the forward-propagated state for each objective, assuming Objective.target contains the target state. If there is no target state, an empty list.

Type:

list[list[complex]

guess_controls

List of the guess controls in array format

Type:

list[numpy.ndarray]

optimized_controls

List of the optimized control fields, in the order corresponding to guess_controls

Type:

list[numpy.ndarray]

controls_mapping

A nested list that indicates where in objectives the guess_controls and optimized_controls are used (as returned by extract_controls_mapping())

Type:

list

all_pulses

If the optimization was performed with store_all_pulses=True, for each iteration, a list of the optimized pulses (in the order corresponding to guess_controls). These pulses are defined at midpoints of the tlist intervals. Empty list if store_all_pulses=False

Type:

list

states

for each objective, a list of states for each value in tlist, obtained from propagation under the final optimized control fields.

Type:

list[list[qutip.Qobj]]

start_local_time

Time stamp of when the optimization started

Type:

time.struct_time

end_local_time

Time stamp of when the optimization ended

Type:

time.struct_time

message

Description of why optimize_pulses() completed, E.g, “Reached 1000 iterations”

Type:

str

time_fmt = '%Y-%m-%d %H:%M:%S'

Format used in start_local_time_str and end_local_time_str

property start_local_time_str

The start_local_time attribute formatted as a string

property end_local_time_str

The end_local_time attribute formatted as a string

property optimized_objectives

A copy of the objectives with the optimized_controls plugged in.

Type:

list[Objective]

objectives_with_controls(controls)[source]

List of objectives with the given controls plugged in.

Parameters:

controls (list[numpy.ndarray]) – A list of control fields, defined on the points of tlist. Must be of the same length as guess_controls and optimized_controls.

Returns:

A copy of objectives, where all control fields are replaced by the elements of the controls.

Return type:

list[Objective]

Raises:

ValueError – If controls does not have the same number controls as guess_controls and optimized_controls, or if any controls are not defined on the points of the time grid.

See also

For plugging in the optimized controls, the optimized_objectives attribute is equivalent to result.objectives_with_controls(result.optimized_controls).

classmethod load(filename, objectives=None, finalize=False)[source]

Construct Result object from a dump() file

Parameters:
  • filename (str) – The file from which to load the Result. Must be in the format created by dump().

  • objectives (None or list[Objective]) – If given, after loading Result from the given filename, overwrite objectives with the given objectives. This is necessary because dump() does not preserve time-dependent controls that are Python functions.

  • finalize (bool) – If given as True, make sure that the optimized_controls are properly finalized. This allows to load a Result that was dumped before optimize_pulses() finished, e.g. by dump_result().

Returns:

The Result instance loaded from filename

Return type:

Result

dump(filename)[source]

Dump the Result to a binary pickle file.

The original Result object can be restored from the resulting file using load(). However, time-dependent control fields that are callables/functions will not be preserved, as they are not “pickleable”.

Parameters:

filename (str) – Name of file to which to dump the Result.