Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
f0af49e
moving otimes to isomorphisms
aarontrowbridge Nov 1, 2024
e7aacc4
manifest update
aarontrowbridge Nov 1, 2024
c0a550e
integrator signature refactor -- removes sys dependence
aarontrowbridge Nov 1, 2024
eeac85a
problem template fixes (tests passing)
aarontrowbridge Nov 1, 2024
f2dd861
moved isomorphisms to core
aarontrowbridge Nov 1, 2024
e634cc3
big rip
aarontrowbridge Nov 4, 2024
d07420d
big rip 2: quantum objects
aarontrowbridge Nov 6, 2024
e3412e4
traj init for unitary
andgoldschmidt Nov 6, 2024
c0cdbbf
state sampling problem template
andgoldschmidt Nov 6, 2024
d54f53c
refactored system to integrator interface
aarontrowbridge Nov 6, 2024
4708228
density operators
aarontrowbridge Nov 10, 2024
f66b443
traj init for unitary
andgoldschmidt Nov 6, 2024
c7bdccc
state sampling problem template
andgoldschmidt Nov 6, 2024
b69af1d
bug fix: a_guess option
andgoldschmidt Nov 7, 2024
c215e41
bug fix: free phase obj
andgoldschmidt Nov 7, 2024
edde00e
phase rollout fidelity
andgoldschmidt Nov 7, 2024
43e73d9
free phase initialization
andgoldschmidt Nov 7, 2024
f5d943e
Tests for free phases
andgoldschmidt Nov 9, 2024
2ab761f
free phase incr
andgoldschmidt Nov 9, 2024
b4d5eea
bug fix: mintime and robprob fidelity subspace
andgoldschmidt Nov 9, 2024
d26420c
bug fix: drop drive_sigma arg, fix subspace nothing
andgoldschmidt Nov 9, 2024
3a34581
problem template fixes (tests passing)
aarontrowbridge Nov 1, 2024
98800fd
big rip
aarontrowbridge Nov 4, 2024
1bdd6a4
refactored system to integrator interface
aarontrowbridge Nov 6, 2024
6705653
density operators
aarontrowbridge Nov 10, 2024
91fd3a5
rebase fixes (broken)
aarontrowbridge Nov 11, 2024
a6aae3b
Merge remote-tracking branch 'origin/main' into 163-feature-peel-off-…
aarontrowbridge Nov 11, 2024
c8621ac
rebase complete (fixes free phase loss)
aarontrowbridge Nov 11, 2024
bfb6ff8
docs uopdates
aarontrowbridge Nov 12, 2024
0d2efae
renaming OperatorType -> AbstractPiccoloOperator
aarontrowbridge Nov 19, 2024
560c857
adding quantum system templates + cleaning
aarontrowbridge Nov 19, 2024
fbcbb1b
update system type from AbstractQuantumSystem to OpenQuantumSystem an…
aarontrowbridge Dec 2, 2024
5c4d06f
refactor trajectory initialization to use density_to_iso_vec for init…
aarontrowbridge Dec 5, 2024
881e083
refactor rollout_fidelity to have sys as arg
aarontrowbridge Dec 23, 2024
eac5100
passing tests (except for direct sum prob)
aarontrowbridge Jan 6, 2025
cbeebbb
refactor add_suffix and remove_suffix functions to eliminate sys para…
aarontrowbridge Jan 9, 2025
5199435
bump version to 0.5.0 and update dependencies for compatibility
aarontrowbridge Jan 9, 2025
601cd2d
Merge branch 'main' into 163-feature-peel-off-core-functionality-into…
jack-champagne Jan 13, 2025
6107ce4
remove operatortype
jack-champagne Jan 13, 2025
09a3143
add back in zero initial and final
jack-champagne Jan 13, 2025
45b6d36
revert removing list of state names
jack-champagne Jan 13, 2025
f72f5fd
refactor callbacks and problem templates to use rollout fidelity and …
aarontrowbridge Jan 14, 2025
ae3a31f
update Project.toml dependencies and refactor drive length references…
aarontrowbridge Jan 14, 2025
19004b3
fix callbacks except for new tol
jack-champagne Jan 15, 2025
8211e7c
remove fidelity test from callback test suite - see PR comment #173
jack-champagne Jan 15, 2025
cc602dc
add qualified path for get_datavec
jack-champagne Jan 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
rebase complete (fixes free phase loss)
  • Loading branch information
aarontrowbridge committed Nov 11, 2024
commit c8621ac8b26c4e3cf73d634c22ab716cf92148d9
2 changes: 1 addition & 1 deletion src/problem_solvers.jl
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ function solve!(
# fids = fidelity(prob)
# println("\nInitial Fidelities: $fids")
# elseif state_type == :unitary
# fids = unitary_fidelity(prob)
# fids = unitary_rollout_fidelity(prob)
# println("\nInitial Fidelity: $fids")


Expand Down
26 changes: 12 additions & 14 deletions src/problem_templates/quantum_state_sampling_problem.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ function QuantumStateSamplingProblem(
control_name::Symbol=:a,
timestep_name::Symbol=:Δt,
a_bound::Float64=1.0,
a_bounds=fill(a_bound, length(systems[1].G_drives)),
a_bounds=fill(a_bound, systems[1].n_drives),
a_guess::Union{Matrix{Float64},Nothing}=nothing,
da_bound::Float64=Inf,
da_bounds::Vector{Float64}=fill(da_bound, length(systems[1].G_drives)),
da_bounds::Vector{Float64}=fill(da_bound, systems[1].n_drives),
dda_bound::Float64=1.0,
dda_bounds::Vector{Float64}=fill(dda_bound, length(systems[1].G_drives)),
dda_bounds::Vector{Float64}=fill(dda_bound, systems[1].n_drives),
Δt_min::Float64=0.5 * Δt,
Δt_max::Float64=1.5 * Δt,
drive_derivative_σ::Float64=0.01,
Expand All @@ -40,14 +40,12 @@ function QuantumStateSamplingProblem(
if !isnothing(init_trajectory)
traj = init_trajectory
else
n_drives = length(systems[1].G_drives)

traj = initialize_trajectory(
ψ_goals,
ψ_inits,
T,
Δt,
n_drives,
systems[1].n_drives,
(a_bounds, da_bounds, dda_bounds);
state_name=state_name,
control_name=control_name,
Expand Down Expand Up @@ -92,12 +90,12 @@ function QuantumStateSamplingProblem(
for name ∈ names
if piccolo_options.integrator == :pade
state_integrator = QuantumStatePadeIntegrator(
system, name, control_name, traj;
name, control_name, system, traj;
order=piccolo_options.pade_order
)
elseif piccolo_options.integrator == :exponential
state_integrator = QuantumStateExponentialIntegrator(
system, name, control_name, traj
name, control_name, system, traj
)
else
error("integrator must be one of (:pade, :exponential)")
Expand Down Expand Up @@ -165,9 +163,9 @@ end
sys1_state_names = [n for n ∈ state_names if endswith(string(n), "1")]

# Separately compute all unique initial and goal state fidelities
init = [fidelity(prob.trajectory, sys1, state_symb=n) for n in sys1_state_names]
init = [rollout_fidelity(prob.trajectory, sys1, state_symb=n) for n in sys1_state_names]
solve!(prob, max_iter=20)
final = [fidelity(prob.trajectory, sys1, state_symb=n) for n in sys1_state_names]
final = [rollout_fidelity(prob.trajectory, sys1, state_symb=n) for n in sys1_state_names]
@test all(final .> init)

# Check that a_guess can be used
Expand All @@ -188,9 +186,9 @@ end
robustness=false
)
solve!(prob_default, max_iter=20)
final_default = fidelity(prob_default.trajectory, sys1)
final_default = rollout_fidelity(prob_default.trajectory, sys1)
# Pick any initial state
final_robust = fidelity(prob.trajectory, sys1, state_symb=state_names[1])
final_robust = rollout_fidelity(prob.trajectory, sys1, state_symb=state_names[1])
@test final_robust > final_default
end

Expand All @@ -216,8 +214,8 @@ end
state_names = [n for n ∈ prob.trajectory.names if startswith(string(n), string(state_name))]
sys1_state_names = [n for n ∈ state_names if endswith(string(n), "1")]

init = [fidelity(prob.trajectory, sys1, state_symb=n) for n in sys1_state_names]
init = [rollout_fidelity(prob.trajectory, sys1, state_symb=n) for n in sys1_state_names]
solve!(prob, max_iter=20)
final = [fidelity(prob.trajectory, sys1, state_symb=n) for n in sys1_state_names]
final = [rollout_fidelity(prob.trajectory, sys1, state_symb=n) for n in sys1_state_names]
@test all(final .> init)
end
6 changes: 3 additions & 3 deletions src/problem_templates/unitary_minimum_time_problem.jl
Original file line number Diff line number Diff line change
Expand Up @@ -184,9 +184,9 @@ end
)

# Soft fidelity constraint
final_fidelity = minimum([0.99, unitary_fidelity(prob)])
final_fidelity = minimum([0.99, unitary_rollout_fidelity(prob)])
mintime_prob = UnitaryMinimumTimeProblem(
prob,
prob,
final_fidelity=final_fidelity,
phase_operators=phase_operators
)
Expand All @@ -198,7 +198,7 @@ end

# Quick check for using default fidelity
@test UnitaryMinimumTimeProblem(
prob,
prob,
final_fidelity=final_fidelity,
phase_operators=phase_operators
) isa QuantumControlProblem
Expand Down
4 changes: 2 additions & 2 deletions src/problem_templates/unitary_smooth_pulse_problem.jl
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ end
end
@testitem "Free phase Y gate using X" begin
using Random
Random.seed!(1234)
# Random.seed!(1234)
phase_name = :ϕ
phase_operators = [PAULIS[:Z]]

Expand All @@ -350,7 +350,7 @@ end
)

before = prob.trajectory.global_data[phase_name]
solve!(prob, max_iter=100)
solve!(prob, max_iter=50)
after = prob.trajectory.global_data[phase_name]

@test before ≠ after
Expand Down