Amplify SDK Features

The Amplify SDK aims to formulate combinatorial optimization problems in a simple and intuitive way and solve them using a variety of machines and solvers. To this end, the Amplify SDK provides the following features.

🔰 Intuitive and easy to use

The Amplify SDK focuses primarily on quadratic programming, a class of combinatorial optimization problems. It provides a simple and intuitive way to build and solve mathematical optimization models described by multivariate polynomials with real, integer, binary (0-1 variables), and Ising (\(\pm 1\) variables) variables.

On the other hand, the optimization models (the types of variables, the degree of polynomials, and the types of problems) targeted by each machine and solver vary from machine to machine. For example, the Quantum Annealing Machine can be used for QUBO, an unconstrained quadratic programming problem with binary (or Ising) variables. MIP solvers like Gurobi can handle real and integer variables.

One of the unique features of the Amplify SDK is that it absorbs these machine and solver differences as much as possible and performs model conversions such as variable conversions, degree reduction, constraint implementation, embedding in hardware topology, etc., automatically so that you can intuitively formulate a combinatorial optimization problem. The user does not need to know the details of the model conversion process or the machine and solver specifications. In particular, a wealth of functionality has been implemented to treat the QUBO solver as a general-purpose mathematical optimization solver.

🚅 Fast processing speed

In quadratic programming problems (or higher order), the number of polynomial terms can grow as a power of the number of variables. On the other hand, recent Ising machines have expanded the scale of solvable problems to 100,000 variables. Such a large problem can require several gigabytes of data, making it essential to increase the speed and memory efficiency of mathematical processing.

Compared to similar formulation software, the Amplify SDK is designed to be very fast and memory efficient. See Formulation Benchmarks for benchmark results. This is because the core functionalities of the Amplify SDK, such as polynomial formulations, model conversions, and building data to send to the machine, are implemented based on highly tuned efficient algorithms in C++. In particular, the Amplify SDK provides array programming capabilities compatible with NumPy for polynomial arrays. These features allow high-speed mathematical processing.

🔱 Multiple solver support

Amplify supports the following machines and solvers. More machines are expected to be added in the future. We welcome requests for additional support and collaboration with solver developers, so please get in touch with us.

🧑‍💻️ For broad users

The Amplify SDK is designed for a wide range of users engaged in combinatorial optimization, from application developers to academic researchers studying formulations and hardware. Using the Amplify SDK as middleware to solve combinatorial optimization problems allows quick implementation of the problem.

In addition, the high-level model conversion functions (variable conversion, degree reduction, constraint implementation, etc.) are based on state-of-the-art knowledge, and all processing details and algorithms are described in the documentation. In addition, the software is designed to allow users to modify the algorithms and parameters of the conversion process, check the results and processing time of model conversions, and debug using a low-level interface. Thus, users formulating combinatorial optimization problems or performing academic research on machines can efficiently develop their new formulation algorithms or investigate solver performance by taking advantage of the capabilities provided by the Amplify SDK.

🐲 Ever-evolving Fixstars Amplify

The first version of the Amplify SDK was released in July 2020. Initially, the Amplify SDK was designed as software to conveniently use the quantum annealing machines such as D-Wave and cloud services for the Ising machine inspired by them and to build mathematical models based on QUBO presumptions.

Throughout its development, expanding the machines supported by the Amplify SDK and expanding functionality through machine updates has included support for more flexible formulations that are not necessarily bound by the QUBO framework. Adding support for Gurobi, a well-known mathematical optimization solver, and the desire to handle integer and real variables even in QUBO has required the Amplify SDK to support more general mathematical programming models.

In the new version of the Amplify SDK released in 2024 (v1 series), all specifications have been reviewed and redesigned to allow the construction of more general mathematical programming models. Of course, you can still use the Amplify SDK to formulate QUBO as before. Still, even with variable types and constraints beyond the QUBO framework, the model conversion and parameter tuning are automatically optimized to maximize performance according to the search capabilities of the machine and solver. This makes the Amplify SDK suitable for a broader range of users and problems.