Fixstars Amplify

Fixstars Amplify Annealing Engine

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"
})