common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


autoQAOA
Desktop RAG

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