コード例 #1
0
h_pq = np.identity(l)
for p in range(l):
    h_pq[p, p] *= delta * (p - (p % 2)) / 2

h_pqrs = np.zeros((l, l, l, l))
for p in range(0, l - 1, 2):
    for r in range(0, l - 1, 2):
        h_pqrs[p, p + 1, r, r + 1] = -0.5 * g

UCCD = UnitaryCoupledCluster(n, l, 'D', 1)
theta = UCCD.new_parameters()
theta[0] = 5.829889373194686  # Hardcode good parameter

Pairing = SecondQuantizedHamiltonian(n, l)
Pairing.set_integrals(h_pq, h_pqrs)
Pairing.get_circuit()
circuit_list = Pairing.to_circuit_list(ptype='vqe')

all_shots = np.linspace(1000, 100000, 100)
Es = np.zeros(100)
legal = np.zeros(100)
illegal = np.zeros(100)

i = 0
for shot in tqdm(all_shots):
    model = VQE(
        n_qubits=l,
        ansatz=UCCD,
        circuit_list=circuit_list,
        shots=500,  #int(shot),
        ancilla=0,
コード例 #2
0
one_body = odho.h
one_body[np.absolute(one_body) < 1e-8] = 0
two_body = odho.u
two_body[np.absolute(two_body) < 1e-8] = 0

# Coupled Cluster
print('Reference energy:', odho.compute_reference_energy())
ccsd = CCSD(odho, verbose=False)
ccsd.compute_ground_state()
print('ECCSD =', ccsd.compute_energy())

# Prepare circuit list
H2 = SecondQuantizedHamiltonian(n, l)
H2.set_integrals(one_body, two_body, anti_symmetric=True)
H2.get_circuit()
circuit_list = H2.to_circuit_list(ptype='vqe')

ansatz = UnitaryCoupledCluster(n, l, 'S', 1)
og_params = ansatz.new_parameters(H2.h, H2.v)
print(ansatz.num_S)
print(ansatz.num_D)
print(len(og_params))

grid_points = 500
x = np.linspace(0, 2 * np.pi, grid_points)
params = [[i] for i in x]
Es = np.zeros(grid_points)

theta = og_params
vqe = VQE(n_qubits=l,
コード例 #3
0
#g /= 4

# Matrix elements
h_pq = np.identity(l)
for p in range(l):
	h_pq[p,p] *= delta*(p - (p%2))/2
	
h_pqrs = np.zeros((l,l,l,l))
for p in range(0,l-1,2):
	for r in range(0,l-1,2):
		h_pqrs[p,p+1,r,r+1] = -0.5*g

# Prepare circuit list
pairing = SecondQuantizedHamiltonian(n,l)
pairing.set_integrals(h_pq,h_pqrs)
pairing.get_circuit()
circuit_list = pairing.to_circuit_list(ptype='vqe')

ansatz = UnitaryCoupledCluster(n,l,'D',1)
og_params = ansatz.new_parameters(pairing.h,
                                  pairing.v)
print(len(og_params))

grid_points = 15
x = np.linspace(0,2*np.pi,grid_points)
y = np.linspace(0,2*np.pi,grid_points)
z = np.linspace(0,2*np.pi,grid_points)
params = []
for i,xi in enumerate(x):
    for j,yi in enumerate(y):
        for k,zi in enumerate(z):