About Amplify

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

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

コア機能

入力可能形式の拡充

ミドルウェアへの入力が可能な最適化問題として、マシンの対応に依らず下記の入力形式・模型を扱うことが可能になります。

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

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

  • QUBO 行列

  • イジング行列

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

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

  • 論理式 (SAT)

定式化支援・数式処理

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

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

  • 総和や総乗等の数学記号に対応する関数 (\(\sum_{i \in V}, \sum_{ \left(i, j \right) \in E}, \prod_{i}\) )

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

  • 複数の論理変数に対する論理積・論理和・排他的論理和を行う関数

制約式管理

入力変数間に働く制約の抽象化と管理を行います。

  • 一般化されたペナルティ関数

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

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

ハードウェア抽象化

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

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

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

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

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

入出力処理

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

  • 入力変数の一元管理

  • 入力変数値の固定化

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

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

対応マシン

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

  • Fixstars GPU annealer

  • D-Wave 2000Q / Leap Hybrid Solver

  • Fujitsu Digital Annealer / DA2

  • Toshiba Simulated Bifurcation Machine

  • Hitachi CMOS annealing machine

動作環境

Python
  • 3.6

  • 3.7

  • 3.8

OS
  • Ubuntu 16.04 / 18.04 / 20.04

  • CentOS 7 / 8

  • Windows 10 (WSL1/2)

  • macOS Catalina

開発言語

  • C++17 (コア機能)

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