根性で仕上げてきました。量子コンピュータで各種アルゴリズムを実行するのは大変ですよね。今回はそんな量子回路を自分で作らなくても実行できるツールを作りました。順番に解説しましょう。
まずは、今回の目的は難しい量子回路を理論から自動的に作ります。今回はQAOAというハイブリッド計算を行いました。
左上にパラメータが見えます。こちらは計算の精度を決めるようなステップ数とハイブリッドの古典側のアルゴリズムを決めます。そして、その下に小さくRun IonQと書いてあるのは、最適化回路の計算は基本的にシミュレータを使っていきますが(実機でやると値段が高いので)、最終的に出来上がった回路をIonQのイオントラップ量子コンピュータに投げることができるオプションです。
そして大事なのが真ん中の列の一番上のQUBOです。こちらには問題を設定します。今回は問題は自分で式を作るということを想定しました。今後は問題を選んだら自動的に条件からこの式も作ってくれるものを用意したいと思います。
式を入れてパラメータを決めてRUNボタンを押すと、、、真ん中の列にChartに答えの確率が、右の列のResultに詳しい答えのばらつきが出ます。真ん中の列のOptimizeには古典計算での最適化にかかったステップ数と期待値の推移がでます。
社会問題は二体問題といって二つの関係式でかける形のものがあり、それらはグラフ問題として取り扱うことができます。今回定式化が二体問題の場合には、自動的にグラフを描画する機能も入れました。また、QUBOmatrixと呼ばれる係数が見える行列も自動生成します。
また、真ん中の列の下のほうには、Python Codeと書いてあり、プログラミングをしたいときのコードを自動的に生成してくれます。
便利ですよね。今回の見どころは量子回路自動生成です。まだ描画は簡易的ですが、HゲートやCXやRZゲートが駆使されていることが分かります。これらはQAOAの理論から自動的に構築されています。最後にRXが利用されているのは量子アニーリングに近いことをしているからです。今後はより複雑な回路を自動生成するものも実装予定です。また、この生成された量子回路を直接プログラムの形で取り出すこともできます。
次に、オプションでIonQへタスクを投げるを選択した場合には、これらの最適化をシミュレートした後に最適化された回路をイオントラップ型の量子コンピュータへ自動的に投入してくれる機能を付けました。
こちらには、blueqat cloudに対応したタスクIDと生成日時と計算完了日時が記録されます。IonQはまだタスクを投げてから完了まで時間がかかるので、Updateボタンを用意しました。計算が完了するまで待つ必要があります。今後はUpdateボタンもそのうち撤去予定です。
計算が終わるとバーチャート形式で出た答えが確率とともに表示されます。
今回は問題設定をしてちょっとパラメータを決めると自動的に計算をして量子回路を作って、実機に投げて計算結果まで表示してくれるシステムを作って紹介しました。
こちらを使うと量子コンピュータの最新技術が業務応用の検討レベルにすぐに持ち込むことができます。次はこれに対応して簡単にアプリを作れる仕組みを実装したいと思います。
以上です。