Skip to main content
IBM Quantum Platform

Note di rilascio di Qiskit 0.19


0.19.6

Terra 0.14.2

Nessuna modifica

Aer 0.5.2

Nessuna modifica

Ignis 0.3.3

Note sull'aggiornamento

  • Un nuovo requisito scikit-learn è stato aggiunto all'elenco dei requisiti. Questa dipendenza è stata aggiunta nella release 0.3.0, ma non era esposta correttamente come dipendenza in quella release. Questo porterebbe a un ImportError se il modulo qiskit.ignis.measurement.discriminator.iq_discriminators fosse importato. Ora è correttamente elencato come dipendenza, in modo che scikit-learn venga installato con qiskit-ignis.

Correzioni di bug

  • Corregge un problema in qiskit-ignis 0.3.2 che sollevava un ImportError quando qiskit.ignis.verification.tomography.fitters.process_fitter veniva importato senza che cvxpy fosse installato.

Acqua 0.7.3

Nessuna modifica

IBM Q Fornitore 0.7.2

Nessuna modifica


0.19.5

Terra 0.14.2

Nessuna modifica

Aer 0.5.2

Nessuna modifica

Ignis 0.3.2

Correzioni di bug

  • Il metodo qiskit.ignis.verification.TomographyFitter.fit() ha migliorato la logica di rilevamento per il fitter predefinito. In precedenza, il metodo cvx fitter veniva utilizzato ogni volta che veniva installato cvxpy. Tuttavia, è stato possibile installare cvxpy senza un solutore SDP che funzionasse per il metodo cvx fitter. Questa logica è stata rielaborata in modo che il metodo cvx fitter venga utilizzato solo se cvxpy è installato e se è presente un solutore SDP utilizzabile. In caso contrario, viene utilizzato il fitter lstsq .
  • Corregge un caso limite in qiskit.ignis.mitigation.measurement.fitters.MeasurementFitter.apply() per gli ingressi con etichette di stato non valide o errate che non corrispondono al circuito di calibrazione. In precedenza, questo non dava errore e restituiva semplicemente un risultato vuoto. Invece ora questo caso viene catturato correttamente e viene sollevata un'eccezione QiskitError quando si utilizzano etichette non corrette.

Acqua 0.7.3

Note sull'aggiornamento

  • La dipendenza cvxpy, necessaria per il classificatore svm, è stata rimossa dall'elenco dei requisiti e resa una dipendenza opzionale. Questo perché l'installazione di cvxpy non è semplice in ogni ambiente e spesso richiede l'installazione di un compilatore per funzionare. Per utilizzare il classificatore svm ora è necessario installare cvxpy eseguendo pip install cvxpy<1.1.0 oppure installarlo con aqua eseguendo pip install qiskit-aqua[cvx].

Correzioni di bug

  • Il metodo compose di CircuitOp utilizzava QuantumCircuit.combine che è stato modificato per utilizzare QuantumCircuit.compose. L'uso di combine comporta il problema che la composizione di un operatore con un CircuitOp basato su un registro denominato non concatena gli operatori ma li impila. E.g. componendo Z ^ 2 con un circuito basato su un registro denominato a 2-qubit si ottiene un operatore a 4-qubit anziché a 2-qubit.
  • Il metodo MatrixOp.to_instruction in precedenza restituiva un operatore e non un'istruzione. Questo metodo è stato aggiornato per restituire un'istruzione. Si noti che questo funziona solo se la primitiva dell'operatore è unitaria, altrimenti viene sollevato un errore durante la costruzione dell'istruzione.
  • Il metodo __hash__ della classe PauliOp utilizzava il metodo id() , che impedisce ai confronti tra gli insiemi di funzionare come previsto, poiché si basano su tabelle hash e gli oggetti identici utilizzati non hanno hash identici. Ora, l'implementazione utilizza un hash della rappresentazione della stringa in linea con l'implementazione della classe Pauli .

IBM Q Fornitore 0.7.2

Nessuna modifica


0.19.4

Terra 0.14.2

Note sull'aggiornamento

  • In precedenza, i convertitori circuit_to_gate e circuit_to_instruction includevano automaticamente il gate o l'istruzione generata nel file attivo SessionEquivalenceLibrary. Questi convertitori accettano ora un argomento opzionale, la parola chiave equivalence_library , per specificare se e dove le istanze convertite devono essere registrate. Il comportamento predefinito è di non registrare l'istanza convertita.

Correzioni di bug

  • Le implementazioni del gate X multicontrollato (MCXGrayCode, MCXRecursive e MCXVChain) sono state modificate nelle proprietà name per descrivere più accuratamente la loro implementazione (rispettivamentemcx_gray, mcx_recursive e mcx_vchain ) In precedenza, questi gate condividevano il nome mcx` with ``MCXGate, che causava un'errata trasposizione e simulazione di questi gate.
  • ControlledGate le istanze con un set ctrl_state in alcuni casi non venivano valutate come uguali, anche se le porte confrontate erano equivalenti. Questo problema è stato risolto.
  • Corretta la conversione dell'unità SI per qiskit.pulse.SetFrequency. L'istruzione SetFrequency dovrebbe essere in Hz sul frontend e deve essere convertita in GHz quando SetFrequency viene convertito in PulseQobjInstruction.
  • I controlli aperti sono stati implementati modificando la definizione di un cancello. Tuttavia, quando il gate esiste già nella base, questa definizione non viene utilizzata, dando luogo a circuiti errati inviati a un backend. Questo modifica lo srotolatore in modo che emetta la definizione se incontra un cancello controllato con controlli aperti.

Aer 0.5.2

Nessuna modifica

Ignis 0.3.0

Nessuna modifica

Acqua 0.7.2

Preludio

Il calcolo dell'aspettativa VQE con Aer qasm_simulator è ora impostato su un calcolo che presenta il comportamento atteso del rumore di scatto.

Note sull'aggiornamento

  • cvxpy è ora nell'elenco dei requisiti come dipendenza per qiskit-aqua. Viene utilizzato per il risolutore di programmi quadratici che fa parte del sito qiskit.aqua.algorithms.QSVM. In precedenza cvxopt era una dipendenza opzionale che doveva essere installata per utilizzare questa funzionalità. Non è più necessario, poiché cvxpy sarà installato con qiskit-aqua.
  • Per la tomografia di stato eseguita come parte di qiskit.aqua.algorithms.HHL con un backend QASM, la funzione di fitter della tomografia qiskit.ignis.verification.StateTomographyFitter.fit() viene ora chiamata esplicitamente con il metodo impostato su lstsq per utilizzare sempre il fitting ai minimi quadrati. In precedenza cercava di utilizzare opportunamente l'installatore cvx se era installato cvxpy . Tuttavia, il fitter di cvx dipende da un'installazione di cvxpy specificamente configurata con un solutore SDP installato come parte di cvxpy , che non è sempre presente in un ambiente con cvxpy .
  • Il calcolo dell'aspettativa VQE tramite l'istruzione qiskit.providers.aer.extensions.SnapshotExpectationValue di qiskit-aer non è più abilitato per impostazione predefinita. Questa opzione è stata modificata come predefinita in 0.7.0 perché è significativamente più veloce, ma ha portato a risultati ideali inaspettati senza rumore di ripresa (vedere #1013 per maggiori dettagli). L'impostazione predefinita è ora tornata a corrispondere alle aspettative degli utenti. L'uso del calcolo dell'aspettativa più veloce è ora facoltativo, impostando il nuovo kwarg include_custom a True nel costruttore qiskit.aqua.algorithms.VQE .

Nuove funzioni

  • Un nuovo kwarg include_custom è stato aggiunto al costruttore di qiskit.aqua.algorithms.VQE e delle sue sottoclassi (principalmente qiskit.aqua.algorithms.QAOA). Quando è impostato su true e il kwarg expectation è impostato su None (il valore predefinito), abilita l'uso del calcolo dell'aspettativa VQE con l'istruzione qasm_simulator qiskit.providers.aer.extensions.SnapshotExpectationValue di Aer. Il calcolo speciale basato sulle istantanee Aer è molto più veloce, ma con un risultato ideale simile a quello del simulatore vettoriale di stato.

IBM Q Fornitore 0.7.2

Nessuna modifica


0.19.3

Terra 0.14.1

Nessuna modifica

Aer 0.5.2

Correzioni di bug

  • Corretto il bug dei simulatori statevector e unitary che eseguono un numero di scatti (paralleli) pari al numero di thread della CPU invece di eseguire un solo scatto.
  • Corregge l'applicazione errata delle istruzioni della porta qobj "diagonale" nel metodo del simulatore Qasm a matrice di densità.
  • Corregge un bug per cui le porte condizionali non venivano applicate correttamente al metodo di simulazione della matrice di densità.
  • Correzione del bug nel gate CZ e nel gate Z per i metodi "density_matrix_gpu" e "density_matrix_thrust" QasmSimulator.
  • Corregge un problema per cui i requisiti di memoria della simulazione non venivano controllati su QasmSimulator quando si utilizzava un metodo di simulazione non automatico.
  • Corretta una perdita di memoria che riguardava i metodi del simulatore GPU

Ignis 0.3.0

Nessuna modifica

Acqua 0.7.1

Nessuna modifica

IBM Q Fornitore 0.7.2

Correzioni di bug

  • qiskit.provider.ibmq.IBMQBackend.jobs() restituirà ora l'elenco corretto degli oggetti IBMQJob quando il kwarg status è impostato su 'RUNNING'. Correzioni #523
  • I metadati del pacchetto sono stati aggiornati per riflettere correttamente la dipendenza da qiskit-terra >= 0.14.0. Questa dipendenza è stata implicitamente aggiunta come parte del rilascio di 0.7.0, ma non è stata riflessa nei requisiti del pacchetto, per cui in precedenza era possibile installare qiskit-ibmq-provider con una versione di qiskit-terra troppo vecchia. Correzioni #677

0.19.0

Terra 0.14.0

Preludio

La release 0.14.0 include diverse nuove funzionalità e correzioni di bug. Il cambiamento più importante di questa versione è l'introduzione di una libreria di circuiti quantistici in qiskit.circuit.librarycontenente alcune famiglie di circuiti di interesse.

La libreria di circuiti consente agli utenti di accedere a un ricco insieme di famiglie di circuiti ben studiati, le cui istanze possono essere utilizzate come benchmark, come elementi costitutivi per la costruzione di circuiti più complessi o come strumento per esplorare il vantaggio computazionale quantistico rispetto a quello classico. I contenuti di questa biblioteca continueranno a crescere e a maturare.

La versione iniziale della libreria di circuiti contiene:

  • standard_gates: si tratta di porte a larghezza fissa comunemente utilizzate come blocchi primitivi, costituiti da porte a 1, 2 e 3 qubit. Ad esempio XGate, RZZGate e CSWAPGate. La vecchia posizione di questi cancelli sotto qiskit.extensions.standard è deprecata.
  • generalized_gates: si tratta di famiglie che possono generalizzarsi a un numero arbitrario di qubit, ad esempio a Permutation o GMS (porta globale di Molmer-Sorensen).
  • boolean_logic: circuiti che trasformano gli stati base secondo semplici funzioni logiche booleane, come ADD o XOR.
  • arithmetic: un insieme di circuiti per l'esecuzione di aritmetiche classiche, quali WeightedAdder e IntegerComparator.
  • basis_changescircuiti, come la trasformata quantistica di Fourier, QFTche applicano matematicamente i cambiamenti di base.
  • n_local: modelli per creare facilmente circuiti di grandi dimensioni con strati di rotazione e di entanglement, come ad esempio TwoLocal che utilizza rotazioni a un solo qubit e entanglement a due qubit.
  • data_preparation: circuiti che prendono dati classici in ingresso e li codificano in uno stato quantistico difficile da simulare, ad es. PauliFeatureMap o ZZFeatureMap.
  • Altri circuiti che si sono dimostrati interessanti in letteratura, come ad esempio QuantumVolume, GraphState, o IQP.

Per facilitare l'uso di questi circuiti come blocchi di costruzione, abbiamo introdotto un metodo di compose() metodo di qiskit.circuit.QuantumCircuit per la composizione di circuiti sia con altri circuiti (saldandoli alle estremità e, facoltativamente, permutando i fili) sia con altre porte più semplici:

>>> 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 ═══════════════════════

In questo modo, i circuiti di Qiskit non assumono più uno stato iniziale implicito di 0|0\rangle e non verranno disegnati con questo stato iniziale. Lo stato iniziale tutto zero è ancora assunto da un backend quando viene eseguito un circuito.

Nuove funzioni

  • Un nuovo metodo, has_entry()è stato aggiunto alla classe qiskit.circuit.EquivalenceLibrary per verificare rapidamente se una data porta ha delle decomposizioni note nella libreria.

  • Una nuova classe IQPper costruire un circuito polinomiale quantistico istantaneo, è stata aggiunta al modulo della libreria di circuiti qiskit.circuit.library.

  • È stato aggiunto un nuovo compose() è stato aggiunto a qiskit.circuit.QuantumCircuit. Permette la composizione di due circuiti quantistici senza doverne trasformare uno in un gate o in un'istruzione. Consente inoltre la permutazione dei qubit/clbit al momento della composizione, nonché la modifica opzionale in loco. Può essere utilizzato anche al posto di append(), in quanto permette di comporre istruzioni e operatori anche sul circuito.

  • qiskit.circuit.library.Diagonal sono stati aggiunti alla libreria dei circuiti. Questi circuiti implementano operatori quantistici diagonali (composti da elementi non nulli solo sulla diagonale). Sono simulate in modo più efficiente dal simulatore Aer rispetto alle matrici dense.

  • Aggiungere from_label() alla classe qiskit.quantum_info.Clifford per l'inizializzazione come prodotto tensoriale di porte I, X, Y, Z, H o S a singolo qubit.

  • Il trasformatore di programma qiskit.pulse.reschedule.compress_pulses() esegue un passaggio di ottimizzazione per ridurre l'uso della memoria delle forme d'onda nell'hardware, sostituendo più istanze identiche di un impulso in un programma di programma con un singolo impulso. Ad esempio:

    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)
  • Il qiskit.transpiler.Layout ha un nuovo metodo reorder_bits() che serve a riordinare un elenco di qubit virtuali in base all'oggetto layout.

  • Sono stati aggiunti due nuovi metodi al file qiskit.providers.models.PulseBackendConfiguration per interagire con i canali.

    • get_channel_qubits() per ottenere un elenco di tutti i qubit gestiti dal canale indicato e
    • get_qubit_channel() per ottenere un elenco di canali che operano sul qubit dato.
  • Vengono introdotti nuovi qiskit.extensions.HamiltonianGate e qiskit.circuit.QuantumCircuit.hamiltonian() sono stati introdotti nuovi metodi che rappresentano l'evoluzione hamiltoniana della funzione d'onda del circuito mediante un operatore hermitiano e un tempo di evoluzione specificati dall'utente. Il tempo di evoluzione può essere un Parameterconsentendo la creazione di circuiti parametrici in stile UCCSD o QAOA, che si compilano in oggetti UnitaryGate se vengono forniti i parametri time . L'unitario di un HamiltonianGate con operatore hamiltoniano H e parametro temporale t è eiHte^{-iHt}.

  • Il modulo della libreria dei circuiti qiskit.circuit.library fornisce ora un nuovo circuito logico booleano AND, qiskit.circuit.library.ANDe un circuito OR, qiskit.circuit.library.ORche implementano le rispettive operazioni su un numero variabile di qubit forniti.

  • Vengono aggiunti nuovi falsi backend sotto qiskit.test.mock. Questi includono le versioni simulate di ibmq_armonk, ibmq_essex, ibmq_london, ibmq_valencia, ibmq_cambridge, ibmq_paris, ibmq_rome e ibmq_athens. Come per altri backend fasulli, questi includono istantanee dei dati di calibrazione (cioè backend.defaults()) e i dati relativi all'errore (cioè backend.properties()) presi dal sistema reale e possono essere utilizzati per test, compilazioni e simulazioni locali.

  • Il parametro last_update_date per BackendProperties può ora essere passato anche come oggetto datetime . In precedenza veniva accettata solo una stringa in formato ISO8601.

  • Aggiunge qiskit.quantum_info.Statevector.from_int() e qiskit.quantum_info.DensityMatrix.from_int() che consentono di costruire uno stato base computazionale per determinate dimensioni del sistema.

  • I metodi della classe qiskit.circuit.QuantumCircuit per l'aggiunta di porte (ad esempio h()), che in precedenza venivano aggiunti dinamicamente in fase di esecuzione alla definizione della classe, sono stati riconfigurati come metodi staticamente definiti della classe. Ciò significa che gli analizzatori statici (come gli IDE) possono ora leggere questi metodi.

Note sull'aggiornamento

Note di deprecazione

  • Il metodo qiskit.dagcircuit.DAGCircuit.compose() accetta ora un elenco di qubit/clbit che specificano l'ordine posizionale dei bit da comporre. Il metodo di mappatura basato sul dizionario che utilizza l'argomento edge_map è deprecato e sarà rimosso in una versione futura.

  • Il metodo combine_into_edge_map() per la classe qiskit.transpiler.Layout è stato deprecato e sarà rimosso in una prossima versione. Invece, il nuovo metodo reorder_bits() deve essere usato per riordinare un elenco di qubit virtuali in base all'oggetto layout.

  • Passare un oggetto qiskit.pulse.ControlChannel tramite il parametro channel per il metodo qiskit.providers.models.PulseBackendConfiguration per il metodo control() è stato deprecato e sarà rimosso in una prossima versione. Gli oggetti ControlChannel sono ora generati dall'attributo channels della configurazione del backend, che contiene le informazioni di tutti i canali e dei qubit su cui operano. Ora, il metodo control() deve prendere il parametro qubits della forma (control_qubit, target_qubit) e il tipo list o tuple, e restituire un elenco di canali di controllo.

  • I metodi AND e OR di qiskit.circuit.QuantumCircuit sono deprecati e saranno rimossi in una prossima versione. Si devono invece utilizzare le classi logiche booleane della libreria dei circuiti qiskit.circuit.library.AND amd qiskit.circuit.library.OR e poi aggiungere questi oggetti alla propria classe. Ad esempio:

    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)
  • Il modulo qiskit.extensions.standard è deprecato e sarà rimosso in una prossima versione. Le classi gate di quel modulo sono state spostate in qiskit.circuit.library.standard_gates.

Correzioni di bug

  • I qiskit.circuit.QuantumCircuit metodi inverse(), i metodi mirror() e il setter QuantumCircuit.data genererebbero un circuito non valido se usati su un'istanza di circuito parametrizzata. Il problema è stato risolto e questi metodi dovrebbero ora funzionare con un circuito parametrizzato. Correzioni #4235

  • In precedenza, quando si creava una versione controllata di un cancello qiskit standard, se veniva specificato ctrl_state veniva restituito un oggetto generico ControlledGate , mentre senza di esso veniva restituito un cancello controllato da qiskit standard, se era definito. Questa PR consente ai gate controllati da qiskit standard di comprendere ctrl_state.

    Inoltre, questa PR corregge quello che potrebbe essere considerato un bug per cui l'impostazione di ctrl_state di un gate già controllato presupponeva che lo stato specificato fosse applicato all'intera larghezza di controllo, invece di aggiungere i qubit di controllo. Ad esempio,:

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

    applicherebbe ctrl_state a tutti e tre i qubit di controllo, invece di aggiungere solo i due qubit di controllo.

  • Corretto un bug in random_clifford() che impediva di campionare l'intero gruppo di Clifford. Correzioni #4271

  • Il qiskit.circuit.Instruction metodo qiskit.circuit.Instruction.is_parameterized() aveva precedentemente restituito True per qualsiasi istanza di Instruction che avesse un elemento qiskit.circuit.Parameter in qualsiasi elemento del suo array params , anche se tale Parameter era stato completamente vincolato. Questo problema è stato corretto in modo che .is_parameterized restituisca False quando l'istruzione è completamente vincolata.

  • qiskit.circuit.ParameterExpression.subs() non aveva individuato correttamente alcuni casi in cui la sostituzione dei parametri avrebbe dato luogo a due oggetti Parameters distinti in un'espressione con lo stesso nome. Questo problema è stato corretto, quindi in questi casi verrà sollevato un CircuitError .

  • Migliorare le prestazioni di qiskit.quantum_info.Statevector e qiskit.quantum_info.DensityMatrix per le simulazioni di circuiti a bassa frequenza ottimizzando i metodi della classe __init__ . Correzioni #4281

  • La funzione qiskit.compiler.transpile() ora gestisce correttamente quando il parametro basis_gates è impostato su None. Ciò consentirà di utilizzare qualsiasi gate nel circuito di uscita trasposto, compresi i gate aggiunti dal processo di trasposizione. Si noti che l'uso di questo parametro può avere conseguenze indesiderate durante l'ottimizzazione. Alcuni passaggi del transpiler dipendono dalla presenza di un set basis_gates . Ad esempio, qiskit.transpiler.passes.Optimize1qGates ottimizza solo le catene di porte u1, u2 e u3 e senza basis_gates non è in grado di srotolare porte che altrimenti potrebbero essere ottimizzate:

    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)
         └───┘└─────────────┘└───┘└─────────────────┘

    Correzioni #3017

Altre note

Aer 0.5.1

Nessuna modifica

Ignis 0.3.0

Nessuna modifica

Acqua 0.7.0

Preludio

La release di Qiskit Aqua 0.7.0 introduce molte nuove funzionalità e una migliore integrazione con gli oggetti qiskit.circuit.QuantumCircuit oggetti. I contributi centrali sono il modulo di ottimizzazione di Qiskit, un refactor completo degli Operatori, l'uso dei circuiti come input nativo per gli algoritmi e la rimozione dell'API JSON dichiarativa.

Modulo di ottimizzazione

Il modulo qiskit.optimization` offre ora funzionalità per la modellazione e la risoluzione di programmi quadratici. Fornisce vari algoritmi quantistici e convenzionali a breve termine, come ad esempio MinimumEigenOptimizer (che copre, ad esempio, il tema della sicurezza e della salute). VQE o QAOA) o CplexOptimizer, nonché un insieme di convertitori per tradurre tra diverse rappresentazioni del problema, come QuadraticProgramToQubo. Per un elenco delle funzionalità aggiunte, consultare il changelog.

Flusso dell'operatore

La logica degli operatori fornita in qiskit.aqua.operators` è stata completamente rifattorizzata ed è ora un insieme completo di strumenti per costruire computazioni quantistiche fisicamente intuitive. Contiene funzioni di stato, operatori e misure e si basa internamente sugli oggetti Operator di Terra. Il calcolo dei valori di aspettativa e delle evoluzioni è stato fortemente semplificato e oggetti come ExpectationFactory producono l'algoritmo di aspettativa più adatto ed efficiente in base al tipo di input dell'Operatore. Per una panoramica delle funzionalità aggiunte, consultare il changelog.

Circuiti nativi

Gli algoritmi utilizzano comunemente circuiti parametrizzati come input, ad esempio il VQE, il VQC o il QSVM. In precedenza, questi ingressi dovevano essere di tipo VariationalForm o FeatureMap che avvolgevano l'oggetto circuito. Ora i circuiti sono supportati in modo nativo da questi algoritmi, il che significa che qualsiasi QuantumCircuit costruito individualmente può essere passato a questi algoritmi. In combinazione con il rilascio della libreria di circuiti, che offre un'ampia collezione di famiglie di circuiti, è ora facile costruire circuiti elaborati come input dell'algoritmo.

API JSON dichiarativa

È stata rimossa la possibilità di eseguire gli algoritmi utilizzando i dizionari come parametri e la GUI delle interfacce Aqua.

IBM Q Fornitore 0.7.0

Nuove funzioni

  • Una nuova eccezione, qiskit.providers.ibmq.IBMQBackendJobLimitError, viene ora sollevata se non è stato possibile inviare un lavoro perché è stato raggiunto il limite di lavori attivi.
  • qiskit.providers.ibmq.job.IBMQJob e qiskit.providers.ibmq.managed.ManagedJobSet hanno ciascuno due nuovi metodi update_name e update_tags. Vengono utilizzati per modificare rispettivamente il nome e i tag di un lavoro o di un set di lavori.
  • qiskit.providers.ibmq.IBMQFactory.save_account() e qiskit.providers.ibmq.IBMQFactory.enable_account() accettano ora i parametri opzionali hub, group, e project, che consentono di specificare un provider predefinito da salvare su disco o da utilizzare, rispettivamente.

Note sull'aggiornamento

  • I metodi qiskit.providers.ibmq.job.IBMQJob creation_date e time_per_step ora restituiscono informazioni sull'ora della data come oggetto datetime in ora locale anziché UTC. Allo stesso modo, i parametri start_datetime e end_datetime, di qiskit.providers.ibmq.IBMQBackendService.jobs() e qiskit.providers.ibmq.IBMQBackend.jobs() possono ora essere specificati in ora locale.
  • Il metodo qiskit.providers.ibmq.job.QueueInfo.format() ora utilizza un formattatore personalizzato da datetime a stringa e la freccia del pacchetto non è più necessaria ed è stata rimossa dall'elenco dei requisiti.

Note di deprecazione

  • I metodi from_dict() e to_dict() di qiskit.providers.ibmq.job.IBMQJob sono deprecati e saranno rimossi nella prossima versione.

Correzioni di bug

  • È stato risolto un problema per cui nest_asyncio.apply() potrebbe sollevare un'eccezione se non c'è un ciclo asyncio a causa del threading.
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.