--- 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**. The SDK provides the following features. (easy-to-use)= ## 🔰 Intuitive and easy to use The Amplify SDK focuses on quadratic programming, a class of combinatorial optimization problems. It provides a simple and intuitive way to build and solve mathematical optimization models. Those models use multivariate polynomials with real, integer, binary (0-1 variables), and Ising ($\pm 1$ variables) variables. The optimization models that each machine and solver targets differ by machine. The supported model properties include variable types, polynomial degree, and problem type. For example, the [Quantum Annealing Machine](https://en.wikipedia.org/wiki/Quantum_annealing) targets [QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization), an unconstrained quadratic programming problem with binary or Ising variables. MIP solvers like Gurobi handle real and integer variables. One unique feature of the Amplify SDK is that it absorbs these machine and solver differences as much as possible. It performs [**model conversions**](conversion.md) such as **variable conversions**, **degree reduction**, **constraint implementation**, and **embedding in hardware topology** **automatically**. The user does not need to know the details of the conversion process or the machine and solver specifications. The SDK provides a wealth of functionality to treat the QUBO solver as a general-purpose mathematical optimization solver. (blazing-fast)= ## 🚅 Fast processing speed In quadratic programming (or higher order), the number of polynomial terms can grow as a power of the number of variables. Recent Ising machines expanded the scale of solvable problems to 100,000 variables. A problem of that size can require several gigabytes of data. Without speed and memory efficiency, the SDK cannot handle problems at that scale. Compared to similar formulation software, the Amplify SDK processes problems **very fast** and with **low memory use**. See [](benchmark.md) for benchmark results. The core functionalities of the SDK, such as polynomial formulations, model conversions, and building data to send to the machine, use highly tuned efficient algorithms implemented in C++. The SDK also provides array programming capabilities for polynomial arrays that are compatible with [NumPy](https://numpy.org/doc/stable/index.html). These features enable high-speed mathematical processing. (multiple-solvers)= ## 🔱 Multiple solver support Amplify supports the following machines and solvers. Support for more machines will grow in the future. Requests for additional support and collaboration with solver developers are welcome. Please contact us. * [Quantum Annealing Machine](https://en.wikipedia.org/wiki/Quantum_annealing) * [D-Wave](https://www.dwavesys.com/) * D-Wave Advantage2 * Leap's Hybrid BQM Solver * Leap's Hybrid CQM Solver * [Future Release] Quantum Monte Carlo Software Simulator (included) * Ising Machine / Annealing Machine * [Fixstars 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 Computers](./quantum/index.md) * [AQT](https://www.aqt.eu/) * [IBM Quantum](https://quantum.cloud.ibm.com/) * [IonQ](https://ionq.com/) * [IQM](https://www.meetiqm.com/) * [Rigetti](https://www.rigetti.com/) * [QUDORA](https://qudora.com/) * [OQTOPUS](https://oqtopus-cloud.readthedocs.io/) * [Amazon Braket Simulator](https://aws.amazon.com/braket/) * [Qiskit Aer Simulator](https://qiskit.github.io/qiskit-aer/stubs/qiskit_aer.AerSimulator.html) * [Qulacs Simulator](http://docs.qulacs.org/) * MIP Solver * [Gurobi](https://www.gurobi.com/) (wide-range-users)= ## 🧑‍💻️ For broad users The Amplify SDK targets a wide range of users, from application developers to academic researchers studying formulations and hardware. Using the Amplify SDK as middleware to solve combinatorial optimization problems allows quick implementation. The high-level **model conversion functions** (variable conversion, degree reduction, constraint implementation, and so on) follow the latest research. The documentation describes all processing details and algorithms. The SDK also lets users modify the algorithms and parameters of the conversion process, check the results and processing time of model conversions, and debug through a low-level interface. Users who formulate combinatorial optimization problems or perform academic research on machines can use these capabilities to develop new formulation algorithms or investigate solver performance. ## 🐲 Ever-evolving Fixstars Amplify The first version of the Amplify SDK arrived in July 2020. The SDK let users access [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 build mathematical models based on [QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization). As development continued, the SDK expanded the machines it supports and gained new functionality through machine updates. These changes required support for more flexible formulations that go beyond the [QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) framework. Adding support for Gurobi, a well-known mathematical optimization solver, and the need to handle integer and real variables even in [QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) required the SDK to support more general mathematical programming models. The new version of the Amplify SDK released in 2024 (v1 series) reviews and redesigns all specifications. It allows the construction of more general mathematical programming models. The SDK still supports [QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) formulation as before. With variable types and constraints beyond the [QUBO](https://en.wikipedia.org/wiki/Quadratic_unconstrained_binary_optimization) framework, the SDK automatically optimizes model conversion and parameter tuning to maximize performance according to the machine and solver. This makes the SDK suitable for a broader range of users and problems.