common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING

Nobisuke

Dekisugi


autoQAOA
DEEPSCORE

Overview
Service overview
Terms of service

Privacy policy

Contact
Research

Sign in
Sign up
common.title

量子ボルツマンガチャを作って引いてみた。

Yuichiro Minato

2020/11/01 04:26

#量子アニーリング #D-Wave #ボルツマン

3

量子アニーラを使ってできるのは最適化計算だけではありません。確率分布を作り出すことができますので、ゲームなどの利用に最適です。今回はD-Waveの新型マシンであるAdvantage System1.1を利用してガチャを作ってみたいと思います。

いらすとや

まずはいらすとやさんから良さそうなキャラクターと、ガチャのレア度の画像をダウンロードし、いくつか作ってみました。

まずはガチャの画像です。右上に量子コンピュータを配置してみました。

次にノーマルです。スライムにしました。

次にレアです。確かベヒーモスです。

そして、さらにハイパーレアで変なおっさん。オーディーンかなんかだった気がします。

最後に滅多に出ないSSRはリヴァイアサンにしました。

ボルツマン分布とQUBO

早速ガチャやります。今回はボルツマン分布を使ってみます。イジングモデルのエネルギー値に対して、確率分布である、

p(x) = 1/Z * exp(beta*E)

が成立します。これを利用し、QUBOを作り、エネルギー分布とガチャのレア度を対応させます。

ツール読み込み

今回は純粋にD-WaveのAdvantageを呼び出します。

import numpy as np
from dwave.system.samplers import DWaveSampler
from dwave.system.composites import EmbeddingComposite

早速サンプリング

早速QUBOを作って、実機に投げてみます。tokenは自分のをあらかじめ設定します。

#qubo = np.array([[0,1,10],[0,0,-1],[0,0,-0.5]])
qubo = np.array([[0,-2,10],[0,0,-1],[0,0,-0.5]])
bqm = dimod.BQM.from_numpy_matrix(qubo)
response = EmbeddingComposite(DWaveSampler(endpoint='https://cloud.dwavesys.com/sapi', token=token, solver='Advantage_system1.1')).sample(bqm, num_reads=1000)
print(response)

作るQUBOによって分布が変わります。今回はAdvantage system 1.1に1000回投げました。

確率分布

結果はこのような感じででます。

0 1 2 energy num_oc. chain_.
0 1 1 0 -2.0 551 0.0
1 0 1 1 -1.5 375 0.0
2 0 0 1 -0.5 38 0.0
3 1 0 0 0.0 11 0.0
4 0 0 0 0.0 15 0.0
5 0 1 0 0.0 10 0.0
['BINARY', 6 rows, 1000 samples, 3 variables]

110が551回。011が375回、その他続くという感じです。背景にある確率分布は厳密に求めることができますが、今回はサンプリングですので、それに準じて出現回数が決まっています。

量子ゲートマシンでもできる

今回は量子アニーラを使いましたが、IBMやGoogleやIonQ、Honeywellなどのマシンでも利用できます。その際にはボルツマンガチャではなく、状態ベクトルを直接とる、ボルンガチャとなります。ボルンガチャの作り方は、今回のQUBOとは異なるので、またの機会に紹介したいと思います。

量子アニーラの特徴は応答が速いことです。量子ゲートマシンで結果を取得するのは時間がかかるので、今回はアナログのD-Waveの量子アニーラのサンプリングを使います。

スマホアプリへ実装

早速スマホアプリへ実装しましょう。ガチャの画面を押すと、カナダのD-Waveへとジョブが投入され、ガチャが決まります。確率分布は上記のボルツマン分布を仮定して調整されているので、なかなかSSRを引くのは大変です。

理論的な話

実際に、背後の確率分布はそれぞれ、出ているエネルギー値-2.0や-1.5などによって変わります。サイズが小さい場合には、厳密な確率を求めることができますが、実際にはアナログマシンですので、マシンの性能や状態によっても分布が変わりますので、事前に実機で分布を取るのが望ましいです。

上記は、実機では、SSRが出る確率は、およそ1%となっています。この辺り調整するには、量子アニーラではイジング式をいじれば良いことになります。

ゲームは面白い

量子コンピュータや量子アニーラの不確実性をゲームに導入するのはとても面白いと思いますので、ぜひ新しい分野に挑戦してみてください。

© 2025, blueqat Inc. All rights reserved