About Amplify SDK

Amplify SDK は株式会社フィックスターズの開発するイジングマシン向けミドルウェアライブラリです。 イジングマシンとは二値変数の二次多項式で記述される最適化問題の求解に特化したマシンです。 現在、D-Wave Systems 社による量子アニーリングマシンを始めとして、FPGA や ASIC、GPU 等で実装された様々なイジングマシンが発表されています。 Amplify SDK は、イジングマシンを用いるアプリケーションとハードウェアの中間層として、 イジングマシンの利便性の向上とアプリケーションソフトウェアの高効率な開発が可能となる様々な機能を提供します。

プロジェクト名である Amplify は、本ライブラリが Annealing Machine Platform を Amplify することで、 イジングマシンの利用可能性の拡大と、利便性向上によるアプリケーション開発の加速を支援するという意図で名付けられました。

コア機能

様々な形式に対応

Amplify SDK は下記の入力に対応しています。使用したいアニーリングマシンに応じて自動的に入力形式の変換を行います。

  • QUBO 模型 (0/1バイナリ変数)

  • イジング模型 (+/-1イジング変数)

  • QUBO 行列

  • イジング行列

  • 高次多項式 (バイナリ変数)

  • 高次多項式 (イジング変数)

  • 論理式

  • 多項式配列 (NumPy-like API)

定式化支援・数式処理

最適化問題をプログラムコード上で表現するための定式化補助機能を提供します。

  • バイナリ・イジング変数の多項式に対する演算子とそれぞれの代数法則に特化した高速数式処理

  • 総和や総乗等の数学記号に対応する関数

  • 論理式に対する論理演算子と数式処理、及びバイナリ変数の多項式への変換

  • 複数の論理演算を行う数学記号に対応する関数

制約式管理

入力変数間に働く制約の抽象化と管理を行います。ペナルティ関数は自動的に構築されます。

  • 複数変数の合計値に対する等式制約

  • 制約条件の管理や検査に対するインタフェース

  • 高度なペナルティ関数の定義

ハードウェア抽象化

抽象化されたイジングマシンへのインタフェースを提供します。

  • 全ての対応するイジングマシンで共通化されたクライアントインタフェース

  • イジングマシンごとに特殊化されたパラメータ設定プロパティ

  • 疎結合イジングマシンに対する自動最適グラフ埋め込み

  • 自動パラメータ調整 (一部のイジングマシン)

入出力処理

入力変数と出力値に対応づけるための支援を行います。

  • 入力変数の一元管理

  • 入力変数値の固定化

  • 入力変数と出力値の自動マッピング

  • 自動制約充足チェックと出力解に対するフィルタ

対応するイジングマシン

下記のイジングマシンに対応しています。

  • Fixstars Amplify Annealing Engine

  • D-Wave 2000Q / Advantage / Leap Hybrid Solver

  • Fujitsu Digital Annealer / DA2 / DA3

  • Toshiba Simulated Bifurcation Machine

  • Hitachi CMOS annealing machine

動作環境

Python
  • 3.6

  • 3.7

  • 3.8

  • 3.9

OS
  • Ubuntu 16.04 / 18.04 / 20.04

  • CentOS 7 / 8

  • Windows 10 (WSL1/2)

  • macOS Catalina 以降 / Big Sur (M1)

開発言語

  • C++17 (コア機能)

  • Python 3 (インタフェース)