D-Wave Systems

D-Wave Sampler

D-Wave Systems の提供する量子アニーリングマシン (QPU) です。QUBO あるいは イジング変数の二次多項式で表された組合せ最適化問題を入力できます。

Tip

Fixstars Amplify のユーザ登録を行い無償のお試し API トークンを入手するか、自身の D-Wave Systems のアカウントで API トークンを入手してください。

ソルバー仕様:

クライアントクラス

amplify.DWaveSamplerClient

実行パラメータ

amplify.DWaveClientParameters

実行結果

dimod.sampleset.SampleSet

実行時間

dimod.sampleset.SampleSet.info["timing"]["qpu_access_time"]

API 方式

REST API (SAPI)

実行パラメータリファレンス

📖 Parameters Reference

バイナリ変数

イジング変数

整数変数

実数変数

目的関数

2次*

2次*

-

-

等式制約

-

-

-

-

不等式制約

-

-

-

-

*: バイナリ変数とイジング変数の両方が同時に含まれる問題には対応していません。

クライアントクラス:

クライアントクラスの共通インターフェース に加えて以下のアトリビュートを持ちます。

アトリビュート

データ型

詳細

solver

str

使用する D-Wave Sampler の名前を取得・設定します

solver_names

list[str]

設定されたトークンで仕様可能な D-Wave Sampler の名前の一覧を取得します

properties

dict

使用するソルバーのプロパティを取得します (dwave.system.samplers.DWaveSampler.properties と同じ結果が返ります)

設定例:
from amplify import DWaveSamplerClient

client = DWaveSamplerClient()

# API トークンを設定
client.token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# 使用するソルバーを指定
# (client.solver_names に含まれる名前のいずれかを指定)
client.solver = "Advantage_system4.1"

# 実行回数を 1000 に設定
client.parameters.num_reads = 1000

参考

amplify.DWaveSamplerClient.parameters に設定可能なアトリビュートは、📖 Parameters Reference を参照してください。

次のようにして properties から取得することも可能です (出力は solver によって変わります)。

>>> client.properties["parameters"]
{'anneal_offsets': 'Anneal offsets for each working qubit, formatted as a list, with NaN specified for unused qubits.',
 'anneal_schedule': "Annealing schedule formatted as a piecewise linear list of floating-point pairs of 't' and 's'.",
 'annealing_time': 'Quantum annealing duration, in microseconds, as a positive floating point number.',
 ...}
実行例:
from amplify import Model, VariableGenerator, solve

# 決定変数と目的関数を定義
g = VariableGenerator()
q = g.array("Binary", 2)
f = q[0] * q[1] + q[0] - q[1] + 1

# モデルを作成
model = Model(f)

# ソルバーを実行
result = solve(model, client)

使用するソルバーを取得 (未指定の場合は自動的に決定):

>>> client.solver
'Advantage_system4.1'

現在使用可能なソルバーの一覧を取得:

>>> client.solver_names
['Advantage_system6.4', 'Advantage2_prototype2.5', 'Advantage_system4.1']

詳細な実行時間を取得:

>>> result.client_result.info
{'timing': {'qpu_sampling_time': 66040.0,
  'qpu_anneal_time_per_sample': 20.0,
  'qpu_readout_time_per_sample': 25.46,
  'qpu_access_time': 81799.16,
  'qpu_access_overhead_time': 621.84,
  'qpu_programming_time': 15759.16,
  'qpu_delay_time_per_sample': 20.58,
  'total_post_processing_time': 1.0,
  'post_processing_overhead_time': 1.0},
 'problem_id': '14eaa606-9eed-4c72-83f1-d563bb0e1956'}

Leap's Hybrid BQM Sampler

D-Wave Systems の提供する量子アニーリングマシン (QPU) と古典アルゴリズムで動作するハイブリッドソルバーです。QUBO あるいは イジング変数の二次多項式で表された組合せ最適化問題を入力でき、D-Wave Sampler よりも大規模な問題の入力に対応しています。

Tip

Fixstars Amplify のユーザ登録を行い無償のお試し API トークンを入手するか、自身の D-Wave Systems のアカウントで API トークンを入手してください。

ソルバー仕様:

クライアントクラス

amplify.LeapHybridSamplerClient

実行パラメータ

amplify.DWaveClientParameters

実行結果

dimod.sampleset.SampleSet

実行時間

dimod.sampleset.SampleSet.info["run_time"]

API 方式

REST API (SAPI)

実行パラメータリファレンス

📖 Parameters Reference

バイナリ変数

イジング変数

整数変数

実数変数

目的関数

2次

2次

-

-

等式制約

-

-

-

-

不等式制約

-

-

-

-

クライアントクラス:

クライアントクラスの共通インターフェース に加えて以下のアトリビュートを持ちます。

アトリビュート

データ型

詳細

solver

str

使用する Leap's Hybrid BQM Sampler の名前を取得・設定します

solver_names

list[str]

設定されたトークンで仕様可能な Leap's Hybrid BQM Sampler の名前の一覧を取得します

properties

dict

使用するソルバーのプロパティを取得します (dwave.system.samplers.LeapHybridSampler.properties と同じ結果が返ります)

設定例:
from amplify import LeapHybridSamplerClient

client = LeapHybridSamplerClient()

# API トークンを設定
client.token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# 使用するソルバーを取得
# (未指定であれば自動的に決定される)
# print(client.solver)

# 使用可能なソルバーの一覧を取得
# print(client.solver_names)

# 使用するソルバーを指定
# (client.solver_names に含まれる名前のいずれかを指定)
client.solver = "hybrid_binary_quadratic_model_version2"

# 実行時間を 5 秒に設定
client.parameters.time_limit = 5

参考

amplify.LeapHybridSamplerClient.parameters に設定可能なアトリビュートは、📖 Parameters Reference を参照してください。

次のようにして properties から取得することも可能です (出力は solver によって変わります)。

>>> client.properties["parameters"]
{'time_limit': 'Maximum requested runtime in seconds.'}
実行例:
from amplify import Model, VariableGenerator, solve

# 決定変数と目的関数を定義
g = VariableGenerator()
q = g.array("Binary", 2)
f = q[0] * q[1] + q[0] - q[1] + 1

# モデルを作成
model = Model(f)

# ソルバーを実行
result = solve(model, client)

使用するソルバーを取得 (未指定の場合は自動的に決定):

>>> client.solver
'hybrid_binary_quadratic_model_version2'

現在使用可能なソルバーの一覧を取得:

>>> client.solver_names
['hybrid_binary_quadratic_model_version2']

詳細な実行時間を取得:

>>> result.client_result.info
{'qpu_access_time': 47632,
 'charge_time': 2989001,
 'run_time': 2989001,
 'problem_id': '745910bb-2e3b-4f3e-90fc-eb5734c637f3'}

Leap's Hybrid CQM Sampler

D-Wave Systems の提供する量子アニーリングマシン (QPU) と古典アルゴリズムで動作するハイブリッドソルバーです。QUBO あるいは イジング変数、整数変数、実数変数の目的関数と1つ以上の制約条件で表された組合せ最適化問題を入力できます。

Tip

Fixstars Amplify のユーザ登録を行い無償のお試し API トークンを入手するか、自身の D-Wave Systems のアカウントで API トークンを入手してください。

ソルバー仕様:

クライアントクラス

amplify.LeapHybridCQMSamplerClient

実行パラメータ

amplify.DWaveClientParameters

実行結果

dimod.sampleset.SampleSet

実行時間

dimod.sampleset.SampleSet.info["run_time"]

API 方式

REST API (SAPI)

実行パラメータリファレンス

📖 Parameters Reference

バイナリ変数

イジング変数

整数変数

実数変数

目的関数

2次

2次

2次

1次

等式制約

2次

2次

2次

1次

不等式制約

2次

2次

2次

1次

クライアントクラス:

クライアントクラスの共通インターフェース に加えて以下のアトリビュートを持ちます。

アトリビュート

データ型

詳細

solver

str

使用する Leap's Hybrid BQM Sampler の名前を取得・設定します

solver_names

list[str]

設定されたトークンで仕様可能な Leap's Hybrid BQM Sampler の名前の一覧を取得します

properties

dict

使用するソルバーのプロパティを取得します (dwave.system.samplers.LeapHybridCQMSampler.properties と同じ結果が返ります)

設定例:
from amplify import LeapHybridCQMSamplerClient

client = LeapHybridCQMSamplerClient()

# API トークンを設定
client.token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# 使用するソルバーを指定
# (client.solver_names に含まれる名前のいずれかを指定)
client.solver = "hybrid_constrained_quadratic_model_version1p"

# 実行時間を 3 秒に設定
client.parameters.time_limit = 3

参考

amplify.LeapHybridCQMSamplerClient.parameters に設定可能なアトリビュートは、📖 Parameters Reference を参照してください。

次のようにして properties から取得することも可能です (出力は solver によって変わります)。

>>> client.properties["parameters"]
{'time_limit': 'Maximum requested runtime in seconds.'}
実行例:
from amplify import Model, VariableGenerator, solve

# 決定変数と目的関数を定義
g = VariableGenerator()
q = g.array("Binary", 2)
f = q[0] * q[1] + q[0] - q[1] + 1

# モデルを作成
model = Model(f)

# ソルバーを実行
result = solve(model, client)

使用するソルバーを取得 (未指定の場合は自動的に決定):

>>> client.solver
'hybrid_constrained_quadratic_model_version1p'

現在使用可能なソルバーの一覧を取得:

>>> client.solver_names
['hybrid_constrained_quadratic_model_version1p']

ソルバーのバージョンを取得:

>>> client.version
'1.12'

詳細な実行時間を取得:

>>> result.client_result.info
{'constraint_labels': [],
 'qpu_access_time': 15846,
 'charge_time': 4305380,
 'run_time': 4305380,
 'problem_id': '47db4ee7-2e60-4c99-99ae-b596914d4907'}