Dans Qiskit, il est possible de se rapprocher d'un appareil réel en ajoutant du bruit lors de la simulation d'un circuit avec un simulateur. Cependant, le réglage du bruit est hautement spécialisé et extrêmement difficile. (À mon avis ...)
Donc, quand j'ai cherché un moyen facile de créer un NoiseModel, je l'ai trouvé, donc je vais le résumer ici.
Commencez par créer un circuit qui crée un état GHZ sans bruit à des fins de comparaison.
GHZ state
État GHZ à 3qubits
|GHZ> = \frac{|000>+|111>}{\sqrt{2}}
import
python
# matplotlib inline
from qiskit import execute, QuantumCircuit, QuantumRegister
from qiskit.visualization import plot_histogram
from qiskit import BasicAer
#Définition du registre quantique
qr = QuantumRegister(3)
#Définition du circuit quantique
qc = QuantumCircuit(qr)
#Porte Adamal à 0bit
qc.h(0)
# 0bit-CNOT avec 1 bit
qc.cx(0, 1)
# 1bit-CNOT avec 2 bits
qc.cx(1, 2)
#Mesurer tous les registres quantiques
qc.measure_all()
#Afficher le circuit
qc.draw(output='mpl')
#paramètres du backend
backend = BasicAer.get_backend('qasm_simulator')
#Exécution du circuit
result = execute(qc, backend).result()
#Obtenez des comptes
counts = result.get_counts()
#tracé compte dans un histogramme
plot_histogram(counts)
Vous pouvez obtenir de beaux résultats avec le simulateur.
Nous reproduirons le même modèle de bruit que la machine réelle avec un simulateur.
import
# matplotlib inline
from qiskit import QuantumCircuit, execute
from qiskit import IBMQ, Aer
from qiskit.visualization import plot_histogram
from qiskit.providers.aer.noise import NoiseModel
#Appelez le compte IBMQ.
provider = IBMQ.load_account()
#Cette fois ibmq_Utilisez le modèle de bruit de vigo
backend = provider.get_backend('ibmq_vigo')
noise_model = NoiseModel.from_backend(backend)
#Définition du registre quantique
qr = QuantumRegister(3)
#Définition du circuit quantique
qc = QuantumCircuit(qr)
#Porte Adamal à 0bit
qc.h(0)
# 0bit-CNOT avec 1 bit
qc.cx(0, 1)
# 1bit-CNOT avec 2 bits
qc.cx(1, 2)
#Mesurer tous les registres quantiques
qc.measure_all()
#Courir
result = execute(qc, Aer.get_backend('qasm_simulator'),
noise_model=noise_model).result()
counts = result.get_counts()
#tracé compte dans un histogramme
plot_histogram(counts)
de cette façon$ |000>
Il semble y avoir diverses autres options, alors j'aimerais enquêter.
Recommended Posts