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
- Native Constraints
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
- 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 — solvers that take the QUBO/HUBO model directly (no linearization). From C++ this is the Gurobi Optimizer; PyQBPP adds many heuristic samplers/annealers and other 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.