QUBO++ (C++) Documentation
Getting Started
Basics
This section provides a step-by-step introduction to QUBO++. By reading the pages in order, you will learn how to define variables and expressions, model optimization problems, and solve them using QUBO++. After completing this tutorial, you should be able to use QUBO++ for most typical applications.
- Defining Variables and Creating Expressions
- Solving Expressions
- Array of Variables and Array Functions
- Solving Partitioning Problem Using Array of Variables
- Permutation Matrix and Solving Assignment Problem
- Integer Variables and Solving Simultaneous Equations
- Factorization Through HUBO Expression
- Range Constraints and Solving Integer Linear Programming
Topics
This section provides topic-wise explanations of selected features of QUBO++. Each page focuses on a specific topic and offers deeper insights into design decisions, usage patterns, and, where appropriate, internal implementations. This section is not intended to be exhaustive, but to complement the Tutorial and Reference sections by providing a deeper understanding of QUBO++.
- Data Types of Variables and Expressions
- Basic Operators and Functions
- Basic Operators and Functions for Arrays
- Multi-dimensional Integers, Variables, and Expressions
- Comparison Operators
- Expression Classes
- Evaluating Expressions
- Replace functions
- Negated Literals
- Reducing HUBO to QUBO
- Sum Functions for Multi-dimensional Arrays
- Einsum Function for Tensor Contraction
- Slice and Concat Functions
- One-Hot to Integer Conversion
- Native Integer Variables
- Nonlinear Functions and Native Constraints
- Easy Solver Usage
- Exhaustive Solver Usage
- ABS3 Solver Usage
- Search Parameters
- Performance Tips
Case Studies
This section provides examples of solving optimization, mathematical, and graph problems using QUBO++. See the Case Studies page for the full list.
Quick References
- Variables and Expressions
- Operators and Functions for Expressions
- Operations and Functions for Integer Variables and Constraints
- Solutions
External Solver Integrations
Besides the three built-in solvers, QUBO++ can hand a model to a number of external solvers, grouped by the model form each one consumes:
- QUBO/HUBO Solvers — external solvers that take the QUBO/HUBO model directly (no linearization; PyQBPP only): many heuristic samplers/annealers and exact backends.
- MILP Solvers (SCIP, HiGHS, GLPK, CBC) — exact solvers that require linearization of the QUBO into a pure MILP.
- CP Solvers (OR-Tools CP-SAT) — constraint-programming engine (PyQBPP only).
These integrations require each solver to be installed separately, and their APIs may change without notice.
Unofficial features
The following is unofficial. It may change or be removed without notice, and it may stop being published. No performance is guaranteed.
- ABS2 Solver — a GPU-only QUBO solver. On dense QUBO problems it sometimes outperforms ABS3 (distributed as a separate plugin).