Skip to content

Commit 66f6bda

Browse files
So close
1 parent 8b72d45 commit 66f6bda

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

scripts/tfim_vqe.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -258,18 +258,19 @@ def estimate_local_parameters(qubit_hamiltonian, n_qubits):
258258
def tfim_ground_state_angles(n_qubits, J_vec, h_vec, z_vec, t=10.0):
259259
ry_angles = np.zeros(n_qubits)
260260
for i in range(n_qubits):
261-
m = tfim_magnetization(J=J_vec[i], h=h_vec[i], z=z_vec[i], theta=np.random.rand() * np.pi, t=t, n_qubits=1)
262-
p = np.clip((1.0 - m) / 2.0, 1e-6, 1 - 1e-6)
263-
ry_angles[i] = 2.0 * np.arcsin(np.sqrt(p))
261+
J=J_vec[i]
262+
h=h_vec[i]
263+
z=z_vec[i]
264+
ry_angles[i] = np.arcsin(max(min(1, abs(h) / (z * J)) if np.isclose(z * J, 0) else (1 if J > 0 else -1), -1))
264265
return ry_angles
265266

266-
def hybrid_tfim_vqe(qubit_hamiltonian, n_qubits, dev=None, layers=1):
267+
def hybrid_tfim_vqe(qubit_hamiltonian, n_qubits, dev=None):
267268
"""
268269
Estimate energy from TFIM-predicted RY angles.
269270
"""
270271
z, J, h = estimate_local_parameters(qubit_hamiltonian, n_qubits)
271-
angles = tfim_ground_state_angles(n_qubits, J, h, z)
272-
weights_shape = {"weights": (layers, n_qubits, 3)}
272+
theta = tfim_ground_state_angles(n_qubits, J, h, z)
273+
weights_shape = {"weights": n_qubits}
273274

274275
if dev is None:
275276
dev = qml.device("default.qubit", wires=n_qubits)
@@ -297,10 +298,11 @@ def hybrid_tfim_vqe(qubit_hamiltonian, n_qubits, dev=None, layers=1):
297298
hamiltonian = qml.Hamiltonian(coeffs, observables)
298299

299300
@qml.qnode(dev)
300-
def circuit(weights):
301-
for i, angle in enumerate(angles):
302-
qml.RY(angle, wires=i)
303-
qml.StronglyEntanglingLayers(weights, wires=range(n_qubits))
301+
def circuit(delta):
302+
for i in range(n_qubits):
303+
qml.RY(theta[i] + delta[i], wires=i)
304+
for i in range(n_qubits - 1):
305+
qml.CZ(wires=[i, i + 1])
304306
return qml.expval(hamiltonian)
305307

306308
return circuit, weights_shape

0 commit comments

Comments
 (0)