Fixstars Amplify

Fixstars Amplify Annealing Engine v1

Fixstars Amplify Annealing Engine (以下 Amplify AE) は Fixstars Amplify 社の提供するソルバーです。シミュレーテッドアニーリングをベースとしたヒューリスティックアルゴリズムが GPU 上に実装されており、GPU の持つ並列計算技術を活用して解を高速・高精度に探索します。

Tip

ユーザ登録を行うと無償の API トークンを入手できます。

ソルバー仕様:
  • solver プロパティに Constraint が設定されている場合 (デフォルト):

バイナリ変数

イジング変数

整数変数

実数変数

目的関数

4次

-

-

-

等式制約

4次

-

-

-

不等式制約

4次

-

-

-

  • solver プロパティに Pubo が設定されている場合:

バイナリ変数

イジング変数

整数変数

実数変数

目的関数

4次

-

-

-

等式制約

4次*

-

-

-

不等式制約

4次*

-

-

-

*: ペナルティ関数を与える必要があります。

  • solver プロパティに Qubo が設定されている場合:

バイナリ変数

イジング変数

整数変数

実数変数

目的関数

2次

-

-

-

等式制約

2次*

-

-

-

不等式制約

2次*

-

-

-

*: ペナルティ関数を与える必要があります。

クライアントクラス:

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

アトリビュート

データ型

詳細

solver

Solver

Amplify AE の求解モードを設定します。デフォルトは Constraint です。Pubo または Qubo に設定することで、それぞれ PUBO / QUBO ソルバーを模した求解が可能です。詳細は Amplify AE のドキュメントを参照してください。

compression

bool

リクエストデータを圧縮して送信します。デフォルトは True です。False に設定することでリクエストデータの圧縮時間を削減できますが、通信時間が増加する可能性があります。

設定例:

以下に設定例を示します。パラメータの詳細は Amplify AE のドキュメント を参照してください。

from amplify import AmplifyAEClient
from datetime import timedelta

client = AmplifyAEClient()

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

# 求解モードの指定
client.solver = "Constraint" # 一般向け (デフォルト)
# client.solver = "Pubo"  # PUBO シミュレーション用途
# client.solver = "Qubo"  # QUBO シミュレーション用途

# 実行時間を 1 秒に設定
client.parameters.time_limit_ms = timedelta(milliseconds=1000)

# 使用する GPU 数を 1 に設定
client.parameters.num_gpus = 1

# 探索中に得られた全ての重複解を取得
client.parameters.duplicate_solutions = True
実行例:
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)

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

>>> client.version
'1.0.0+V100'

実行時間を取得:

# GPU のアニーリング時間を取得
>>> print(result.client_result.execution_time_ms)
0:00:01.008328
# キュー待ち時間を取得
>>> print(result.client_result.queue_time_ms)
0:00:00.000108
# リクエストを受信した時刻を取得
>>> print(result.client_result.submitted_at)
2025-08-25 17:37:38.553593+09:00
# リクエストの処理を開始した時刻を取得
>>> print(result.client_result.started_at)
2025-08-25 17:37:38.553701+09:00

求解情報を取得:

# 求解に使用した GPU 数
>>> result.client_result.num_gpus
1
# 実行結果を返却するまでに試行した全 GPU の合計フリップ数
>>> result.client_result.num_flips
1567467520
# 実行結果を返却するまでに得られた解の数 (サンプリング数)
>>> result.client_result.num_samplings
58

[Deprecated] Fixstars Amplify Annealing Engine v0

Deprecated

Amplify AE v0 は非推奨となりました。これに伴い、amplify.FixstarsClient も同様に非推奨となりました。
新規の利用では Amplify AE v1 及び amplify.AmplifyAEClient を使用してください。

Fixstars Amplify の提供する QUBO ソルバーです。GPU で実装された Simulated Annealing をベースとしたアルゴリズムが用いられています。

Tip

ユーザ登録を行うと無償の API トークンを入手できます。

ソルバー仕様:

バイナリ変数

イジング変数

整数変数

実数変数

目的関数

2次

-

-

-

等式制約

2次*

-

-

-

不等式制約

2次*

-

-

-

*: ペナルティ関数を与える必要があります。

クライアントクラス:

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

アトリビュート

データ型

詳細

compression

bool

リクエストデータを圧縮して送信します。デフォルトは True です。False に設定することでリクエストデータの圧縮時間を削減できますが、通信時間が増加する可能性があります。

設定例:
from amplify import FixstarsClient
from datetime import timedelta

client = FixstarsClient()

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

# 実行時間を 1 秒に設定
client.parameters.timeout = timedelta(milliseconds=1000)

# 使用する GPU 数を 1 に設定
client.parameters.num_gpus = 1

# 探索中に得られた全ての解を取得
client.parameters.outputs.num_outputs = 0
実行例:
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.version
'v0.8.5-V100'

詳細な実行時間を取得:

>>> result.client_result.execution_time
FixstarsClient.Result.ExecutionTime({
"annealing_time": 9988.965504,
"queue_time": 0.047615,
"cpu_time": 0.19356399999999996,
"time_stamps": [
    8.764683
]
})

実行時のパラメータ情報を取得:

>>> result.client_result.execution_parameters
FixstarsClient.Result.ExecutionParameters({
"num_gpus": 1,
"timeout": 10000,
"num_iterations": 585,
"penalty_calibration": false,
"penalty_multipliers": [],
"version": "v0.8.7-V100"
})