@yuichirominato 2019.02.18更新 104views

【QAOA】整数計画問題を量子コンピュータのQAOAで


はじめに

整数計画問題と呼ばれる問題をQAOAを使って組合せ最適化問題で解いてみます。

コスト関数

コスト関数は下記の通りです。Sx=bという条件を満たす制約条件が1項目で、問題となる方程式を満たすのが2項目です。

例題

早速下記のような例題を解いてみましょう。

Blueqatで解いてみます。

まずは式を準備して解いてみます。インストールしてない方はpipで

pip install blueqat

次に早速問題を解きます。opt.optmは数式からハミルトニアンを自動分解してQUBOをつくってくれます。上記式でBのハイパーパラメータを2にしてみました。

from blueqat import opt
from blueqat import vqe

#quboに落とす
E = opt.optm("(3*q0+2*q1+q2-3)^2+(5*q0+2*q1+3*q2-5)^2-2*(q0+2*q1+q2)",3)

そしてこれをQAOAで解けるようにパウリ演算子に変換します。

E = opt.pauli(E)

そして、ステップ数を決めて解きます。

step = 4
result = vqe.Vqe(vqe.QaoaAnsatz(E, step)).run()
print(result.most_common(5))

まとめると、

from blueqat import opt
from blueqat import vqe

#quboに落とす
E = opt.optm("(3*q0+2*q1+q2-3)^2+(5*q0+2*q1+3*q2-5)^2-2*(q0+2*q1+q2)",3)
E = opt.pauli(E)

step = 4
result = vqe.Vqe(vqe.QaoaAnsatz(E, step)).run()
print(result.most_common(5))

#=>
(((0, 1, 1), 0.8571008889203714), ((1, 1, 0), 0.08134053938905932), ((0, 1, 0), 0.031757569458734695), ((1, 0, 0), 0.011712997948251888), ((1, 0, 1), 0.010846834513550044))

こたえは011がでてきました。こちらが答えです。

x1=0,x2=1,x3=1となりました。以上で整数計画問題が解けました。

Recommended


Wikiへ移動