Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
10 changes: 5 additions & 5 deletions src/Common/AdaptiveScheme.jl
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Hamiltonian work at the optimal point ``\textbf{x}_{\mathrm{opt}}``.
- `M`: A set of positive operator-valued measure (POVM). The default measurement is a set of rank-one symmetric informationally complete POVM (SIC-POVM).
- `W`: Whether or not to save all the posterior distributions.
"""
function Adapt(x::AbstractVector, p, rho0::AbstractMatrix, tspan, H, dH; DynMethod=:Expm, method="FOP", savefile=false, max_episode::Int=1000, eps::Float64=1e-8,
function Adapt(x::AbstractVector, p, rho0::AbstractMatrix, tspan, H, dH; dyn_method=:Expm, method="FOP", savefile=false, max_episode::Int=1000, eps::Float64=1e-8,
Hc=missing, ctrl=missing, decay=missing, M=missing, W=missing)
dim = size(rho0)[1]
rho0 = complex.(rho0)
Expand Down Expand Up @@ -68,8 +68,8 @@ function Adapt(x::AbstractVector, p, rho0::AbstractMatrix, tspan, H, dH; DynMeth
F = zeros(p_num)
rho_all = []
for hi in 1:p_num
# dynamics = Lindblad_noisy_controlled{DynMethod}(H[hi], dH[hi], rho0, tspan, decay_opt, gamma, Hc, ctrl)
dynamics = Lindblad(H[hi], dH[hi], Hc, ctrl, rho0, tspan, decay_opt, gamma, DynMethod=DynMethod)
# dynamics = Lindblad_noisy_controlled{dyn_method}(H[hi], dH[hi], rho0, tspan, decay_opt, gamma, Hc, ctrl)
dynamics = Lindblad(H[hi], dH[hi], Hc, ctrl, rho0, tspan, decay_opt, gamma, dyn_method=dyn_method)
rho_tp, drho_tp = evolve(dynamics)
F[hi] = CFIM(rho_tp, drho_tp[1], M; eps=eps)
append!(rho_all, [rho_tp])
Expand Down Expand Up @@ -114,8 +114,8 @@ function Adapt(x::AbstractVector, p, rho0::AbstractMatrix, tspan, H, dH; DynMeth
#### multiparameter senario ####
p_num = length(p|>vec)
x_list = [(Iterators.product(x...))...]
# dynamics_res = [evolve(Lindblad_noisy_controlled{DynMethod}(H_tp, dH_tp, rho0, tspan, decay_opt, gamma, Hc, ctrl)) for (H_tp, dH_tp) in zip(H, dH)]
dynamics_res = [evolve(Lindblad(H_tp, dH_tp, Hc, ctrl, rho0, tspan, decay_opt, gamma, DynMethod=DynMethod)) for (H_tp, dH_tp) in zip(H, dH)]
# dynamics_res = [evolve(Lindblad_noisy_controlled{dyn_method}(H_tp, dH_tp, rho0, tspan, decay_opt, gamma, Hc, ctrl)) for (H_tp, dH_tp) in zip(H, dH)]
dynamics_res = [evolve(Lindblad(H_tp, dH_tp, Hc, ctrl, rho0, tspan, decay_opt, gamma, dyn_method=dyn_method)) for (H_tp, dH_tp) in zip(H, dH)]
F_all = zeros(p_num)
rho_all_list = []
for hi in 1:p_num
Expand Down
72 changes: 36 additions & 36 deletions src/Parameterization/Lindblad/LindbladData.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ abstract type LindbladDynamicsData <: AbstractDynamicsData end

## TODO: reconstruct dynamicsdata structs

mutable struct Lindblad_noiseless_free{DynMethod} <: LindbladDynamicsData
mutable struct Lindblad_noiseless_free{dyn_method} <: LindbladDynamicsData
H0::AbstractMatrix
dH::AbstractVector
ρ0::AbstractMatrix
tspan::AbstractVector
end

mutable struct Lindblad_noisy_free{DynMethod} <: LindbladDynamicsData
mutable struct Lindblad_noisy_free{dyn_method} <: LindbladDynamicsData
H0::AbstractMatrix
dH::AbstractVector
ρ0::AbstractMatrix
Expand All @@ -19,14 +19,14 @@ mutable struct Lindblad_noisy_free{DynMethod} <: LindbladDynamicsData
end


mutable struct Lindblad_noiseless_timedepend{DynMethod} <: LindbladDynamicsData
mutable struct Lindblad_noiseless_timedepend{dyn_method} <: LindbladDynamicsData
H0::AbstractVector
dH::AbstractVector
ρ0::AbstractMatrix
tspan::AbstractVector
end

mutable struct Lindblad_noisy_timedepend{DynMethod} <: LindbladDynamicsData
mutable struct Lindblad_noisy_timedepend{dyn_method} <: LindbladDynamicsData
H0::AbstractVector
dH::AbstractVector
ρ0::AbstractMatrix
Expand All @@ -35,7 +35,7 @@ mutable struct Lindblad_noisy_timedepend{DynMethod} <: LindbladDynamicsData
γ::AbstractVector
end

mutable struct Lindblad_noiseless_controlled{DynMethod} <: LindbladDynamicsData
mutable struct Lindblad_noiseless_controlled{dyn_method} <: LindbladDynamicsData
H0::AbstractVecOrMat
dH::AbstractVector
ρ0::AbstractMatrix
Expand All @@ -44,7 +44,7 @@ mutable struct Lindblad_noiseless_controlled{DynMethod} <: LindbladDynamicsData
ctrl::AbstractVector
end

mutable struct Lindblad_noisy_controlled{DynMethod} <: LindbladDynamicsData
mutable struct Lindblad_noisy_controlled{dyn_method} <: LindbladDynamicsData
H0::AbstractVecOrMat
dH::AbstractVector
ρ0::AbstractMatrix
Expand All @@ -56,14 +56,14 @@ mutable struct Lindblad_noisy_controlled{DynMethod} <: LindbladDynamicsData
end


mutable struct Lindblad_noiseless_free_pure{DynMethod} <: LindbladDynamicsData
mutable struct Lindblad_noiseless_free_pure{dyn_method} <: LindbladDynamicsData
H0::AbstractMatrix
dH::AbstractVector
ψ0::AbstractVector
tspan::AbstractVector
end

mutable struct Lindblad_noisy_free_pure{DynMethod} <: LindbladDynamicsData
mutable struct Lindblad_noisy_free_pure{dyn_method} <: LindbladDynamicsData
H0::AbstractMatrix
dH::AbstractVector
ψ0::AbstractVector
Expand All @@ -72,22 +72,22 @@ mutable struct Lindblad_noisy_free_pure{DynMethod} <: LindbladDynamicsData
γ::AbstractVector
end

mutable struct Lindblad_noiseless_timedepend_pure{DynMethod} <: LindbladDynamicsData
mutable struct Lindblad_noiseless_timedepend_pure{dyn_method} <: LindbladDynamicsData
H0::AbstractVector
dH::AbstractVector
ψ0::AbstractVector
tspan::AbstractVector
end

mutable struct Lindblad_noisy_timedepend_pure{DynMethod} <: LindbladDynamicsData
mutable struct Lindblad_noisy_timedepend_pure{dyn_method} <: LindbladDynamicsData
H0::AbstractVector
dH::AbstractVector
ψ0::AbstractVector
tspan::AbstractVector
decay_opt::AbstractVector
γ::AbstractVector
end
mutable struct Lindblad_noiseless_controlled_pure{DynMethod} <: LindbladDynamicsData
mutable struct Lindblad_noiseless_controlled_pure{dyn_method} <: LindbladDynamicsData
H0::AbstractVecOrMat
dH::AbstractVector
ψ0::AbstractVector
Expand All @@ -96,7 +96,7 @@ mutable struct Lindblad_noiseless_controlled_pure{DynMethod} <: LindbladDynamics
ctrl::AbstractVector
end

mutable struct Lindblad_noisy_controlled_pure{DynMethod} <: LindbladDynamicsData
mutable struct Lindblad_noisy_controlled_pure{dyn_method} <: LindbladDynamicsData
H0::AbstractVecOrMat
dH::AbstractVector
ψ0::AbstractVector
Expand All @@ -113,8 +113,8 @@ Lindblad(
dH::AbstractVector,
ρ0::AbstractMatrix,
tspan::AbstractVector;
DynMethod::Symbol=:Expm,
) = Lindblad(Lindblad_noiseless_free{eval(DynMethod)}(H0, dH, ρ0, tspan), :noiseless, :free)
dyn_method::Symbol=:Expm,
) = Lindblad(Lindblad_noiseless_free{eval(dyn_method)}(H0, dH, ρ0, tspan), :noiseless, :free)

Lindblad(
H0::AbstractMatrix,
Expand All @@ -123,16 +123,16 @@ Lindblad(
tspan::AbstractVector,
decay_opt::AbstractVector,
γ::AbstractVector;
DynMethod::Symbol=:Expm,
) = Lindblad(Lindblad_noisy_free{eval(DynMethod)}(H0, dH, ρ0, tspan, decay_opt, γ), :noisy, :free)
dyn_method::Symbol=:Expm,
) = Lindblad(Lindblad_noisy_free{eval(dyn_method)}(H0, dH, ρ0, tspan, decay_opt, γ), :noisy, :free)

Lindblad(
H0::AbstractVector,
dH::AbstractVector,
ρ0::AbstractMatrix,
tspan::AbstractVector;
DynMethod::Symbol=:Expm,
) = Lindblad(Lindblad_noiseless_timedepend{eval(DynMethod)}(H0, dH, ρ0, tspan), :noiseless, :timedepend)
dyn_method::Symbol=:Expm,
) = Lindblad(Lindblad_noiseless_timedepend{eval(dyn_method)}(H0, dH, ρ0, tspan), :noiseless, :timedepend)

Lindblad(
H0::AbstractVector,
Expand All @@ -141,9 +141,9 @@ Lindblad(
tspan::AbstractVector,
decay_opt::AbstractVector,
γ::AbstractVector;
DynMethod::Symbol=:Expm,
dyn_method::Symbol=:Expm,
) = Lindblad(
Lindblad_noisy_timedepend{eval(DynMethod)}(H0, dH, ρ0, tspan, decay_opt, γ),
Lindblad_noisy_timedepend{eval(dyn_method)}(H0, dH, ρ0, tspan, decay_opt, γ),
:noisy,
:timedepend,
)
Expand All @@ -155,9 +155,9 @@ Lindblad(
ctrl::AbstractVector,
ρ0::AbstractMatrix,
tspan::AbstractVector;
DynMethod::Symbol=:Expm,
dyn_method::Symbol=:Expm,
) = Lindblad(
Lindblad_noiseless_controlled{eval(DynMethod)}(H0, dH, ρ0, tspan, Hc, ctrl),
Lindblad_noiseless_controlled{eval(dyn_method)}(H0, dH, ρ0, tspan, Hc, ctrl),
:noiseless,
:controlled,
)
Expand All @@ -170,9 +170,9 @@ Lindblad(
tspan::AbstractVector,
decay_opt::AbstractVector,
γ::AbstractVector;
DynMethod::Symbol=:Expm,
dyn_method::Symbol=:Expm,
) = Lindblad(
Lindblad_noisy_controlled{eval(DynMethod)}(H0, dH, ρ0, tspan, decay_opt, γ, Hc, ctrl),
Lindblad_noisy_controlled{eval(dyn_method)}(H0, dH, ρ0, tspan, decay_opt, γ, Hc, ctrl),
:noisy,
:controlled,
)
Expand All @@ -182,8 +182,8 @@ Lindblad(
dH::AbstractVector,
ψ0::AbstractVector,
tspan::AbstractVector;
DynMethod::Symbol=:Expm,
) = Lindblad(Lindblad_noiseless_free_pure{eval(DynMethod)}(H0, dH, ψ0, tspan), :noiseless, :free, :ket)
dyn_method::Symbol=:Expm,
) = Lindblad(Lindblad_noiseless_free_pure{eval(dyn_method)}(H0, dH, ψ0, tspan), :noiseless, :free, :ket)

Lindblad(
H0::AbstractMatrix,
Expand All @@ -192,17 +192,17 @@ Lindblad(
tspan::AbstractVector,
decay_opt::AbstractVector,
γ::AbstractVector;
DynMethod::Symbol=:Expm,
) = Lindblad(Lindblad_noisy_free_pure{eval(DynMethod)}(H0, dH, ψ0, tspan, decay_opt, γ), :noisy, :free, :ket)
dyn_method::Symbol=:Expm,
) = Lindblad(Lindblad_noisy_free_pure{eval(dyn_method)}(H0, dH, ψ0, tspan, decay_opt, γ), :noisy, :free, :ket)

Lindblad(
H0::AbstractVector,
dH::AbstractVector,
ψ0::AbstractVector,
tspan::AbstractVector;
DynMethod::Symbol=:Expm,
dyn_method::Symbol=:Expm,
) = Lindblad(
Lindblad_noiseless_timedepend{eval(DynMethod)}(H0, dH, ψ0, tspan),
Lindblad_noiseless_timedepend{eval(dyn_method)}(H0, dH, ψ0, tspan),
:noiseless,
:timedepend,
:ket,
Expand All @@ -215,9 +215,9 @@ Lindblad(
tspan::AbstractVector,
decay_opt::AbstractVector,
γ::AbstractVector;
DynMethod::Symbol=:Expm,
dyn_method::Symbol=:Expm,
) = Lindblad(
Lindblad_noisy_timedepend_pure{eval(DynMethod)}(H0, dH, ψ0, tspan, decay_opt, γ),
Lindblad_noisy_timedepend_pure{eval(dyn_method)}(H0, dH, ψ0, tspan, decay_opt, γ),
:noisy,
:timedepend,
:ket,
Expand All @@ -230,9 +230,9 @@ Lindblad(
ctrl::AbstractVector,
ψ0::AbstractVector,
tspan::AbstractVector;
DynMethod::Symbol=:Expm,
dyn_method::Symbol=:Expm,
) = Lindblad(
Lindblad_noiseless_controlled{eval(DynMethod)}(H0, dH, ψ0, tspan, Hc, ctrl),
Lindblad_noiseless_controlled{eval(dyn_method)}(H0, dH, ψ0, tspan, Hc, ctrl),
:noiseless,
:controlled,
:ket,
Expand All @@ -247,9 +247,9 @@ Lindblad(
tspan::AbstractVector,
decay_opt::AbstractVector,
γ::AbstractVector;
DynMethod::Symbol=:Expm,
dyn_method::Symbol=:Expm,
) = Lindblad(
Lindblad_noisy_controlled_pure{eval(DynMethod)}(H0, dH, ψ0, tspan, decay_opt, γ, Hc, ctrl),
Lindblad_noisy_controlled_pure{eval(dyn_method)}(H0, dH, ψ0, tspan, decay_opt, γ, Hc, ctrl),
:noisy,
:controlled,
:ket,
Expand Down
Loading