Added initial state for Quimb

This commit is contained in:
tankya2
2023-11-07 17:08:57 +08:00
committed by yangliwei
parent f6f9e105a2
commit 8e1862eba5

View File

@@ -3,6 +3,7 @@ from qibo.config import raise_error
from qibotn import cutn from qibotn import cutn
from qibotn import quimb from qibotn import quimb
from qibo.states import CircuitResult from qibo.states import CircuitResult
import numpy as np
class QiboTNBackend(NumpyBackend): class QiboTNBackend(NumpyBackend):
@@ -30,7 +31,7 @@ class QiboTNBackend(NumpyBackend):
raise_error(NotImplementedError, "Not implemented in QiboTN.") raise_error(NotImplementedError, "Not implemented in QiboTN.")
def execute_circuit( def execute_circuit(
self, circuit, initial_state=None, nshots=None, return_array=False self, circuit, initial_state=None, nshots=None, return_array=True
): # pragma: no cover ): # pragma: no cover
"""Executes a quantum circuit. """Executes a quantum circuit.
@@ -64,7 +65,12 @@ class QiboTNBackend(NumpyBackend):
state = cutn.eval_mps(circuit, gate_algo, self.dtype) state = cutn.eval_mps(circuit, gate_algo, self.dtype)
if self.platform == "qu_tensornet": if self.platform == "qu_tensornet":
state = quimb.eval(circuit.to_qasm(), initial_state, backend="numpy")
#init_state = np.random.random(2**circuit.nqubits) + 1j * np.random.random(2**circuit.nqubits)
#init_state = init_state / np.sqrt((np.abs(init_state) ** 2).sum())
init_state = np.zeros(2**circuit.nqubits, dtype=self.dtype)
init_state[0] = 1.0
state = quimb.eval(circuit.to_qasm(), init_state, backend="numpy")
if return_array: if return_array:
return state.flatten() return state.flatten()