-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcheckConvergence.py
57 lines (52 loc) · 2.13 KB
/
checkConvergence.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
from core.buildHam import QHO
from core.encodeHam import h2zixy
from core.VQEHam import runVQE, Two_Qubit_HEA, Two_Qubit_UniversalAnsatz, Four_Qubit_HEA
import pandas as pd
def multiRuns(runs, H, ansatz, fname):
multires = []
if ansatz == Two_Qubit_HEA or ansatz == Two_Qubit_UniversalAnsatz:
save = H["II"]
del(H["II"])
elif ansatz == Four_Qubit_HEA:
save = H["IIII"]
del(H["IIII"])
for i in range(runs):
print("\n_____Multi-Run: Iteration "+str(i+1)+"_____\n")
results = runVQE(H,ansatz)
multires.append([results[0] + save,results[1]])
lowvals = [i[0] for i in multires]
runtimes = [i[1] for i in multires]
dict = {'Lowest Values':lowvals, 'Run Times (s)':runtimes}
df = pd.DataFrame(dict)
df.to_csv(fname+'.csv')
def unliRuns( H, ansatz, fname):
converged = False
unlires = []
iters = 0
if ansatz == Two_Qubit_HEA or ansatz == Two_Qubit_UniversalAnsatz:
save = H["II"]
del(H["II"])
elif ansatz == Four_Qubit_HEA:
save = H["IIII"]
del(H["IIII"])
while converged == False:
iters += 1
print("\n_____Unli-Run: Iteration "+str(iters)+"_____\n")
results = runVQE(H,ansatz)
test = results[0] + save
if(test[-1] <= 0.51): # 0.51 for less tolerance
converged = True
unlires.append([test,results[1]])
print(test[-1])
lowvals = [i[0] for i in unlires]
runtimes = [i[1] for i in unlires]
dict = {'Lowest Values':lowvals, 'Run Times (s)':runtimes}
df = pd.DataFrame(dict)
df.to_csv(fname+'.csv')
#multiRuns(30,h2zixy(QHO(4,"pos")),Two_Qubit_HEA,"genData/2QHEAPosBasis")
#multiRuns(30,h2zixy(QHO(4,"pos")),Two_Qubit_UniversalAnsatz,"genData/2QUAPosBasis")
#multiRuns(30,h2zixy(QHO(16,"pos")),Four_Qubit_HEA,"genData/4QHEAPosBasis")
#multiRuns(30,h2zixy(QHO(4,"en")),Two_Qubit_HEA,"genData/2QHEAEnBasis")
#multiRuns(30,h2zixy(QHO(4,"en")),Two_Qubit_UniversalAnsatz,"genData/2QUAEnBasis")
#multiRuns(30,h2zixy(QHO(16,"en")),Four_Qubit_HEA,"genData/4QHEAEnBasis")
#unliRuns(h2zixy(QHO(16,'en')), Four_Qubit_HEA,"genData/4QHEAEnBasis_unliruns")