Skip to main content
IBM Quantum Platform

Notes de publication de Qiskit 0.19


0.19.6

Terra 0.14.2

Aucun changement

Aer 0.5.2

Aucun changement

Ignis 0.3.3

Mise à niveau

  • Une nouvelle exigence scikit-learn a été ajoutée à la liste des exigences. Cette dépendance a été ajoutée dans la version 0.3.0 mais n'était pas correctement exposée en tant que dépendance dans cette version. Cela conduirait à une ImportError si le module qiskit.ignis.measurement.discriminator.iq_discriminators était importé. Ceci est maintenant correctement listé comme une dépendance de sorte que scikit-learn sera installé avec qiskit-ignis.

Corrections des erreurs

  • Corrige un problème dans qiskit-ignis 0.3.2 qui soulevait ImportError lorsque qiskit.ignis.verification.tomography.fitters.process_fitter était importé sans que cvxpy soit installé.

Aqua 0.7.3

Aucun changement

IBM 0.7.2 du fournisseur Q

Aucun changement


0.19.5

Terra 0.14.2

Aucun changement

Aer 0.5.2

Aucun changement

Ignis 0.3.2

Corrections des erreurs

  • La méthode qiskit.ignis.verification.TomographyFitter.fit() a amélioré la logique de détection de l'adaptateur par défaut. Auparavant, la méthode cvx fitter était utilisée chaque fois que cvxpy était installé. Cependant, il était possible d'installer cvxpy sans un solveur SDP qui fonctionnerait pour la méthode cvx fitter. Cette logique a été retravaillée de manière à ce que la méthode cvx fitter ne soit utilisée que si cvxpy est installé et qu'un solveur SDP est présent et peut être utilisé. Dans le cas contraire, c'est l'outil lstsq qui est utilisé.
  • Corrige un cas limite dans qiskit.ignis.mitigation.measurement.fitters.MeasurementFitter.apply() pour les entrées qui ont des étiquettes d'état invalides ou incorrectes qui ne correspondent pas au circuit d'étalonnage. Auparavant, cette opération n'entraînait pas d'erreur et renvoyait simplement un résultat vide. Au lieu de cela, ce cas est désormais correctement pris en compte et une exception QiskitError est levée en cas d'utilisation d'étiquettes incorrectes.

Aqua 0.7.3

Mise à niveau

  • La dépendance cvxpy qui est nécessaire pour le classificateur svm a été supprimée de la liste des exigences et est devenue une dépendance optionnelle. En effet, l'installation de cvxpy n'est pas transparente dans tous les environnements et nécessite souvent l'installation d'un compilateur pour fonctionner. Pour utiliser le classificateur svm, vous devez installer cvxpy en exécutant pip install cvxpy<1.1.0 ou en l'installant avec aqua en exécutant pip install qiskit-aqua[cvx].

Corrections des erreurs

  • La méthode compose du site CircuitOp utilisait QuantumCircuit.combine qui a été modifié pour utiliser QuantumCircuit.compose. L'utilisation de combine entraîne le problème suivant : la composition d'un opérateur avec CircuitOp basé sur un registre nommé n'enchaîne pas les opérateurs mais les empile. E.g. en composant Z ^ 2 avec un circuit basé sur un registre nommé à 2 qubits, on obtient un opérateur à 4 qubits au lieu d'un opérateur à 2 qubits.
  • La méthode MatrixOp.to_instruction renvoyait auparavant un opérateur et non une instruction. Cette méthode a été mise à jour pour renvoyer une instruction. Notez que cela ne fonctionne que si la primitive de l'opérateur est unitaire, sinon une erreur est soulevée lors de la construction de l'instruction.
  • La méthode __hash__ de la classe PauliOp a utilisé la méthode id() qui empêche les comparaisons d'ensembles de fonctionner comme prévu puisqu'elles reposent sur des tables de hachage et que des objets identiques utilisés n'ont pas des hachages identiques. Désormais, l'implémentation utilise un hachage de la représentation de la chaîne en ligne avec l'implémentation de la classe Pauli .

IBM 0.7.2 du fournisseur Q

Aucun changement


0.19.4

Terra 0.14.2

Mise à niveau

  • Auparavant, les convertisseurs circuit_to_gate et circuit_to_instruction incluaient automatiquement la porte ou l'instruction générée dans le SessionEquivalenceLibrary actif. Ces convertisseurs acceptent désormais un mot-clé optionnel equivalence_library pour spécifier si et où les instances converties doivent être enregistrées. Par défaut, l'instance convertie n'est pas enregistrée.

Corrections des erreurs

  • name Les propriétés des implémentations de la porte X à contrôle multiple (MCXGrayCode, MCXRecursive et MCXVChain) ont été modifiées pour décrire plus précisément leur implémentation (mcx_gray, mcx_recursive, et mcx_vchain respectivement) Auparavant, ces portes portaient le nom mcx` with ``MCXGate, ce qui entraînait des erreurs de transposition et de simulation.
  • ControlledGate avec un ensemble de ctrl_state n'étaient pas évaluées comme étant égales, même si les portes comparées étaient équivalentes. Ce problème a été résolu.
  • Correction de la conversion de l'unité SI pour qiskit.pulse.SetFrequency. L'instruction SetFrequency devrait être exprimée en Hz sur le frontend et doit être convertie en GHz lorsque SetFrequency est converti en PulseQobjInstruction.
  • Les contrôles ouverts ont été mis en œuvre en modifiant la définition d'une porte. Cependant, lorsque la porte existe déjà dans la base, cette définition n'est pas utilisée, ce qui produit des circuits incorrects envoyés à un backend. Cela modifie le dérouleur pour qu'il émette la définition s'il rencontre un portail contrôlé avec des commandes ouvertes.

Aer 0.5.2

Aucun changement

Ignis 0.3.0

Aucun changement

Aqua 0.7.2

Prélude

Le calcul de l'espérance de la VQE avec le simulateur Aer qasm\ est maintenant par défaut un calcul qui a le comportement attendu du bruit de grenaille.

Mise à niveau

  • cvxpy est maintenant dans la liste des exigences en tant que dépendance pour qiskit-aqua. Il est utilisé pour le solveur de programme quadratique qui est utilisé dans le cadre de qiskit.aqua.algorithms.QSVM. Auparavant, cvxopt était une dépendance optionnelle qui devait être installée pour utiliser cette fonctionnalité. Ceci n'est plus nécessaire car cvxpy sera installé avec qiskit-aqua.
  • Pour la tomographie d'état exécutée dans le cadre de qiskit.aqua.algorithms.HHL avec un backend QASM, la fonction d'ajustement de la tomographie qiskit.ignis.verification.StateTomographyFitter.fit() est maintenant appelée explicitement avec la méthode définie sur lstsq pour toujours utiliser l'ajustement des moindres carrés. Auparavant, il essayait opportunément d'utiliser le monteur cvx si cvxpy était installé. Cependant, l'outil cvx dépend d'une installation cvxpy spécifiquement configurée avec un solveur SDP installé dans le cadre de cvxpy , ce qui n'est pas toujours le cas dans un environnement où cvxpy est installé.
  • Le calcul de l'espérance VQE à l'aide de l'instruction qiskit.providers.aer.extensions.SnapshotExpectationValue de qiskit-aer n'est plus activé par défaut. Cette option a été changée pour devenir l'option par défaut dans 0.7.0 parce qu'elle est significativement plus rapide, mais elle a conduit à des résultats idéaux inattendus sans bruit de grenaille (voir #1013 pour plus de détails). La valeur par défaut a été rétablie afin de répondre aux attentes des utilisateurs. L'utilisation du calcul plus rapide de l'espérance est maintenant possible en définissant le nouveau kwarg include_custom à True dans le constructeur qiskit.aqua.algorithms.VQE .

Nouvelles fonctions

  • Un nouveau kwarg include_custom a été ajouté au constructeur de qiskit.aqua.algorithms.VQE et de ses sous-classes (principalement qiskit.aqua.algorithms.QAOA). Lorsqu'il est défini sur true et que le kwarg expectation est défini sur None (par défaut), il permet d'utiliser le calcul de l'espérance VQE avec l'instruction Aer's qasm_simulator qiskit.providers.aer.extensions.SnapshotExpectationValue . Le calcul basé sur l'instantané Aer spécial est beaucoup plus rapide, mais avec un résultat idéal similaire à celui du simulateur de vecteur d'état.

IBM 0.7.2 du fournisseur Q

Aucun changement


0.19.3

Terra 0.14.1

Aucun changement

Aer 0.5.2

Corrections des erreurs

  • Correction d'un bug avec les simulateurs de vecteurs d'état et unitaires qui exécutaient un nombre de plans (parallèles) égal au nombre de threads du CPU au lieu de n'exécuter qu'un seul plan.
  • Corrige l'application incorrecte des instructions "diagonal" de la porte qobj dans la méthode du simulateur Qasm de la matrice de densité.
  • Correction d'un bogue où les portes conditionnelles n'étaient pas appliquées correctement sur la méthode de simulation de la matrice de densité.
  • Correction d'un bug dans les portes CZ et Z pour les méthodes "density_matrix_gpu" et "density_matrix_thrust" QasmSimulator.
  • Correction d'un problème où les besoins en mémoire de la simulation n'étaient pas vérifiés sur le site QasmSimulator lors de l'utilisation d'une méthode de simulation non automatique.
  • Correction d'une fuite de mémoire qui affectait les méthodes du simulateur GPU

Ignis 0.3.0

Aucun changement

Aqua 0.7.1

Aucun changement

IBM 0.7.2 du fournisseur Q

Corrections des erreurs

  • qiskit.provider.ibmq.IBMQBackend.jobs() renverra désormais la liste correcte des objets IBMQJob lorsque le kwarg status est défini sur 'RUNNING'. Corrige #523
  • Les métadonnées du paquet ont été mises à jour pour refléter correctement la dépendance de qiskit-terra >= 0.14.0. Cette dépendance a été implicitement ajoutée dans le cadre de la version 0.7.0 mais n'a pas été reflétée dans les exigences du paquet, de sorte qu'il était auparavant possible d'installer qiskit-ibmq-provider avec une version de qiskit-terra qui était trop ancienne. Corrige #677

0.19.0

Terra 0.14.0

Prélude

La version 0.14.0 comprend plusieurs nouvelles fonctionnalités et corrections de bugs. Le plus grand changement de cette version est l'introduction d'une bibliothèque de circuits quantiques dans qiskit.circuit.librarycontenant quelques familles de circuits intéressantes.

La bibliothèque de circuits permet aux utilisateurs d'accéder à un ensemble riche de familles de circuits bien étudiées, dont les instances peuvent être utilisées comme repères, comme éléments de base pour la construction de circuits plus complexes, ou comme outil pour explorer les avantages du calcul quantique par rapport au calcul classique. Le contenu de cette bibliothèque continuera à s'enrichir et à se développer.

La version initiale de la bibliothèque de circuits contient

  • standard_gatesil s'agit de portes à largeur fixe, couramment utilisées comme blocs de construction primitifs, composées de portes à 1, 2 et 3 qubits. Par exemple, les XGate, RZZGate et CSWAPGate. L'ancien emplacement de ces portes sous qiskit.extensions.standard est obsolète.
  • generalized_gatesces familles peuvent être généralisées à un nombre arbitraire de qubits, par exemple a Permutation ou GMS (porte globale de Molmer-Sorensen).
  • boolean_logic: circuits qui transforment les états de base selon des fonctions logiques booléennes simples, telles que ADD ou XOR.
  • arithmeticun ensemble de circuits permettant d'effectuer des opérations arithmétiques classiques telles que WeightedAdder et IntegerComparator.
  • basis_changesla transformation quantique de Fourier : des circuits tels que la transformée quantique de Fourier, QFTqui appliquent mathématiquement des changements de base.
  • n_localles modèles d'intrication et de rotation permettent de créer facilement de grands circuits avec des couches de rotation et d'intrication, tels que TwoLocal qui utilise des rotations à un qubit et des enchevêtrements à deux qubits.
  • data_preparationles circuits qui prennent des données d'entrée classiques et les encodent dans un état quantique difficile à simuler, par ex. PauliFeatureMap ou ZZFeatureMap.
  • D'autres circuits se sont révélés intéressants dans la littérature, tels que QuantumVolume, GraphStateou IQP.

Pour faciliter l'utilisation de ces circuits en tant que blocs de construction, nous avons introduit une compose() méthode de qiskit.circuit.QuantumCircuit pour la composition de circuits soit avec d'autres circuits (en les soudant aux extrémités et en permutant éventuellement les fils), soit avec d'autres portes plus simples :

>>> lhs.compose(rhs, qubits=[3, 2], inplace=True)
            ┌───┐                   ┌─────┐                ┌───┐
lqr_1_0: ───┤ H ├───    rqr_0: ──■──┤ Tdg ├    lqr_1_0: ───┤ H ├───────────────
            ├───┤              ┌─┴─┐└─────┘                ├───┤
lqr_1_1: ───┤ X ├───    rqr_1: ┤ X ├───────    lqr_1_1: ───┤ X ├───────────────
         ┌──┴───┴──┐           └───┘                    ┌──┴───┴──┐┌───┐
lqr_1_2:U1(0.1)+                     =  lqr_1_2:U1(0.1) ├┤ X ├───────
         └─────────┘                                    └─────────┘└─┬─┘┌─────┐
lqr_2_0: ─────■─────                           lqr_2_0: ─────■───────■──┤ Tdg ├
            ┌─┴─┐                                          ┌─┴─┐        └─────┘
lqr_2_1: ───┤ X ├───                           lqr_2_1: ───┤ X ├───────────────
            └───┘                                          └───┘
lcr_0: 0 ═══════════                           lcr_0: 0 ═══════════════════════
lcr_1: 0 ═══════════                           lcr_1: 0 ═══════════════════════

Ainsi, les circuits de Qiskit ne supposent plus un état initial implicite de 0|0\rangle et ne seront pas dessinés avec cet état initial. L'état initial entièrement nul est toujours supposé sur un backend lorsqu'un circuit est exécuté.

Nouvelles fonctions

  • Une nouvelle méthode, has_entry()a été ajoutée à la classe qiskit.circuit.EquivalenceLibrary pour vérifier rapidement si une porte donnée a des décompositions connues dans la bibliothèque.

  • Une nouvelle classe IQPpour construire un circuit polynomial quantique instantané, a été ajoutée au module de bibliothèque de circuits qiskit.circuit.library.

  • Une nouvelle méthode compose() a été ajoutée à la méthode qiskit.circuit.QuantumCircuit. Il permet de composer deux circuits quantiques sans avoir à en transformer un en porte ou en instruction. Il permet également des permutations de qubits/clbits au moment de la composition, ainsi qu'une modification facultative sur place. Il peut également être utilisé à la place de append()car il permet de composer des instructions et des opérateurs sur le circuit.

  • qiskit.circuit.library.Diagonal ont été ajoutés à la bibliothèque de circuits. Ces circuits mettent en œuvre des opérateurs quantiques diagonaux (composés d'éléments non nuls uniquement sur la diagonale). Elles sont simulées plus efficacement par le simulateur Aer que les matrices denses.

  • Ajouter from_label() à la classe qiskit.quantum_info.Clifford pour l'initialisation en tant que produit tensoriel de portes I, X, Y, Z, H ou S à qubit unique.

  • Le transformateur de programme qiskit.pulse.reschedule.compress_pulses() effectue une passe d'optimisation pour réduire l'utilisation de la mémoire de forme d'onde dans le matériel en remplaçant plusieurs instances identiques d'une impulsion dans un programme d'impulsions par une seule impulsion. Par exemple :

    from qiskit.pulse import reschedule
    
    schedules = []
    for _ in range(2):
        schedule = Schedule()
        drive_channel = DriveChannel(0)
        schedule += Play(SamplePulse([0.0, 0.1]), drive_channel)
        schedule += Play(SamplePulse([0.0, 0.1]), drive_channel)
        schedules.append(schedule)
    
    compressed_schedules = reschedule.compress_pulses(schedules)
  • Le qiskit.transpiler.Layout possède une nouvelle méthode reorder_bits() qui permet de réorganiser une liste de qubits virtuels en fonction de l'objet de disposition.

  • Deux nouvelles méthodes ont été ajoutées à l'outil qiskit.providers.models.PulseBackendConfiguration pour interagir avec les canaux.

    • get_channel_qubits() pour obtenir la liste de tous les qubits exploités par le canal donné et
    • get_qubit_channel() pour obtenir une liste des canaux opérant sur le qubit donné.
  • De nouvelles méthodes qiskit.extensions.HamiltonianGate et qiskit.circuit.QuantumCircuit.hamiltonian() sont introduites, représentant l'évolution hamiltonienne de la fonction d'onde du circuit par un opérateur hermitien et un temps d'évolution spécifiés par l'utilisateur. Le temps d'évolution peut être a Parameterce qui permet de créer des circuits paramétrés de type UCCSD ou QAOA qui se compilent en objets UnitaryGate si les paramètres time sont fournis. L'unité d'un HamiltonianGate avec l'opérateur hamiltonien H et le paramètre de temps t est eiHte^{-iHt}.

  • Le module de bibliothèque de circuits qiskit.circuit.library propose désormais un nouveau circuit logique booléen AND, qiskit.circuit.library.ANDet un circuit OR, qiskit.circuit.library.ORqui réalisent les opérations respectives sur un nombre variable de qubits fournis.

  • De nouveaux faux backends sont ajoutés sous qiskit.test.mock. Il s'agit notamment des versions simulées de ibmq_armonk, ibmq_essex, ibmq_london, ibmq_valencia, ibmq_cambridge, ibmq_paris, ibmq_rome, et ibmq_athens. Comme pour les autres faux backends, ceux-ci comprennent des instantanés de données d'étalonnage (c'est-à-dire backend.defaults()) et les données d'erreur (c'est-à-dire backend.properties()) prises dans le système réel, et peuvent être utilisées pour les tests locaux, la compilation et la simulation.

  • Le paramètre last_update_date pour BackendProperties peut désormais être transmis sous la forme d'un objet datetime . Auparavant, seule une chaîne au format ISO8601 était acceptée.

  • Ajoute qiskit.quantum_info.Statevector.from_int() et qiskit.quantum_info.DensityMatrix.from_int() qui permettent de construire un état de base de calcul pour des dimensions de système spécifiées.

  • Les méthodes de la classe qiskit.circuit.QuantumCircuit pour ajouter des portes (par exemple h()), qui étaient auparavant ajoutées dynamiquement à la définition de la classe au moment de l'exécution, ont été remaniées pour devenir des méthodes statiques de la classe. Cela signifie que les analyseurs statiques (tels que les IDE) peuvent désormais lire ces méthodes.

Mise à niveau

Remarques concernant la dépréciation

  • La méthode qiskit.dagcircuit.DAGCircuit.compose() prend maintenant une liste de qubits/clbits qui spécifient l'ordre positionnel des bits à composer. La méthode de mappage basée sur un dictionnaire utilisant l'argument edge_map est obsolète et sera supprimée dans une prochaine version.

  • La méthode combine_into_edge_map() pour la classe qiskit.transpiler.Layout est obsolète et sera supprimée dans une prochaine version. Au lieu de cela, la nouvelle méthode reorder_bits() doit être utilisée pour réorganiser une liste de qubits virtuels en fonction de l'objet de disposition.

  • Le passage d'un objet qiskit.pulse.ControlChannel via le paramètre channel pour la méthode qiskit.providers.models.PulseBackendConfiguration méthode control() a été déprécié et sera supprimé dans une prochaine version. Les objets ControlChannel sont désormais générés à partir de l'attribut de configuration du backend channels qui contient les informations relatives à tous les canaux et aux qubits sur lesquels ils opèrent. La méthode control() est censée prendre le paramètre qubits de la forme (control_qubit, target_qubit) et du type list ou tuple, et renvoie une liste de canaux de contrôle.

  • Les méthodes AND et OR de qiskit.circuit.QuantumCircuit sont obsolètes et seront supprimées dans une prochaine version. Vous devriez plutôt utiliser les classes logiques booléennes de la bibliothèque de circuits qiskit.circuit.library.AND amd qiskit.circuit.library.OR et ajouter ces objets à votre classe. Par exemple :

    from qiskit import QuantumCircuit
    from qiskit.circuit.library import AND
    
    qc = QuantumCircuit(2)
    qc.h(0)
    qc.cx(0, 1)
    
    qc_and = AND(2)
    
    qc.compose(qc_and, inplace=True)
  • Le module qiskit.extensions.standard est obsolète et sera supprimé dans une prochaine version. Les classes de portes de ce module ont été déplacées vers qiskit.circuit.library.standard_gates.

Corrections des erreurs

  • Les qiskit.circuit.QuantumCircuit méthodes inverse()mirror() , ainsi que le setter QuantumCircuit.data génèrent un circuit non valide lorsqu'ils sont utilisés sur une instance de circuit paramétrée. Ce problème a été résolu et ces méthodes devraient désormais fonctionner avec un circuit paramétré. Corrige #4235

  • Auparavant, lors de la création d'une version contrôlée d'une porte qiskit standard, si une adresse ctrl_state était spécifiée, un objet générique ControlledGate était renvoyé, alors que sans cette adresse, une porte qiskit standard contrôlée était renvoyée si elle était définie. Cette PR permet aux portes standard contrôlées par qiskit de comprendre ctrl_state.

    En outre, ce PR corrige ce qui pourrait être considéré comme un bogue où le réglage de ctrl_state d'une porte déjà contrôlée supposait que l'état spécifié s'appliquait à toute la largeur de contrôle au lieu d'ajouter les qubits de contrôle. Par exemple, :

    circ = QuantumCircuit(2)
    circ.h(0)
    circ.x(1)
    gate = circ.to_gate()
    cgate = gate.control(1)
    c3gate = cgate.control(2, ctrl_state=0)

    appliquerait ctrl_state aux trois qubits de contrôle au lieu de n'ajouter que les deux qubits de contrôle.

  • Correction d'un bug dans random_clifford() qui l'empêchait d'échantillonner le groupe de Clifford complet. Corrige #4271

  • La qiskit.circuit.Instruction méthode qiskit.circuit.Instruction.is_parameterized() renvoyait auparavant True pour toute instance de Instruction dont l'un des éléments du tableau contenait un qiskit.circuit.Parameter dans un élément de son tableau params , même si cette instance Parameter avait été entièrement liée. Cette erreur a été corrigée de sorte que .is_parameterized renvoie False lorsque l'instruction est entièrement liée.

  • qiskit.circuit.ParameterExpression.subs() n'avait pas détecté correctement certains cas où la substitution de paramètres aboutissait à deux objets Parameters distincts dans une expression portant le même nom. Cette erreur a été corrigée, de sorte qu'une adresse CircuitError sera affichée dans ces cas.

  • Améliorer les performances des qiskit.quantum_info.Statevector et qiskit.quantum_info.DensityMatrix pour les simulations de circuits à faible qubit en optimisant les méthodes de la classe __init__ . Corrige #4281

  • La fonction qiskit.compiler.transpile() traite désormais correctement les cas où le paramètre basis_gates est défini sur None. Cela permet d'utiliser n'importe quelle porte dans le circuit transpilé de sortie, y compris les portes ajoutées par le processus de transpilation. Notez que l'utilisation de ce paramètre peut avoir des conséquences inattendues lors de l'optimisation. Certains passages de transpondeurs dépendent de l'existence d'un jeu de basis_gates . Par exemple, qiskit.transpiler.passes.Optimize1qGates n'optimise que les chaînes de portes u1, u2 et u3 et, sans basis_gates , il est incapable de dérouler des portes qui pourraient autrement être optimisées :

    from qiskit import *
    
    q = QuantumRegister(1, name='q')
    circuit = QuantumCircuit(q)
    circuit.h(q[0])
    circuit.u1(0.1, q[0])
    circuit.u2(0.1, 0.2, q[0])
    circuit.h(q[0])
    circuit.u3(0.1, 0.2, 0.3, q[0])
    
    result = transpile(circuit, basis_gates=None, optimization_level=3)
    result.draw()
         ┌───┐┌─────────────┐┌───┐┌─────────────────┐
    q_0: ┤ H ├┤ U2(0.1,0.3) ├┤ H ├┤ U3(0.1,0.2,0.3)
         └───┘└─────────────┘└───┘└─────────────────┘

    Corrections #3017

Autres remarques

Aer 0.5.1

Aucun changement

Ignis 0.3.0

Aucun changement

Aqua 0.7.0

Prélude

La version de Qiskit Aqua 0.7.0 introduit un grand nombre de nouvelles fonctionnalités ainsi qu'une intégration améliorée avec les qiskit.circuit.QuantumCircuit objets. Les principales contributions sont le module d'optimisation de Qiskit, une refonte complète des opérateurs, l'utilisation de circuits comme entrée native pour les algorithmes et la suppression de l'API JSON déclarative.

Module d'optimisation

Le module qiskit.optimization` offre désormais des fonctionnalités de modélisation et de résolution de programmes quadratiques. Il fournit divers algorithmes quantiques et conventionnels à court terme, tels que MinimumEigenOptimizer (qui couvre par exemple VQE ou QAOA) ou CplexOptimizer, ainsi qu'un ensemble de convertisseurs permettant de passer d'une représentation du problème à une autre, comme QuadraticProgramToQubo. Voir le journal des modifications pour une liste des fonctionnalités ajoutées.

Flux opérateur

La logique des opérateurs fournie dans qiskit.aqua.operators` a été entièrement remaniée et constitue désormais un ensemble complet d'outils permettant de construire des calculs quantiques physiquement intuitifs. Il contient des fonctions d'état, des opérateurs et des mesures et s'appuie en interne sur les objets Operator de Terra. Le calcul des valeurs d'espérance et des évolutions a été fortement simplifié et des objets tels que ExpectationFactory produisent l'algorithme d'espérance approprié et le plus efficace en fonction du type d'entrée de l'opérateur. Voir le journal des modifications pour une vue d'ensemble des fonctionnalités ajoutées.

Circuits natifs

Les algorithmes utilisent généralement des circuits paramétrés comme entrée, par exemple le VQE, le VQC ou le QSVM. Auparavant, ces entrées devaient être de type VariationalForm ou FeatureMap qui enveloppaient l'objet circuit. Les circuits sont désormais pris en charge de manière native par ces algorithmes, ce qui signifie que toute construction individuelle QuantumCircuit peut être transmise à ces algorithmes. En combinaison avec le lancement de la bibliothèque de circuits qui offre une large collection de familles de circuits, il est désormais facile de construire des circuits élaborés en tant qu'entrée d'algorithme.

API JSON déclarative

La possibilité d'exécuter des algorithmes en utilisant des dictionnaires comme paramètres ainsi que l'interface graphique d'Aqua a été supprimée.

IBM 0.7.0 du fournisseur Q

Nouvelles fonctions

  • Une nouvelle exception, qiskit.providers.ibmq.IBMQBackendJobLimitError, est désormais levée si un travail n'a pas pu être soumis parce que la limite des travaux actifs a été atteinte.
  • qiskit.providers.ibmq.job.IBMQJob et qiskit.providers.ibmq.managed.ManagedJobSet ont chacun deux nouvelles méthodes update_name et update_tags. Ils sont utilisés pour modifier le nom et les étiquettes d'un travail ou d'un ensemble de travaux, respectivement.
  • qiskit.providers.ibmq.IBMQFactory.save_account() et qiskit.providers.ibmq.IBMQFactory.enable_account() acceptent désormais les paramètres facultatifs hub, group, et project, qui permettent de spécifier un fournisseur par défaut à enregistrer sur le disque ou à utiliser, respectivement.

Mise à niveau

  • Les méthodes qiskit.providers.ibmq.job.IBMQJob creation_date et time_per_step renvoient désormais des informations sur la date et l'heure sous la forme d'un objet datetime en heure locale au lieu de l'heure UTC. De même, les paramètres start_datetime et end_datetime, de qiskit.providers.ibmq.IBMQBackendService.jobs() et qiskit.providers.ibmq.IBMQBackend.jobs() peuvent maintenant être spécifiés en heure locale.
  • La méthode qiskit.providers.ibmq.job.QueueInfo.format() utilise désormais un formateur personnalisé de datetime en chaîne, et la flèche du paquet n'est plus nécessaire et a été supprimée de la liste des exigences.

Remarques concernant la dépréciation

  • Les méthodes from_dict() et to_dict() de qiskit.providers.ibmq.job.IBMQJob sont obsolètes et seront supprimées dans la prochaine version.

Corrections des erreurs

  • Correction d'un problème où nest_asyncio.apply() peut lever une exception s'il n'y a pas de boucle asyncio à cause du threading.
Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.