前回記事はこちらから↓
はじめに
前回の記事では、クラウド(AWS)上で比較的手軽に動かせる量子インスパイアード・ハイブリッドソルバー QIH Solverで自作の問題をどのように解くのかについてtipsを書きました。
今回は、いくつかの問題でローカルでの擬似量子アニーリングとQIH Solverで同じ問題を解いた時に、どのくらいの処理速度で、どれくらいの最適解が得られるのかを観点で記載できればと思います。
環境(ローカル)
- OpenJij
- PyQUBO
本記事ではプログラム自体は割愛します。
最大カット問題
以前投稿したこちらの記事をベースのプログラムとして比較しました。
- 最大カット問題: 10人を5:5のチーム分け
- max-k-cut: 30人を10:10:10のチーム分け
記事内で得られた解を一旦の正解としてQIH Solverにて同様の解が得られる時間の確認をしました。
問題 | ローカル / QIH Solver | 処理速度(秒) |
---|---|---|
最大カット | ローカル | 0.3 |
最大カット | QIH Solver | 1.0 |
max-k-cut | ローカル | 23.7 |
max-k-cut | QIH Solver | 7.0 |
QIH Solverでは記載省いていますが解は同等のものが得られております。
処理速度については、最大カットではOpenJij、max-k-cutではQIH Solverでの速度が速くなっておりました。
単純に、問題の規模的に最大カットは10人を5:5で分ける小さい問題であったことが要因かと考えております。
max-k-cutは最大カットよりも問題の規模が大きくなったため、QIH Solverの速度が速くなったのかと思います。
問題の規模に応じて使い分けるのが最適かと感じました。
ナップザック問題
一般的なナップザック問題についても同様に比較を行いました。
問題設定は、200個の物品から価値を最大化するような形で設定しております。
プログラムではシードを固定して乱数で重さや価値を決定しております。
ローカルの方では特にパラメータの調整などはせずに実行しております。
ローカル / QIH Solver | 処理速度(秒) | 価値 |
---|---|---|
ローカル | 15 | 3423 |
QIH Solver | 27 | 4292 |
データ数は中規模かとは思いますが、速度面ではOpenJijの方が良さそうで、エネルギーではQIH Solverの方が優れていることが確認できました。
OpenJijでは、n-readsやn-sweepsなどで計算回数を増やしてエネルギーを高めることができますが、こちらの数値を増やしてもQIH Solverほどの値は得られませんでした(ペナルティ係数の調整も本来は必要)。
OpenJijでn-readsやn-sweepsを調整してQIH Solverと同じ実行時間にして比較すると、単純にQIH Solverの方が良い解が得られるかもしれません。
うまくいかなかったもの
最大カット問題と同様に以前作成したタスクスケジューリングについてもQIH Solverでも比較しようとしましたが、うまく解が得られませんでした。
問題設定は、人日単位の3ヶ月分の複数タスクを5人に割り振りをするもので、問題の規模が大きくなるためstep1で月単位での割り振り、step2で月単位に割り振りしたタスクを週単位に再割り当てをする2段構成になっていました。
step1については、パラメータ調整で制約に基づく解が得られましたが、step2では制約に基づく解が得られませんでした。
動作確認ができていないため、細かい記載はできず断定はできませんが、制約項側の設計に問題があるのではないかと考えております。この問題では少し制約項が複雑になってしまったため、その点が影響しているのではと思っております。
おわりに
いくつかの問題についてローカル(OpneJij)とQIH Solverで比較した時の簡単な性能確認を行いました。
結果として、当たり前ではありますが問題の規模に応じて処理速度や、エネルギーの差が見られました。
- 小規模: OpenJijで十分
- 中規模: QIH Solverの方が良い
また、適切な問題設計、抽象化、分割ができていない場合には、OpenJijではできていたがQIH Solverでは制約に沿った解が得られないこともある点は注意したいと思いました。
今回はある程度解がわかっている状態で性能確認をしているため、良い解を得たい場合であればQIH Solverの方が良いのかなと思う一方、調整でそもそも制約に沿った解が得られないこともあるため、その辺りを念頭に置き、各ソルバーで計算できるようなQUBOを設計できればと思います。(QIH Solverでうまくできなかった点は別途原因の調査ができればと思います...)