Skip to main contentIBM Quantum Documentation Preview
This is a preview build of IBM Quantum® documentation. Refer to quantum.cloud.ibm.com/docs for the official documentation.

Optimization Solver: A Qiskit Function by Q-CTRL Fire Opal

See the API reference

Note

Qiskit Functions are an experimental feature available only to IBM Quantum® Premium Plan, Flex Plan, and On-Prem (via IBM Quantum Platform API) Plan users. They are in preview release status and subject to change.


Overview

With the Fire Opal Optimization Solver, you can solve utility-scale optimization problems on quantum hardware without requiring quantum expertise. Simply input the high-level problem definition, and the Solver takes care of the rest. The entire workflow is noise-aware and leverages Fire Opal's Performance Management under the hood. The Solver consistently delivers accurate solutions to classically challenging problems, even at full-device scale on the largest IBM® QPUs.

The Solver is flexible and can be used to solve combinatorial optimization problems defined as objective functions or arbitrary graphs. Problems do not have to be mapped to device topology. Both unconstrained and constrained problems are solvable, with constraints enforced as hard Hamming-weight-1 constraints rather than penalty terms. The examples included in this guide demonstrate how to solve an unconstrained and a constrained utility-scale optimization problem using different Solver input types. The first example involves a max-cut problem defined on a 156-node, 3-Regular graph, while the second example tackles a 50-node graph partitioning problem defined by a cost function.

To get access to the Optimization Solver, contact Q-CTRL.


Function description

The Solver fully optimizes and automates the entire algorithm, from error suppression at the hardware level to efficient problem mapping and closed-loop classical optimization. Behind the scenes, the Solver's pipeline reduces errors at every stage, enabling the enhanced performance required to meaningfully scale. The underlying workflow is inspired by the Quantum Approximate Optimization Algorithm (QAOA), which is a hybrid quantum-classical algorithm. For a detailed summary of the full Optimization Solver workflow, refer to the published manuscript.

Visualization of the Optimization Solver workflow

To solve a generic problem with the Optimization Solver:

  1. Define your problem as an objective function, a graph, or SparsePauliOp spin chain.
  2. Connect to the function through the Qiskit Functions Catalog.
  3. Run the problem with the Solver and retrieve results.

Accepted problem formats

  • Polynomial expression representation of an objective function. Ideally created in Python with an existing SymPy Poly object and formatted into a string using sympy.srepr.
  • Graph representation of a specific problem type. The graph should be created using the networkx library in Python. It should then converted to a string by using the networkx function nx.readwrite.json_graph.adjacency_data.
  • Spin chain representation of a specific problem. The spin chain should be represented as a SparsePauliOp object; see the documentation for more details.
Does this function support all IBM backends?

If you want to use a backend that this function does not currently support, reach out to Q-CTRL to add support.


Benchmarks

Disclaimer

Performance can depend on both the problem instance and subsequent processing steps. In some cases, classical samples and quantum-generated samples might achieve similar final solution quality after equivalent post-processing. Evaluation should therefore consider the complete optimization workflow.

Published benchmarking results show that the Solver successfully solves problems with over 120 qubits, even outperforming previously published results on quantum annealing and trapped-ion devices. The following benchmark metrics provide a rough indication of the accuracy and scaling of problem types based on a few examples. Actual metrics may differ based on various problem features, such as the number of terms in the objective function (density) and their locality, number of variables, and polynomial order.

The "Number of qubits" indicated is not a hard limitation but represents rough thresholds where you can expect extremely consistent solution accuracy. Larger problem sizes have been successfully solved, and testing beyond these limits is encouraged.

Arbitrary qubit connectivity is supported across all problem types.

Problem type
Number of qubits
Example
Accuracy
Total time (s)
Runtime usage (s)
Number of iterations
Sparsely-connected quadratic problems1563-regular max-cut100%176429316
Higher-order binary optimization156Ising spin-glass model100%146127216
Densely-connected quadratic problems50Fully-connected max-cut100%175826812
Constrained problem with hard constraints50Weighted graph partitioning with 8% edge density100%107421510

Get started

To learn how to load the function and run it, see Get started with Q-CTRL Optimization Solver.


Get support

For any questions or issues, reach out to Q-CTRL.


Next steps