Nobisuke
Dekisugi
RAG
Privacy policy
2022/10/03 10:53
最近blueqat cloudを使ってアニーリングを実行している人が増えたので、使い方を見てみます。実機のD-Waveに投げるにはQUBOマトリックスを投げます。
Copy !pip install blueqat-cloud
APIキーを登録していない人は先に登録してください。blueqat.comに登録し、設定からとれます。
Copy import bqcloud api = bqcloud.register_api("Your API key here")
登録している人はこちらから
Copy import bqcloud api = bqcloud.load_api() api.annealing([[-1, 0], [0, 0.5]], 5, 10)
AnnealingResult(task={'id': 'a4038946-7ce3-4a10-9697-c1a1f8b7237f', 'user_id': 'f9c2af20-b38b-4b4e-943c-07e66ab03de1', 'qubo': '{{-1,0},{0,0.5}}', 'chain_strength': 5, 'num_reads': 10, 'ip': '18.116.44.12', 'created_at': '2022-10-03T10:24:03.327581+00:00', 'updated_at': '2022-10-03T10:24:03.327581+00:00', 'device_name': 'd-wave/Advantage_system4', 'dataframe': '{"0":{"0":1},"1":{"0":0},"chain_break_fraction":{"0":0.0},"energy":{"0":-1.0},"num_occurrences":{"0":10}}'})
こんな感じです。簡単にできました。QUBO行列、chain break、試行回数の順番です。
ちょっと投げる行列はpyquboやd-waveではあまり見ない形ですので、変換を見てみます。
Copy !pip install pyqubo
Copy import dimod from pyqubo import Array x = Array.create('x', shape=(5), vartype='BINARY') #適当に作ります。 qubo = x[0]*x[1] model = qubo.compile() bqm = model.to_bqm()
BQMのモデルを行列形式にします。
Copy qubo_matrix = bqm.to_numpy_matrix(variable_order=['x[0]', 'x[1]']).tolist()
/tmp/ipykernel_123/4108795986.py:1: DeprecationWarning: bqm.to_numpy_matrix() is deprecated since dimod 0.10.0
qubo_matrix = bqm.to_numpy_matrix(variable_order=['x[0]', 'x[1]']).tolist()
不穏なエラーが出てますが、、、気にせず続けます。最後にこれを先ほどのように投入して完了です。
Copy result = api.annealing(qubo_matrix, 5, 10)
計算結果をDataframeで取り出してみてみます。
Copy import pandas as pd df = pd.read_json(result.task["dataframe"]) df
0 1 chain_break_fraction energy num_occurrences
0 0 1 0 0 2
1 0 0 0 0 4
2 1 0 0 0 4
いい感じに仕上がりました。
© 2024, blueqat Inc. All rights reserved