Qiskit 0.19 リリースノート
0.19.6
Terra 0.14.2
変更なし
エア 0.5.2
変更なし
イグニス 0.3.3
アップグレードの注意
- 新しい要件 scikit-learn が要件リストに追加されました。 この依存関係は 0.3.0 リリースで追加されたが、そのリリースでは依存関係として適切に公開されていなかった。 これは、
qiskit.ignis.measurement.discriminator.iq_discriminatorsモジュールがインポートされた場合、ImportErrorにつながる。 これは、scikit-learnがqiskit-ignisと一緒にインストールされるように、依存関係として正しくリストされるようになりました。
バグ修正
cvxpyがインストールされていない状態でqiskit.ignis.verification.tomography.fitters.process_fitterがインポートされるとImportErrorが発生する qiskit-ignis 0.3.2 の問題を修正した。
アクア 0.7.3
変更なし
IBM Q プロバイダー 0.7.2
変更なし
0.19.5
Terra 0.14.2
変更なし
エア 0.5.2
変更なし
イグニス 0.3.2
バグ修正
qiskit.ignis.verification.TomographyFitter.fit()メソッドでは、デフォルトのフィッターの検出ロジックが改善されている。 以前は、 cvxpyがインストールされるたびに、cvxfitterメソッドが使用されていた。 しかし、cvxfitterメソッドで動作するSDPソルバーなしでcvxpyをインストールすることは可能でした。 このロジックは、cvxpyがインストールされ、使用可能なSDPソルバーが存在する場合にのみ、cvxフィッター法が使用されるように修正されました。 そうでない場合は、lstsq。qiskit.ignis.mitigation.measurement.fitters.MeasurementFitter.apply()、較正回路と一致しない無効または不正な状態ラベルを持つ入力のエッジケースを修正。 以前は、これはエラーにならず、ただ空の結果を返していた。 代わりに、このケースは正しくキャッチされ、不正なラベルを使用した場合はQiskitError例外が発生するようになった。
アクア 0.7.3
アップグレードの注意
- svm分類器に必要な cvxpy 依存関係が要件リストから削除され、オプションの依存関係になりました。 これは、cvxpyのインストールがどの環境でもシームレスに行えるわけではなく、実行するにはコンパイラのインストールが必要になることが多いからだ。 svm分類器を使用するには、
pip install cvxpy<1.1.0を実行してcvxpyをインストールするか、pip install qiskit-aqua[cvx]を実行してaquaでインストールする必要があります。
バグ修正
CircuitOpのcomposeメソッドはQuantumCircuit.combineを使用していたが、QuantumCircuit.composeを使用するように変更された。 combineを使用すると、名前付きレジスタに基づくCircuitOpと演算子を合成する際に、演算子を連鎖させずにスタックしてしまうという問題が生じる。 E.g.Z ^ 2、2qubitの名前付きレジスタに基づく回路と組み合わせることで、2qubit演算子の代わりに4qubit演算子が得られた。MatrixOp.to_instructionメソッドは以前、命令ではなく演算子を返していた。 このメソッドは、Instructionを返すように更新されました。 これは演算子プリミティブがユニタリーである場合にのみ機能し、そうでない場合は命令の構築時にエラーが発生することに注意。PauliOpクラスの__hash__メソッドは、id()メソッドを使用していた。このメソッドは、ハッシュ・テーブルに依存しており、同一のオブジェクトが同一のハッシュを持たないように使用されるため、セット比較が期待通りに機能しない。 この実装では、Pauliクラスの実装とインラインで文字列表現のハッシュを使用する。
IBM Q プロバイダー 0.7.2
変更なし
0.19.4
Terra 0.14.2
アップグレードの注意
circuit_to_gateとcircuit_to_instructionのコンバーターは以前、生成されたゲートや命令を自動的にアクティブなSessionEquivalenceLibraryに含めていた。 これらのコンバーターは、オプションのequivalence_libraryキーワード引数を受け付けるようになり、変換後のインスタンスを登録するかどうか、また登録する場所を指定できるようになった。 デフォルトの動作は、変換後のインスタンスを登録しないことである。
バグ修正
- マルチコントロールXゲートの実装(
MCXGrayCode、MCXRecursive、MCXVChain)は、その実装をより正確に記述するために、nameプロパティが変更されている(それぞれ、mcx_gray、mcx_recursive、mcx_vchain) 以前は、これらのゲートは「mcx` with ``MCXGate」という名前を共有していたため、これらのゲートが誤ってトランスパイル・シミュレーションされる原因となっていた。 ControlledGatectrl_stateのインスタンスは、比較されたゲートが等価であっても、等しいと評価されない場合があった。 これは既に解決されています。qiskit.pulse.SetFrequencyのSI単位変換を修正。SetFrequency命令はフロントエンドでは Hz であるべきで、SetFrequencyがPulseQobjInstructionに変換されるときに GHz に変換されなければならない。- オープン・コントロールは、ゲートの定義を変更することで実装された。 しかし、ゲートがすでに基礎に存在する場合、この定義は使用されず、バックエンドに送られる回路が不正確になる。 これは、制御されたゲートが開いている場合に、その定義を出力するようにアンローラーを変更する。
エア 0.5.2
変更なし
イグニス 0.3.0
変更なし
アクア 0.7.2
前奏曲
Aer qasm_simulatorでのVQE期待値計算が、期待されるショットノイズの挙動を持つ計算にデフォルト設定されるようになりました。
アップグレードの注意
- cvxpyが qiskit-aquaの依存関係として要件リストに追加されました。 これは、
qiskit.aqua.algorithms.QSVMの一部として使用される二次プログラムソルバーに使用される。 以前は、cvxoptはオプションの依存関係で、この機能を使うにはインストールが必要だった。 cvxpyはqiskit-aquaと一緒にインストールされるので、これはもう必要ありません。 - QASMバックエンドで
qiskit.aqua.algorithms.HHLの一部として実行される状態トモグラフィでは、トモグラフィフィフィッティング関数qiskit.ignis.verification.StateTomographyFitter.fit()が、常に最小二乗フィッティングを使用するためにlstsqに設定されたメソッドで明示的に呼び出されるようになりました。 以前は、cvxpyがインストールされていれば、cvxフィッターを使おうとしていた。 しかし、cvxフィッターは、cvxpyの一部としてインストールされた SDP ソルバーと、特別に構成されたcvxpyインストールに依存します。cvxpyがインストールされた環境では、常に存在するとは限りません。 - qiskit-aerの
qiskit.providers.aer.extensions.SnapshotExpectationValue命令を使用したVQE期待値計算は、デフォルトでは有効ではなくなりました。 これは、 0.7.0、大幅に高速化されるため、デフォルトに変更されたが、ショットノイズのない予期せぬ理想的な結果につながった(詳細は #1013を参照)。 現在、デフォルトはユーザーの期待に沿うように変更されている。qiskit.aqua.algorithms.VQEコンストラクタで新しいinclude_customkwarg をTrueに設定することで、より高速な期待値計算を使用することができるようになりました。
新機能
qiskit.aqua.algorithms.VQEとそのサブクラス(主にqiskit.aqua.algorithms.QAOA)のコンストラクタに、新しい kwarginclude_customが追加された。 trueに設定し、expectationkwargをNone(デフォルト)に設定すると、Aerのqasm_simulatorqiskit.providers.aer.extensions.SnapshotExpectationValue命令によるVQE期待値計算が有効になります。 特殊なAerスナップショットベースの計算は、はるかに高速ですが、状態ベクトルシミュレータと同様の理想的な出力です。
IBM Q プロバイダー 0.7.2
変更なし
0.19.3
Terra 0.14.1
変更なし
エア 0.5.2
バグ修正
- ステートベクターとユニタリーのシミュレーターで、CPUスレッド数と同じ数の(並列)ショットを実行すると、シングルショットしか実行されないバグを修正。
- 密度行列Qasmシミュレーターメソッドにおいて、"diagonal" qobjゲート命令が正しく適用されない問題を修正。
- 密度行列シミュレーション法で条件付きゲートが正しく適用されないバグを修正。
- QasmSimulator density_matrix_gpu "メソッドと "density_matrix_thrust "メソッドのCZゲートとZゲートのバグを修正。
- 自動シミュレーション以外の方法を使用した場合に、シミュレーションに必要なメモリが QasmSimulator でチェックされなかった問題を修正。
- GPUシミュレータのメソッドに影響するメモリリークを修正しました
イグニス 0.3.0
変更なし
アクア 0.7.1
変更なし
IBM Q プロバイダー 0.7.2
バグ修正
qiskit.provider.ibmq.IBMQBackend.jobs()は、statuskwarg が'RUNNING'に設定されている場合、IBMQJobオブジェクトの正しいリストを返すようになりました。 修正 #523- パッケージメタデータが更新され、
qiskit-terra>= 0.14.0 への依存が適切に反映されました。 この依存関係は 0.7.0 リリースの一部として暗黙のうちに追加されましたが、パッケージ要件に反映されていなかったため、以前は古すぎるqiskit-terraのバージョンでqiskit-ibmq-providerをインストールすることが可能でした。 677番を修正
0.19.0
Terra 0.14.0
前奏曲
0.14.0 リリースにはいくつかの新機能とバグ修正が含まれている。 今回のリリースの最大の変更点は、量子回路ライブラリが qiskit.circuit.libraryに量子回路ライブラリを導入したことである。
この回路ライブラリでは、よく研究された回路ファミリーの豊富なセットを利用することができる。これらのインスタンスは、ベンチマークとして、より複雑な回路を構築する際のビルディング・ブロックとして、あるいは古典的な回路に対する量子計算の優位性を探るツールとして利用することができる。 このライブラリーのコンテンツはこれからも成長し、成熟していくだろう。
回路ライブラリーの初期リリースには以下のものが含まれている:
standard_gatesこれらは、プリミティブなビルディング・ブロックとして一般的に使用される固定幅ゲートで、1、2、3量子ビットゲートで構成される。 例えばXGate,RZZGateやCSWAPGate.qiskit.extensions.standard、これらのゲートの古い位置は廃止された。generalized_gatesこれらは任意の数の量子ビットに一般化できる族である。PermutationまたはGMS(グローバル・モルマー・ソレンセン・ゲート)。boolean_logic例えば、ADDのような単純なブール論理関数に従って基底状態を変換する回路である。XOR.arithmeticのような古典的な算術を行う回路の集合である。WeightedAdderとIntegerComparator.basis_changes量子フーリエ変換のような回路、QFT数学的に基底の変更を適用する。n_local回転とエンタングルメントのレイヤーを持つ大規模な回路を簡単に作るためのパターン。TwoLocalこれは1量子ビットの回転と2量子ビットのもつれを使う。data_preparation古典的な入力データを、シミュレーションが困難な量子状態にエンコードする回路。PauliFeatureMapまたはZZFeatureMap.- 文献で興味深いことが証明されている他の回路は以下の通りである。
QuantumVolume,GraphStateまたはIQP.
これらの回路をビルディング・ブロックとしてより簡単に使用できるようにするため、我々は、以下の方法を導入した。 compose() の方法を導入した。 qiskit.circuit.QuantumCircuit を導入し、他の回路との合成(両端を溶接し、ワイヤーを並べ替えることもできる)、あるいは他の単純なゲートとの合成を可能にした:
>>> 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 ═══════════════════════これにより、Qiskitの回路は暗黙の初期状態 を想定しなくなり、この初期状態で描画されなくなります。 回路が実行されるとき、バックエンドではオールゼロの初期状態が仮定される。
新機能
-
新しいメソッド
has_entry()新しいメソッドqiskit.circuit.EquivalenceLibraryクラスが追加され、与えられたゲートがライブラリに既知の分解を持つかどうかを素早くチェックできるようになった。 -
新しいクラス
IQPが追加されました。qiskit.circuit.library. -
新しい
compose()メソッドが追加された。qiskit.circuit.QuantumCircuit. これにより、量子回路の一方をゲートや命令にすることなく、2つの量子回路を構成することができる。 また、合成の時点で量子ビット/Clビットの並べ替えが可能で、オプションでインプレースでの変更もできる。 の代わりに使うこともできる。append()の代わりに使うこともできる。 -
qiskit.circuit.library.Diagonal回路が回路ライブラリに追加された。 これらの回路は対角量子演算子(対角線上の非ゼロ要素のみで構成)を実装している。 Aerシミュレータでは、密な行列よりも効率的にシミュレーションできる。 -
追加
from_label()メソッドをqiskit.quantum_info.Cliffordクラスを追加し、1量子ビットのI、X、Y、Z、H、Sゲートのテンソル積として初期化する。 -
スケジュール・トランスフォーマー
qiskit.pulse.reschedule.compress_pulses()は、パルス・スケジュール内の複数の同一パルスのインスタンスを単一パルスに置き換えることにより、ハードウェア内の波形メモリの使用量を削減する最適化パスを実行します。 例: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) -
その
qiskit.transpiler.Layoutには新しいメソッドreorder_bits()これは、レイアウトオブジェクトに基づいて仮想量子ビットのリストを並べ替えるために使われます。 -
に2つの新しいメソッドが追加された。
qiskit.providers.models.PulseBackendConfigurationに追加されました。get_channel_qubits()指定されたチャンネルで動作するすべての量子ビットのリストを取得しget_qubit_channel()で、与えられた量子ビットで動作しているチャネルのリストを取得します。
-
新しい
qiskit.extensions.HamiltonianGateqiskit.circuit.QuantumCircuit.hamiltonian()メソッドが導入され、ユーザーが指定したエルミート作用素と進化時間によって回路の波動関数のハミルトニアン進化を表現します。 進化時間はParameterもしtimeパラメータが提供されれば、UnitaryGateオブジェクトにコンパイルされるパラメータ化されたUCCSDまたはQAOAスタイルの回路を作成することができます。 ハミルトニアン演算子Hと時間パラメータtを持つHamiltonianGateのユニタリーは である。 -
回路ライブラリモジュール
qiskit.circuit.libraryは、新しいブーリアンロジックAND回路を提供します、qiskit.circuit.library.ANDおよびOR回路を提供します、qiskit.circuit.library.ORを提供するようになりました。 -
新しい偽のバックエンドが
qiskit.test.mockに追加された。 これらには、ibmq_armonk、ibmq_essex、ibmq_london、ibmq_valencia、ibmq_cambridge、ibmq_paris、ibmq_rome、ibmq_athensのモック版が含まれる。 他のフェイクバックエンドと同様、これらにはキャリブレーションデータのスナップショットが含まれる(すなわち、backend.defaults()) およびエラーデータ(すなわちbackend.properties()) 実際のシステムから取得したもので、ローカルテスト、コンパイル、シミュレーションに使用できる。 -
の
last_update_dateパラメーターは、 オブジェクトとしても渡せるようになった。BackendPropertiesのパラメータもdatetimeオブジェクトとして渡せるようになった。 これまでは、 ISO8601 形式の文字列のみが受け付けられました。 -
追加
qiskit.quantum_info.Statevector.from_int()とqiskit.quantum_info.DensityMatrix.from_int()メソッドを追加した。 -
ゲートを追加するための
qiskit.circuit.QuantumCircuitクラスのメソッド(たとえばh()など)を追加するクラスのメソッドは、以前は実行時にクラス定義に動的に追加されていましたが、クラスの静的に定義されたメソッドにリファクタリングされました。 これは、IDEなどの静的解析ツールがこれらのメソッドを読み込めるようになったことを意味する。
アップグレードの注意
-
新しいパッケージ python-dateutil が必須となり、要件リストに追加されました。 これは、外部プロバイダーから受け取った日時文字列を
BackendPropertiesオブジェクトをパースするために使われています。 -
のマシュマロスキーマ・クラスは、。
qiskit.providers.modelsのスキーマクラスは、 BackendObjects で使われなくなったので削除されました。 -
のクラスの
to_dict()メソッドの出力は、直接JSONシリアライズできる形式ではなくなりました。qiskit.providers.modelsのメソッドの出力は、もはや直接JSONシリアライズできる形式ではありません。 これらのクラスのインスタンスに含まれる内容によっては、dictのフィールドにnumpy配列や複素数があるかもしれません。 to_dictメソッドの出力をJSONシリアライズする場合、JSONエンコーダがnumpy配列と複素数を扱えることを確認する必要があります。 こちらには以下の内容が含まれます:qiskit.providers.models.BackendConfiguration.to_dict()qiskit.providers.models.BackendProperties.to_dict()qiskit.providers.models.BackendStatus.to_dict()qiskit.providers.models.QasmBackendConfiguration.to_dict()qiskit.providers.models.PulseBackendConfiguration.to_dict()qiskit.providers.models.UchannelLO.to_dict()qiskit.providers.models.GateConfig.to_dict()qiskit.providers.models.PulseDefaults.to_dict()qiskit.providers.models.Command.to_dict()qiskit.providers.models.JobStatus.to_dict()qiskit.providers.models.Nduv.to_dict()qiskit.providers.models.Gate.to_dict()
非推奨のメモ
-
この
qiskit.dagcircuit.DAGCircuit.compose()メソッドは、合成するビットの位置順序を指定するqubits/clbitsのリストを取るようになった。 引数edge_mapを使った辞書ベースのマッピング方法は非推奨であり、将来のリリースで削除される予定である。 -
クラスの
combine_into_edge_map()。qiskit.transpiler.Layoutクラスのメソッドは非推奨となり、将来のリリースで削除される予定です。 代わりに、新しいメソッドreorder_bits()は、レイアウトオブジェクトに従って仮想量子ビットのリストを並べ替えるために使われるべきです。 -
qiskit.pulse.ControlChannelメソッドのパラメータchannel。qiskit.providers.models.PulseBackendConfigurationメソッドcontrol()オブジェクトを渡すことは非推奨となっており、将来のリリースでは削除される予定です。ControlChannelオブジェクトは、バックエンドのコンフィギュレーションchannels属性から生成されるようになりました。この属性には、すべてのチャンネルと、それらが動作する量子ビットの情報が含まれています。 さて、メソッドcontrol()は、(control_qubit, target_qubit)形式のパラメータqubitsと型listまたはtupleを受け取り、コントロール・チャンネルのリストを返すことが期待されている。 -
の
ANDとORメソッドは非推奨。qiskit.circuit.QuantumCircuitメソッドは非推奨であり、将来のリリースで削除される予定です。 代わりに、回路ライブラリのブーリアンロジッククラスを使用する必要があります。qiskit.circuit.library.ANDamdqiskit.circuit.library.ORを使用し、それらのオブジェクトをあなたのクラスに追加します。 例: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) -
qiskit.extensions.standardモジュールは非推奨であり、将来のリリースで削除される予定である。 このモジュールのゲート・クラスはqiskit.circuit.library.standard_gatesに移された。
バグ修正
-
その
qiskit.circuit.QuantumCircuitメソッドinverse()メソッド、mirror()メソッド、QuantumCircuit.dataセッターは、パラメータ化された回路インスタンスで使用すると無効な回路を生成する。 この問題は解決され、これらのメソッドはパラメータ化された回路で動作するようになった。 #4235を修正 -
以前は、標準qiskitゲートの制御バージョンを作成する際、
ctrl_stateが指定されていると、一般的なControlledGateオブジェクトが返されましたが、指定されていないと、標準qiskitゲートが定義されていれば、制御されたゲートが返されました。 このPRにより、標準的なqiskit制御ゲートがctrl_stateを理解できるようになる。さらに、このPRは、すでに制御されているゲートの
ctrl_stateを設定すると、制御量子ビットが追加されるのではなく、指定された状態が全制御幅に適用されると仮定するバグと考えられるものを修正した。 例えば、こうだ:circ = QuantumCircuit(2) circ.h(0) circ.x(1) gate = circ.to_gate() cgate = gate.control(1) c3gate = cgate.control(2, ctrl_state=0)の場合、2つの制御量子ビットが追加されるのではなく、3つの制御量子ビットすべてに
ctrl_state。 -
のバグを修正。
random_clifford()のバグを修正した。 4271を修正 -
その
qiskit.circuit.Instructionメソッドqiskit.circuit.Instruction.is_parameterized()Trueメソッドはこれまで、Instructionの配列要素にqiskit.circuit.Parameterparamsを持つインスタンスに対してParameterを返していました。 これは、命令が完全にバインドされると.is_parameterizedがFalseを返すように修正された。 -
qiskit.circuit.ParameterExpression.subs()パラメータを代入すると、同じ名前の式で2つの異なるParametersオブジェクトになるケースが正しく検出されていなかった。 これは修正されたので、このような場合はCircuitError。 -
のパフォーマンスを向上させる。
qiskit.quantum_info.Statevectorおよびqiskit.quantum_info.DensityMatrixクラス__init__メソッドを最適化することにより、低量子ビット回路シミュレーションのパフォーマンスを向上させます。 4281を修正 -
関数
qiskit.compiler.transpile()は、パラメータbasis_gatesがNoneに設定された場合に正しく処理するようになりました。 これにより、トランスパイルプロセスで追加されたゲートを含め、トランスパイルされた出力回路内のどのゲートも使用できるようになる。 このパラメータを使用すると、最適化の際に意図しない結果を招く可能性があることに注意してください。 トランスパイラのパスの中には、basis_gates。 例えばqiskit.transpiler.passes.Optimize1qGatesは、 u1、 u2、 u3 ゲートの連鎖のみを最適化し、basis_gatesがなければ最適化できるゲートをアンロールすることができない: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) ├ └───┘└─────────────┘└───┘└─────────────────┘3017を修正
その他の注意事項
-
のオブジェクトは
qiskit.providers.modelsのオブジェクトは、以前はmarshmallowライブラリを使用して構築されていましたが、marshmallowに依存しないようにリファクタリングされました。 こちらには以下の内容が含まれます:BackendConfigurationBackendPropertiesBackendStatusQasmBackendConfigurationPulseBackendConfigurationUchannelLOGateConfigPulseDefaultsCommandJobStatusNduvGate
これらは顕著な変化なく、ドロップインで置き換えられるはずだが、マシュマロから受け継いだ仕様は機能しないかもしれない。 非互換性が見つかった場合は、問題を提起してください。
エア 0.5.1
変更なし
イグニス 0.3.0
変更なし
アクア 0.7.0
前奏曲
Qiskit Aqua 0.7.0 リリースでは、オブジェクトとの統合が改善され、多くの新機能が導入されています。 qiskit.circuit.QuantumCircuit オブジェクトとの統合が改善されました。 中心的な貢献は、Qiskitの最適化モジュール、Operatorsの完全なリファクタリング、アルゴリズムのネイティブ入力としての回路の使用、宣言的JSON APIの削除である。
最適化モジュール
qiskit.optimization` モジュールに、二次プログラムのモデリングと解法の機能が追加された。 例えば、 MinimumEigenOptimizer (例えば、以下のような)。 VQE または QAOA )または CplexOptimizer、さらに QuadraticProgramToQubo のような、異なる問題表現間を変換するコンバーターのセットもある。 追加された機能の一覧は変更履歴をご覧ください。
オペレータフロー
qiskit.aqua.operators` で提供される演算子論理は完全にリファクタリングされ、今では物理的に直観的な量子計算を構築するための完全なツールセットとなっている。 状態関数、演算子、測定値を含み、内部的にはTerraのOperatorオブジェクトに依存している。 期待値と進化の計算は大幅に簡略化され、 ExpectationFactory のようなオブジェクトは、オペレーターの入力タイプに基づいて、適切で最も効率的な期待値アルゴリズムを生成する。 追加された機能の概要については、 変更履歴をご覧ください。
ネイティブ回路
アルゴリズムは一般的に、例えばVQE、VQC、QSVMのように、パラメータ化された回路を入力として使用する。 以前は、これらの入力は回路オブジェクトをラップする VariationalForm または FeatureMap のタイプでなければならなかった。 現在、これらのアルゴリズムでは回路がネイティブにサポートされている。つまり、個別に構築された QuantumCircuit 、これらのアルゴリズムに渡すことができる。 幅広い回路ファミリーを提供する回路ライブラリーのリリースと組み合わせることで、アルゴリズム入力として精巧な回路を構築することが容易になった。
宣言型JSON API
アクアインターフェースGUIを使用するのと同様に、辞書をパラメータとしてアルゴリズムを実行する機能が削除されました。
IBM Q プロバイダー 0.7.0
新機能
- アクティブなジョブの上限に達したためにジョブを投入できなかった場合、新しい例外
qiskit.providers.ibmq.IBMQBackendJobLimitErrorが発生するようになりました。 qiskit.providers.ibmq.job.IBMQJobとqiskit.providers.ibmq.managed.ManagedJobSetはそれぞれ、update_nameとupdate_tagsの2つの新しいメソッドを持っている。 これらはそれぞれ、ジョブまたはジョブセットの名前とタグを変更するために使用される。qiskit.providers.ibmq.IBMQFactory.save_account()とqiskit.providers.ibmq.IBMQFactory.enable_account()は、それぞれ、ディスクに保存または使用するデフォルトのプロバイダーを指定できるオプションのパラメーターhub、group、projectを受け付けるようになった。
アップグレードの注意
qiskit.providers.ibmq.job.IBMQJobメソッドcreation_dateとtime_per_stepは、日付時刻情報を UTC ではなくローカル時刻のdatetimeオブジェクトとして返すようになった。 同様に、start_datetimeとend_datetime、qiskit.providers.ibmq.IBMQBackendService.jobs()とqiskit.providers.ibmq.IBMQBackend.jobs()のパラメーターもローカルタイムで指定できるようになった。qiskit.providers.ibmq.job.QueueInfo.format()メソッドは、datetimeから文字列へのカスタムのフォーマッタを使用するようになり、パッケージの矢印は必要なくなり、要件リストから削除されました。
非推奨のメモ
qiskit.providers.ibmq.job.IBMQJobのfrom_dict()とto_dict()メソッドは非推奨であり、次のリリースで削除される予定である。
バグ修正
- スレッディングによりasyncioループが存在しない場合に
nest_asyncio.apply()、例外が発生することがある問題を修正。