53
53
function scheme_analy (scheme, dim, tnum, para_num, ctrl_num)
54
54
pdata = param_data (scheme)
55
55
rho0 = state_data (scheme)
56
- sdata = ndims (rho0)[1 ]== 1 ? rho0* rho0' : rho0
56
+ sdata = ndims (rho0)[1 ] == 1 ? rho0 * rho0' : rho0
57
57
58
58
tspan = pdata. tspan
59
59
Δt = tspan[2 ] - tspan[1 ]
@@ -245,7 +245,7 @@ function gradient_QFIM_analy(alg::GRAPE, obj, scheme)
245
245
dim = get_dim (scheme)
246
246
tnum = length (pdata. tspan)
247
247
para_num = length (pdata. hamiltonian. dH)
248
- ctrl_num = get_ctrl_num (scheme)
248
+ ctrl_num = get_ctrl_num (scheme)
249
249
250
250
ρt_T, ∂ρt_T, δρt_δV, ∂xδρt_δV = scheme_analy (scheme, dim, tnum, para_num, ctrl_num)
251
251
@@ -266,43 +266,43 @@ function gradient_QFIM_analy(alg::GRAPE, obj, scheme)
266
266
pdata. ctrl[cm][tm] = pdata. ctrl[cm][tm] + alg. epsilon * δF
267
267
end
268
268
end
269
- # elseif para_num == 2
270
- # coeff1 = real(det(F))
271
- # coeff2 =
272
- # obj.W[1, 1] * F_T[2, 2] + obj.W[2, 2] * F_T[1, 1] - obj.W[1, 2] * F_T[2, 1] -
273
- # obj.W[2, 1] * F_T[1, 2]
274
- # cost_function =
275
- # (abs(det(F_T)) < obj.eps ? (1.0 / obj.eps) : real(tr(obj.W * inv(F_T))))
276
- # for cm = 1:ctrl_num
277
- # for tm = 1:(tnum-1)
278
- # δF_all = [[0.0 for i = 1:para_num] for j = 1:para_num]
279
- # ∂ρt_T_δV = δρt_δV[cm][tm] |> vec2mat
280
- # for pm = 1:para_num
281
- # for pn = 1:para_num
282
- # ∂xδρt_T_δV_a = ∂xδρt_δV[pm][cm][tm] |> vec2mat
283
- # ∂xδρt_T_δV_b = ∂xδρt_δV[pn][cm][tm] |> vec2mat
284
- # term1 = tr(∂xδρt_T_δV_a * Lx[pn])
285
- # term2 = tr(∂xδρt_T_δV_b * Lx[pm])
286
-
287
- # anti_commu = Lx[pm] * Lx[pn] + Lx[pn] * Lx[pm]
288
- # term2 = tr(∂ρt_T_δV * anti_commu)
289
- # δF_all[pm][pn] = ((2 * term1 - 0.5 * term2) |> real)
290
- # end
291
- # end
292
- # item1 =
293
- # -coeff2 * (
294
- # F_T[2, 2] * δF_all[1][1] + F_T[1, 1] * δF_all[2][2] -
295
- # F_T[2, 1] * δF_all[1][2] - F_T[1, 2] * δF_all[2][1]
296
- # ) / coeff1^2
297
- # item2 =
298
- # (
299
- # obj.W[1, 1] * δF_all[2][2] + obj.W[2, 2] * δF_all[1][1] -
300
- # obj.W[1, 2] * δF_all[2][1] - obj.W[2, 1] * δF_all[1][2]
301
- # ) / coeff1
302
- # δF = -(item1 + item2) * cost_function^2
303
- # pdata.ctrl[cm][tm] = pdata.ctrl[cm][tm] + alg.epsilon * δF
304
- # end
305
- # end
269
+ # elseif para_num == 2
270
+ # coeff1 = real(det(F))
271
+ # coeff2 =
272
+ # obj.W[1, 1] * F_T[2, 2] + obj.W[2, 2] * F_T[1, 1] - obj.W[1, 2] * F_T[2, 1] -
273
+ # obj.W[2, 1] * F_T[1, 2]
274
+ # cost_function =
275
+ # (abs(det(F_T)) < obj.eps ? (1.0 / obj.eps) : real(tr(obj.W * inv(F_T))))
276
+ # for cm = 1:ctrl_num
277
+ # for tm = 1:(tnum-1)
278
+ # δF_all = [[0.0 for i = 1:para_num] for j = 1:para_num]
279
+ # ∂ρt_T_δV = δρt_δV[cm][tm] |> vec2mat
280
+ # for pm = 1:para_num
281
+ # for pn = 1:para_num
282
+ # ∂xδρt_T_δV_a = ∂xδρt_δV[pm][cm][tm] |> vec2mat
283
+ # ∂xδρt_T_δV_b = ∂xδρt_δV[pn][cm][tm] |> vec2mat
284
+ # term1 = tr(∂xδρt_T_δV_a * Lx[pn])
285
+ # term2 = tr(∂xδρt_T_δV_b * Lx[pm])
286
+
287
+ # anti_commu = Lx[pm] * Lx[pn] + Lx[pn] * Lx[pm]
288
+ # term2 = tr(∂ρt_T_δV * anti_commu)
289
+ # δF_all[pm][pn] = ((2 * term1 - 0.5 * term2) |> real)
290
+ # end
291
+ # end
292
+ # item1 =
293
+ # -coeff2 * (
294
+ # F_T[2, 2] * δF_all[1][1] + F_T[1, 1] * δF_all[2][2] -
295
+ # F_T[2, 1] * δF_all[1][2] - F_T[1, 2] * δF_all[2][1]
296
+ # ) / coeff1^2
297
+ # item2 =
298
+ # (
299
+ # obj.W[1, 1] * δF_all[2][2] + obj.W[2, 2] * δF_all[1][1] -
300
+ # obj.W[1, 2] * δF_all[2][1] - obj.W[2, 1] * δF_all[1][2]
301
+ # ) / coeff1
302
+ # δF = -(item1 + item2) * cost_function^2
303
+ # pdata.ctrl[cm][tm] = pdata.ctrl[cm][tm] + alg.epsilon * δF
304
+ # end
305
+ # end
306
306
else
307
307
cost_function =
308
308
(abs (det (F_T)) < obj. eps ? (1.0 / obj. eps) : real (tr (obj. W * inv (F_T))))
@@ -365,68 +365,68 @@ function gradient_CFIM_analy(alg, obj, scheme)
365
365
pdata. ctrl[cm][tm] = pdata. ctrl[cm][tm] + alg. epsilon * δF
366
366
end
367
367
end
368
- # elseif para_num == 2
369
- # F_T = CFIM(ρt_T, ∂ρt_T, obj.M; eps = obj.eps)
370
- # L1_tidle = [zeros(ComplexF64, dim, dim) for i = 1:para_num]
371
- # L2_tidle = [[zeros(ComplexF64, dim, dim) for i = 1:para_num] for j = 1:para_num]
372
-
373
- # for para_i = 1:para_num
374
- # for mi = 1:dim
375
- # p = (tr(ρt_T * obj.M[mi]) |> real)
376
- # dp = (tr(∂ρt_T[para_i] * obj.M[mi]) |> real)
377
- # if p > obj.eps
378
- # L1_tidle[para_i] = L1_tidle[para_i] + dp * obj.M[mi] / p
379
- # end
380
- # end
381
- # end
382
-
383
- # for para_i = 1:para_num
384
- # dp_a = (tr(∂ρt_T[para_i] * obj.M[mi]) |> real)
385
- # for para_j = 1:para_num
386
- # dp_b = (tr(∂ρt_T[para_j] * obj.M[mi]) |> real)
387
- # for mi = 1:dim
388
- # p = (tr(ρt_T * obj.M[mi]) |> real)
389
- # if p > obj.eps
390
- # L2_tidle[para_i][para_j] =
391
- # L2_tidle[para_i][para_j] + dp_a * dp_b * obj.M[mi] / p^2
392
- # end
393
- # end
394
- # end
395
- # end
396
- # coeff1 = real(det(F))
397
- # coeff2 =
398
- # obj.W[1, 1] * F_T[2, 2] + obj.W[2, 2] * F_T[1, 1] - obj.W[1, 2] * F_T[2, 1] -
399
- # obj.W[2, 1] * F_T[1, 2]
400
- # cost_function =
401
- # (abs(det(F_T)) < obj.eps ? (1.0 / obj.eps) : real(tr(obj.W * inv(F_T))))
402
- # for cm = 1:ctrl_num
403
- # for tm = 1:(tnum-1)
404
- # δF_all = [[0.0 for i = 1:para_num] for j = 1:para_num]
405
- # ∂ρt_T_δV = δρt_δV[cm][tm] |> vec2mat
406
- # for pm = 1:para_num
407
- # for pn = 1:para_num
408
- # ∂xδρt_T_δV_a = ∂xδρt_δV[pm][cm][tm] |> vec2mat
409
- # ∂xδρt_T_δV_b = ∂xδρt_δV[pn][cm][tm] |> vec2mat
410
- # term1 = tr(∂xδρt_T_δV_a * L1_tidle[pn])
411
- # term2 = tr(∂xδρt_T_δV_b * L1_tidle[pm])
412
- # term3 = tr(∂ρt_T_δV * L2_tidle[pm][pn])
413
- # δF_all[pm][pn] = ((term1 + term2 - term3) |> real)
414
- # end
415
- # end
416
- # item1 =
417
- # -coeff2 * (
418
- # F_T[2, 2] * δF_all[1][1] + F_T[1, 1] * δF_all[2][2] -
419
- # F_T[2, 1] * δF_all[1][2] - F_T[1, 2] * δF_all[2][1]
420
- # ) / coeff1^2
421
- # item2 =
422
- # (
423
- # obj.W[1, 1] * δF_all[2][2] + obj.W[2, 2] * δF_all[1][1] -
424
- # obj.W[1, 2] * δF_all[2][1] - obj.W[2, 1] * δF_all[1][2]
425
- # ) / coeff1
426
- # δF = -(item1 + item2) * cost_function^2
427
- # pdata.ctrl[cm][tm] = pdata.ctrl[cm][tm] + alg.epsilon * δF
428
- # end
429
- # end
368
+ # elseif para_num == 2
369
+ # F_T = CFIM(ρt_T, ∂ρt_T, obj.M; eps = obj.eps)
370
+ # L1_tidle = [zeros(ComplexF64, dim, dim) for i = 1:para_num]
371
+ # L2_tidle = [[zeros(ComplexF64, dim, dim) for i = 1:para_num] for j = 1:para_num]
372
+
373
+ # for para_i = 1:para_num
374
+ # for mi = 1:dim
375
+ # p = (tr(ρt_T * obj.M[mi]) |> real)
376
+ # dp = (tr(∂ρt_T[para_i] * obj.M[mi]) |> real)
377
+ # if p > obj.eps
378
+ # L1_tidle[para_i] = L1_tidle[para_i] + dp * obj.M[mi] / p
379
+ # end
380
+ # end
381
+ # end
382
+
383
+ # for para_i = 1:para_num
384
+ # dp_a = (tr(∂ρt_T[para_i] * obj.M[mi]) |> real)
385
+ # for para_j = 1:para_num
386
+ # dp_b = (tr(∂ρt_T[para_j] * obj.M[mi]) |> real)
387
+ # for mi = 1:dim
388
+ # p = (tr(ρt_T * obj.M[mi]) |> real)
389
+ # if p > obj.eps
390
+ # L2_tidle[para_i][para_j] =
391
+ # L2_tidle[para_i][para_j] + dp_a * dp_b * obj.M[mi] / p^2
392
+ # end
393
+ # end
394
+ # end
395
+ # end
396
+ # coeff1 = real(det(F))
397
+ # coeff2 =
398
+ # obj.W[1, 1] * F_T[2, 2] + obj.W[2, 2] * F_T[1, 1] - obj.W[1, 2] * F_T[2, 1] -
399
+ # obj.W[2, 1] * F_T[1, 2]
400
+ # cost_function =
401
+ # (abs(det(F_T)) < obj.eps ? (1.0 / obj.eps) : real(tr(obj.W * inv(F_T))))
402
+ # for cm = 1:ctrl_num
403
+ # for tm = 1:(tnum-1)
404
+ # δF_all = [[0.0 for i = 1:para_num] for j = 1:para_num]
405
+ # ∂ρt_T_δV = δρt_δV[cm][tm] |> vec2mat
406
+ # for pm = 1:para_num
407
+ # for pn = 1:para_num
408
+ # ∂xδρt_T_δV_a = ∂xδρt_δV[pm][cm][tm] |> vec2mat
409
+ # ∂xδρt_T_δV_b = ∂xδρt_δV[pn][cm][tm] |> vec2mat
410
+ # term1 = tr(∂xδρt_T_δV_a * L1_tidle[pn])
411
+ # term2 = tr(∂xδρt_T_δV_b * L1_tidle[pm])
412
+ # term3 = tr(∂ρt_T_δV * L2_tidle[pm][pn])
413
+ # δF_all[pm][pn] = ((term1 + term2 - term3) |> real)
414
+ # end
415
+ # end
416
+ # item1 =
417
+ # -coeff2 * (
418
+ # F_T[2, 2] * δF_all[1][1] + F_T[1, 1] * δF_all[2][2] -
419
+ # F_T[2, 1] * δF_all[1][2] - F_T[1, 2] * δF_all[2][1]
420
+ # ) / coeff1^2
421
+ # item2 =
422
+ # (
423
+ # obj.W[1, 1] * δF_all[2][2] + obj.W[2, 2] * δF_all[1][1] -
424
+ # obj.W[1, 2] * δF_all[2][1] - obj.W[2, 1] * δF_all[1][2]
425
+ # ) / coeff1
426
+ # δF = -(item1 + item2) * cost_function^2
427
+ # pdata.ctrl[cm][tm] = pdata.ctrl[cm][tm] + alg.epsilon * δF
428
+ # end
429
+ # end
430
430
else
431
431
F_T = CFIM (ρt_T, ∂ρt_T, obj. M; eps = obj. eps)
432
432
L1_tidle = [zeros (ComplexF64, dim, dim) for i = 1 : para_num]
0 commit comments