--- hide-toc: true --- # 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. (easy-to-use)= ## 🔰 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](https://en.wikipedia.org/wiki/Quantum_annealing) can be used for [QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization), 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. (blazing-fast)= ## 🚅 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 [](benchmark.md) 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](https://numpy.org/doc/stable/index.html) for polynomial arrays. These features allow high-speed mathematical processing. (multiple-solvers)= ## 🔱 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. * [Quantum Annealing Machine](https://en.wikipedia.org/wiki/Quantum_annealing) * [D-Wave](https://www.dwavesys.com/) * D-Wave Advantage * Leap's Hybrid BQM Solver * Leap's Hybrid CQM Solver * [Future Release] Quantum Monte Carlo Software Simulator (included) * Ising Maschine / Annealing Machine * [Fixstsr Amplify](https://amplify.fixstars.com/en/) * [Amplify Annealing Engine](https://amplify.fixstars.com/en/engine/) * [Fujitsu Digital Annealer](https://www.fujitsu.com/global/services/business-services/digital-annealer/) * Fujitsu DA4 Solver * Fujitsu DA3c Solver * [TOSHIBA SQBM+](https://www.global.toshiba/ww/products-solutions/ai-iot/sbm.html) * TOSHIBA SQBM+ V2 * Quantum Machine * [IBM-Quantum](https://www.ibm.com/quantum-computing/) (Qiskit) * [Qulacs](https://github.com/qulacs/qulacs) * MIP Solver * [Gurobi](https://www.gurobi.com/) (wide-range-users)= ## 🧑‍💻️ 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](https://en.wikipedia.org/wiki/Quantum_annealing) such as D-Wave and cloud services for the [Ising machine](https://en.wikipedia.org/wiki/Quantum_annealing) inspired by them and to build mathematical models based on [QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) 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](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) framework. Adding support for Gurobi, a well-known mathematical optimization solver, and the desire to handle integer and real variables even in [QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) 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](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) as before. Still, even with variable types and constraints beyond the [QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) 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.