Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Renames
Objective
toTrajectory
,propagate_objective
topropagate_trajectry
, theobjectives
keyword argument inoptimize
totrajectories
, etc.This is a large, breaking change.
The term "objective" was originally taken from the
krotov
Python package, but has been a considerable source of misunderstanding. People (rightfully) get confused about "objectives" which are separate from the optimization functional. Especially when talking about a perfect entangler optimization where the objectives/trajectories have no target state, I always have to explain that 'objectives' is a misnomer, and that these are just the states whose dynamics enter the functional. The term "trajectory" is more accurate, as it consists of the initial state and the dynamical generator. Any (optional) additional properties (target_state
,weight
, …) are best understood as extra information specific to that trajectory that the functional may use.As part of this breaking change, there have been considerable revisions of related functionality. Trajectories and ControlProblems can now also be instantiated with positional arguments. Trajectories can now take propagation keyword arguments with a
prop_
prefix. These are taken into account inpropagate_trajectory
and the newinit_prop_trajectory
. These should be used in Krotov/GRAPE and finally enable customizing the propagation in an optimal control context (like aprop_callback
that takes out population from the highest level, in lieu of a non-Hermitian Hamiltonian.)See also
JuliaQuantumControl/QuantumControlBase.jl#72