pyquboは、Pythonで数理最適化問題を解くためのライブラリです。量子アニーリングを使って解を求めることができます。また、ダイナミックな問題や多目的最適化問題にも対応しています。

pyquboのインストール

以下のコマンドを使用して、pyquboをインストールできます。

pip install pyqubo

数理最適化問題を定義する

例として、次の数理最適化問題を考えてみます。

最小化 2x + y
制約条件
x + 2y >= 1
x, y は 0 または 1 の整数

この問題をpyquboで定義するには、以下のようにします。

from pyqubo import Array, Constraint, Placeholder, solve_qubo

# 変数の定義
x = Array.create('x', shape=2, vartype='BINARY')
y = Array.create('y', shape=2, vartype='BINARY')

# 目的関数の定義
H = 2*x[0] + y[0]

# 制約条件の定義
const1 = Constraint(x[0] + 2*y[0], label="const1")

# プレースホルダーの定義
a = Placeholder("a")

# 制約条件の追加
H += a * const1

# QUBO行列の取得
model = H.compile()
qubo, offset = model.to_qubo(feed_dict={"a": 1})

# QUBO行列を解く
solution = solve_qubo(qubo)

# 解の出力
print(solution)

結果の出力

上記のプログラムを実行すると、以下のような出力が得られます。

{'x[0]': 0, 'x[1]': 0, 'y[0]': 1, 'y[1]': 0}

つまり、x=0, y=1で、目的関数の値は2となります。

まとめ

pyquboを使用すると、Pythonで簡単に数理最適化問題を解くことができます。量子アニーリングを使って高速に解を求めることができます。また、制約条件の追加や、多目的最適化問題への対応も可能です。