def computeFOMIdeal(func): modelTmp = cspin.ControlledSpin(func, setup, state_init, state_target, noise=None) resTmp = modelTmp.Simulate(T, time_step=dt, method='PWCH', fom=['last:f2t2'], store=False) return resTmp
fT = 1 setup = '1Q1' state_init = 'zero' state_target = 'minus' nb_parameters = 6 nb_trials = 1 #------------------------------------------------------------------------------ # Parameters simulation / optim #------------------------------------------------------------------------------ ilib.reload(cspin) ilib.reload(pfun) funToTest = pfun.LinearFunc([fT / (T - dt), 0]) model = cspin.ControlledSpin(controlFun=funToTest, setup=setup, state_init=state_init, state_target=state_target, T=T, dt=dt) res_constant = model.Simulate(T, time_step=dt, method='testing', fom='lstf2t', store=True) ## Some plots st_tgt = model.state_tgt st = model.state_PWCH st_ad = model.state_ADIAB en_ad = model.energies_ADIAB adiabaticity = model.fidelity_distance_t(st, st_ad)
if fomNew < fomBest: bestRes = optimNM.best fomBest = fomNew cfBestNM = copy.copy(optimNM.simulator.controlFun) print(bestRes) cfBestNM.PlotFunction(x) noise_testing = { 'fom': 'normal_0_0.00', 'Ex': 'normal_0_0.00', 'Ez': 'normal_0_0.00' } modelTestNM = cspin.ControlledSpin(cfBestNM, setup, state_init, state_target, noise=noise_testing) res_optimNM = modelTestNM.Simulate( T, time_step=dt, method='testing', fom=['last:f2t2:rdmtime', 'fluence', 'fluenceNorm', 'smooth'], store=True) modelTestNM.PrintPopulation() #------------------------------------------------------------------------------ # StepFunc - BangBang - DE #------------------------------------------------------------------------------ ilib.reload(ut)
for i in np.arange(nb_trials): print(i) optimBO = cspinopt.ToyModelOptim(paramsSim, paramsOptim, None) optimBO.Run(writeLogs=True) fomNew = optimBO.best['fom'] if fomNew < fomBest: bestRes = optimBO.best fomBest = fomNew cfBestBO = copy.copy(optimBO.simulator.controlFun) print(bestRes) cfBestBO.PlotFunction(x) modelTestBO = cspin.ControlledSpin(cfBestBO, setup, state_init, state_target) res_optimBO = modelTestBO.Simulate(T, time_step = dt, method = 'PWCH', fom = ['last:f2t2:neg', 'fluence', 'fluenceNorm'], store = True) #------------------------------------------------------------------------------ # NM - #------------------------------------------------------------------------------ ilib.reload(ut) ilib.reload(pfun) ilib.reload(cspin) ilib.reload(cspinopt) overall = {'bounds': [0,1], 'constraints':[[0,0]], 'constraints_type':'shift'}
x = np.arange(0, T, dt) gp_iter = 150 #------------------------------------------------------------------------------ # Linear driving #------------------------------------------------------------------------------ ilib.reload(ut) ilib.reload(pfun) ilib.reload(cspin) ilib.reload(cspinopt) fDummy = pfun.SquareExponential({'sigma':0.9, 'mu':2.4*T/5, 'l':T/6}) fDummy2 = pfun.SquareExponential({'sigma':0.9, 'mu':2.6*T/5 , 'l':T/6}) fDummy.PlotFunction(x) fDummy2.PlotFunction(x) model = cspin.ControlledSpin(controlFun = [fDummy, fDummy2], setup = setup, state_init = state_init, state_target = state_target, T=T, dt=dt) res_constant = model.Simulate(T, time_step = dt, method = 'testing', fom = 'last:f2t2', store = True) ## Some plots st_tgt = model.state_tgt st = model.state_PWCH st_ad = model.state_ADIAB en_ad = model.energies_ADIAB adiabaticity = model.fidelity2(st, st_ad) model.PrintPopulation() model.PrintPopulation(st_ad) #plt.plot(adiabaticity) # Fidelity over time (to ensure that the last point is the max) fidelity_t = [model.fidelity(st_tgt, s) for s in st]
nb_parameters = 30 nb_trials = 1 x = np.arange(0, T, dt) gp_iter = 100 #------------------------------------------------------------------------------ # Linear driving #------------------------------------------------------------------------------ ilib.reload(ut) ilib.reload(pfun) ilib.reload(cspin) ilib.reload(cspinopt) fLinear = pfun.LinearFunc([fT / (T - dt), 0]) model = cspin.ControlledSpin(controlFun=fLinear, setup=setup, state_init=state_init, state_target=state_target, T=T, dt=dt) res_constant = model.Simulate(T, time_step=dt, method='testing', fom='last:f2t2', store=True) ## Some plots st_tgt = model.state_tgt st = model.state_PWCH st_ad = model.state_ADIAB en_ad = model.energies_ADIAB adiabaticity = model.fidelity2(st, st_ad)
state_target = 'x0' # 1st evector of X operator nb_parameters = 20 nb_trials = 1 x = np.arange(0, T, dt) #------------------------------------------------------------------------------ # Linear driving #------------------------------------------------------------------------------ ilib.reload(ut) ilib.reload(pfun) ilib.reload(cspin) ilib.reload(cspinopt) fLinear = pfun.LinearFunc([fT / (T - dt), 0]) model = cspin.ControlledSpin(controlFun=fLinear, setup=setup, state_init=state_init, state_target=state_target, T=T, dt=dt) res_constant = model.Simulate(T, time_step=dt, method='testing', fom='last:f2t2', store=True) ## Some plots st_tgt = model.state_tgt st = model.state_PWCH st_ad = model.state_ADIAB en_ad = model.energies_ADIAB adiabaticity = model.fidelity2(st, st_ad)