D-Waveではshotと言ってたくさん計算をします。戻ってきたオブジェクトから計算結果を取り出す方法を残しておきます。
response = EmbeddingComposite(DWaveSampler(endpoint='https://cloud.dwavesys.com/sapi', token=token, solver='Advantage_system1.1')).sample(bqm, num_reads=1000)
print(response)
このようにやると、
0 1 2 energy num_oc. chain_.
0 1 1 0 -2.0 550 0.0
1 0 1 1 -1.5 294 0.0
2 0 0 1 -0.5 59 0.0
3 1 0 0 0.0 37 0.0
4 0 0 0 0.0 33 0.0
5 0 1 0 0.0 27 0.0
['BINARY', 6 rows, 1000 samples, 3 variables]
配列で欲しいので、
response.record
こうすると、
rec.array([([1, 1, 0], -2. , 550, 0.), ([0, 1, 1], -1.5, 294, 0.),
([0, 0, 1], -0.5, 59, 0.), ([1, 0, 0], 0. , 37, 0.),
([0, 0, 0], 0. , 33, 0.), ([0, 1, 0], 0. , 27, 0.)],
dtype=[('sample', 'i1', (3,)), ('energy', '<f8'), ('num_occurrences', '<i8'), ('chain_break_fraction', '<f8')])
また、
response.first.sample.values()
こうすると、
dict_values([1, 1, 0])
上記のように取り出せます。listにするときは、list()で囲むと使いやすくなります。