Fixstars Amplify¶
Fixstars Amplify Annealing Engine v1¶
Fixstars Amplify Annealing Engine (以下 Amplify AE) は Fixstars Amplify 社の提供するソルバーです。シミュレーテッドアニーリングをベースとしたヒューリスティックアルゴリズムが GPU 上に実装されており、GPU の持つ並列計算技術を活用して解を高速・高精度に探索します。
Tip
ユーザ登録を行うと無償の API トークンを入手できます。
- ソルバー仕様:
クライアントクラス
API 方式
REST API (JSON)
リファレンス
solverプロパティにConstraintが設定されている場合 (デフォルト):
バイナリ変数
イジング変数
整数変数
実数変数
目的関数
4次
-
-
-
等式制約
4次
-
-
-
不等式制約
4次
-
-
-
バイナリ変数
イジング変数
整数変数
実数変数
目的関数
4次
-
-
-
等式制約
4次*
-
-
-
不等式制約
4次*
-
-
-
*: ペナルティ関数を与える必要があります。
バイナリ変数
イジング変数
整数変数
実数変数
目的関数
2次
-
-
-
等式制約
2次*
-
-
-
不等式制約
2次*
-
-
-
*: ペナルティ関数を与える必要があります。
- クライアントクラス:
クライアントクラスの共通インターフェース に加えて以下のアトリビュートを持ちます。
- 設定例:
以下に設定例を示します。パラメータの詳細は 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 トークンを入手できます。
- ソルバー仕様:
クライアントクラス
API 方式
REST API (JSON)
API リファレンス
バイナリ変数
イジング変数
整数変数
実数変数
目的関数
2次
-
-
-
等式制約
2次*
-
-
-
不等式制約
2次*
-
-
-
*: ペナルティ関数を与える必要があります。
- クライアントクラス:
クライアントクラスの共通インターフェース に加えて以下のアトリビュートを持ちます。
- 設定例:
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" })