First time studying this topic?

Launch the interactive walkthrough to discover each component, including the 3D Q-Sphere Lab & Python in Colab.

Back to Quantum-Enhanced AI
Topic 9.3

Quantum Optimization in AI

Master combinatorial and continuous quantum optimization algorithms including QAOA and Quantum Annealing for AI training.

Learning Objectives

  • βœ“Formulate machine learning loss functions as Quadratic Unconstrained Binary Optimization (QUBO) problems
  • βœ“Understand the Quantum Approximate Optimization Algorithm (QAOA) architecture
  • βœ“Compare quantum annealing (D-Wave) with gate-based variational quantum optimization
  • βœ“Apply quantum optimization to AI feature selection, clustering, and hyperparameter tuning

πŸ“–Let's Begin with a Story

Training machine learning models often boils down to optimization: finding the best weights, the best hyperparameters, or the optimal subset of features among billions of combinations. Classical optimizers easily get trapped in local valleys. Quantum optimization uses quantum tunneling to pass straight through energy barriers rather than climbing over them.

Why Should You Learn Quantum Optimization in AI?

🎯 Practical & Engineering Stakes
Optimization is the core mathematical engine of machine learning. When problems exhibit non-convex landscapes with astronomical combinatorial complexity, quantum optimization provides heuristics that outperform classical simulated annealing and genetic algorithms.

What Is It?

Simple Explanation

Imagine rolling a ball across a bumpy landscape looking for the deepest pit. A classical marble has to roll up and over tall hills, and often gets stuck in a shallow ditch. A quantum marble can perform "quantum tunneling"β€”ghosting directly through the hill to reach the deepest cavern on the other side.

Technical Explanation

Quantum optimization maps combinatorial discrete problems to Ising spin glass Hamiltonians HC=βˆ‘ihiZi+βˆ‘i<jJijZiZjH_C = \sum_i h_i Z_i + \sum_{i<j} J_{ij} Z_i Z_j. Gate-based processors use the Quantum Approximate Optimization Algorithm (QAOA) with alternating cost and mixer unitaries eβˆ’iΞ³HCeβˆ’iΞ²HMe^{-i\gamma H_C} e^{-i\beta H_M}, while quantum annealers physically evolve a transverse-field driver Hamiltonian into the problem Hamiltonian via adiabatic theorem.

πŸ“š Key Terms

QUBOQUBO

Simple: A standard math format for writing optimization problems using 0s and 1s.
Technical: Quadratic Unconstrained Binary Optimization: minimizing f(x)=xTQxf(x) = x^T Q x where x∈{0,1}nx \in \{0, 1\}^n and QQ is an nΓ—nn \times n real matrix.

QAOAQAOA

Simple: A quantum algorithm that searches for near-optimal solutions to hard puzzle problems.
Technical: Quantum Approximate Optimization Algorithm: a variational hybrid algorithm using pp layers of parameterized cost and mixer Hamiltonians to approximate combinatorial ground states.

Quantum Tunneling

Simple: A quantum particle passing through a physical barrier it classically could not climb.
Technical: The non-zero probability of a quantum state transitioning through a potential energy barrier higher than its kinetic energy.

Q-Sphere Lab: Quantum Optimization in AI

IBM Q-Sphere Model

Interactive 3D state vector exploration, unitary transformation gates, and Born rule collapse for Topic 9.3

Azimuth: 45Β°Elevation: 25Β°
+Z |0⟩-Z |1⟩+X |+⟩+Y |+i⟩01|ψ⟩
Q-Sphere Phase Color:
0 Ο€/2 Ο€ 3Ο€/2

Quantum Statevector

dim(H) = 2
|ψ⟩ = (1.000 + 0.000i)|0⟩
     + (0.000 + 0.000i)|1⟩
Polar Angle (ΞΈ):0.0Β° (0.000Ο€ rad)
Phase Angle (Ο•):0.0Β° (0.000Ο€ rad)

Born Rule Probabilities: P(x) = |⟨x|ψ⟩|²Σ P = 1.00

P(|0⟩) = |α|²100.0%
P(|1⟩) = |β|²0.0%
Quantum Measurement

Apply Single-Qubit Unitary Gates

Presets:
Continuous Polar Angle θ (0° = |0⟩, 180° = |1⟩):0.0°
Continuous Phase Angle Ο• (0Β° to 360Β°):0.0Β°
Recent Operations Log:
#1Initial state: |0⟩

πŸ“ Mathematical Foundation

LaTeX KaTeX
Fp(Ξ³,Ξ²)=⟨ψp(Ξ³,Ξ²)∣HC∣ψp(Ξ³,Ξ²)⟩,∣ψp⟩=∏l=1peβˆ’iΞ²lHMeβˆ’iΞ³lHC∣+βŸ©βŠ—nF_p(\boldsymbol{\gamma}, \boldsymbol{\beta}) = \langle \psi_p(\boldsymbol{\gamma}, \boldsymbol{\beta}) | H_C | \psi_p(\boldsymbol{\gamma}, \boldsymbol{\beta}) \rangle, \quad |\psi_p\rangle = \prod_{l=1}^p e^{-i \beta_l H_M} e^{-i \gamma_l H_C} |+\rangle^{\otimes n}

What does it mean?

Quantum Approximate Optimization Algorithm (QAOA) Expectation: Formulates combinatorial optimization problems (e.g. Max-Cut, portfolio selection, graph coloring) as finding the ground state of an Ising cost Hamiltonian H_C. The algorithm alternates between applying the problem unitary e^{-i gamma_l H_C} (which encodes problem constraints into relative phases) and the mixer unitary e^{-i beta_l H_M} (which drives quantum tunneling transitions) for p layers.

Understanding the Symbols

Symbol / TermMeaningBeginner Interpretation
HCH_CProblem Cost HamiltonianDiagonal Ising operator encoding the combinatorial cost to be minimized
HMH_MTransverse Mixer HamiltonianSum of Pauli-X operators driving quantum tunneling transitions between states
Ξ³,Ξ²\boldsymbol{\gamma}, \boldsymbol{\beta}Variational angle parametersParameters tuned by classical optimizer to minimize energy expectation
ppQAOA circuit depth / layersNumber of alternating cost-mixer layers; higher pp approaches optimal solution

πŸ“Š Numerical Example

Solving a 2-node Max-Cut problem with cost Hamiltonian H_C = 0.5*(I - Z0 Z1) using p = 1 QAOA layer with gamma = pi/4 and beta = pi/8:

Step 1: Initial Superposition State ∣+⟩|+\rangleβŠ—2: ∣ψ0⟩|\psi0\rangle = (∣00⟩|00\rangle + ∣01⟩|01\rangle + ∣10⟩|10\rangle + ∣11⟩|11\rangle) / 2 Step 2: Cost Unitary Evolution e^{-i Ξ³ H_C}: Eigenvalues of H_C: β€’ For ∣00⟩|00\rangle and ∣11⟩|11\rangle (uncut edges): H_C = 0 β†’ phase = e^0 = 1 β€’ For ∣01⟩|01\rangle and ∣10⟩|10\rangle (cut edges): H_C = 1 β†’ phase = e^{-i Ο€/4} State becomes: ∣ψ1⟩|\psi1\rangle = 0.5∣00⟩|00\rangle + 0.5 e^{-i Ο€/4}∣01⟩|01\rangle + 0.5 e^{-i Ο€/4}∣10⟩|10\rangle + 0.5∣11⟩|11\rangle Step 3: Mixer Unitary Evolution e^{-i Ξ² H_M} with Ξ² = Ο€/8: Rotates all qubits with Rx(2Ξ²) = Rx(Ο€/4): Constructive interference amplifies the cut states ∣01⟩|01\rangle and ∣10⟩|10\rangle. Step 4: Expectation Value Evaluation: ⟨H_C⟩ = 0.5 Γ— (1 + sin(2Ξ²) sin(2Ξ³)) = 0.5 Γ— (1 + sin(Ο€/4) sin(Ο€/2)) = 0.5 Γ— (1 + 0.7071 Γ— 1.0) = 0.5 Γ— 1.7071 = 0.8536 (Approximation ratio = 85.4% of maximum cut 1.0!)

Result: QAOA achieves an 85.4% approximation ratio for the optimal cut in just 1 layer, favoring solutions ∣01⟩|01\rangle and ∣10⟩|10\rangle.

βš™οΈ How Does It Work?

1

Problem Mapping to QUBO/Ising

Encode constraints and objective functions (e.g. feature selection penalties) into matrix Q or Ising coefficients.

2

Equal Superposition Initialization

Apply Hadamard gates across all qubits to initialize the search state uniformly.

3

Alternating Unitary Evolution

Apply cost Hamiltonian $e^{-i\gamma H_C}$ to encode phase penalties, followed by mixer Hamiltonian $e^{-i\beta H_M}$ to induce quantum transitions.

4

Classical Parameter Optimization

Measure bitstrings, compute energy expectation, and update angles $(\gamma, \beta)$ using classical gradient-free optimizers.

🌍 Where Is It Used?

Optimal Feature Selection in Credit Risk

Problem: Selecting the best 20 features out of 500 financial indicators involves $10^{35}$ combinations.

Solution: Formulating correlation maximization and multicollinearity penalties as a QUBO solved on quantum hardware in seconds.

Autonomous Fleet Route Planning

Problem: Traveling Salesperson and Vehicle Routing problems scale factorially with delivery destinations.

Solution: Quantum annealing schedules find near-optimal delivery paths avoiding urban congestion bottlenecks.

🎯 Try It Yourself

What are the two alternating Hamiltonians applied in each layer of QAOA?

Interactive activity component

🐍 Python Hands-On: Quantum Portfolio Optimization with SamplingVQE in Qiskit Finance

Formulate a 4-asset portfolio selection problem as a Quadratic Program and solve for optimal asset allocation using SamplingVQE and TwoLocal ansatz.

Open Colab

1Install Required Packages

For Google Colab or Jupyter notebooks, run this shell command to install the required dependencies:

Terminal / Notebook Install Commandbash
!pip install qiskit qiskit-finance qiskit-optimization qiskit-algorithms numpy pandas matplotlib
Packages:
qiskitqiskit-financeqiskit-optimizationqiskit-algorithmsnumpypandasmatplotlib

2Import Libraries

Import Statementspython
1import numpy as np
2import pandas as pd
3import matplotlib.pyplot as plt
4from datetime import datetime
5from qiskit_finance.data_providers import RandomDataProvider
6from qiskit_finance.applications.optimization import PortfolioOptimization
7from qiskit_optimization.algorithms import MinimumEigenOptimizer
8from qiskit.primitives import Sampler
9from qiskit.circuit.library import TwoLocal
10from qiskit_algorithms import SamplingVQE
11from qiskit_algorithms.optimizers import COBYLA

import numpy as np β†’ NumPy array processing

import pandas as pd β†’ Pandas dataframes

import matplotlib.pyplot as plt β†’ Matplotlib for visualization

from datetime import datetime β†’ Date time helper

from qiskit_finance.data_providers import RandomDataProvider β†’ Financial market data provider

from qiskit_finance.applications.optimization import PortfolioOptimization β†’ Portfolio optimization problem generator

from qiskit_optimization.algorithms import MinimumEigenOptimizer β†’ Optimization wrapper for eigensolvers

from qiskit.primitives import Sampler β†’ Qiskit Sampler primitive

from qiskit.circuit.library import TwoLocal β†’ Hardware-efficient TwoLocal ansatz

from qiskit_algorithms import SamplingVQE β†’ Sampling Variational Quantum Eigensolver

from qiskit_algorithms.optimizers import COBYLA β†’ COBYLA classical optimizer

3Demonstration Code & Logic

Python Execution Codepython
1# Step 1: Generate Synthetic Financial Market Data for 4 Assets
2num_assets = 4
3start = datetime(2022, 1, 1)
4end = datetime(2023, 1, 1)
5data_provider = RandomDataProvider(tickers=['AAPL', 'GOOGL', 'MSFT', 'TSLA'], start=start, end=end, seed=42)
6data_provider.run()
7stock_data = data_provider.get_covariance_matrix()
8expected_returns = np.mean(stock_data, axis=0)
9
10# Step 2: Define Portfolio Optimization Problem (Budget = 2 assets)
11risk_factor = 0.5 # Risk tolerance trade-off
12budget = 2 # Select best 2 out of 4 assets
13portfolio = PortfolioOptimization(expected_returns=expected_returns, covariances=stock_data, risk_factor=risk_factor, budget=budget)
14quadratic_program = portfolio.to_quadratic_program()
15
16# Step 3: Solve Using SamplingVQE and TwoLocal Ansatz
17ansatz = TwoLocal(rotation_blocks=['ry', 'rz'], entanglement_blocks='cz')
18optimizer = COBYLA(maxiter=100)
19sampler = Sampler()
20sampling_vqe = SamplingVQE(sampler=sampler, ansatz=ansatz, optimizer=optimizer)
21qaoa = MinimumEigenOptimizer(sampling_vqe)
22result = qaoa.solve(quadratic_program)
23
24# Step 4: Interpret Results
25optimal_portfolio = portfolio.interpret(result)
26selected_assets = np.where(np.atleast_1d(optimal_portfolio) == 1)[0]
27tickers = ['AAPL', 'GOOGL', 'MSFT', 'TSLA']
28selected_tickers = [tickers[i] for i in selected_assets]
29print("Optimal Portfolio Allocation:", selected_tickers)
Step-by-Step Code Breakdown:

# Step 1: Generate Synthetic Financial Market Data for 4 Assets

Data generation

num_assets = 4

4 stock assets

start = datetime(2022, 1, 1)

Start date

end = datetime(2023, 1, 1)

End date

data_provider = RandomDataProvider(tickers=['AAPL', 'GOOGL', 'MSFT', 'TSLA'], start=start, end=end, seed=42)

Data provider

data_provider.run()

Run simulation

stock_data = data_provider.get_covariance_matrix()

Covariance matrix

expected_returns = np.mean(stock_data, axis=0)

Mean expected returns

# Step 2: Define Portfolio Optimization Problem (Budget = 2 assets)

Problem definition

risk_factor = 0.5 # Risk tolerance trade-off

Risk penalty

budget = 2 # Select best 2 out of 4 assets

Asset budget

portfolio = PortfolioOptimization(expected_returns=expected_returns, covariances=stock_data, risk_factor=risk_factor, budget=budget)

Portfolio formulation

quadratic_program = portfolio.to_quadratic_program()

Convert to Quadratic Program

# Step 3: Solve Using SamplingVQE and TwoLocal Ansatz

Quantum optimization

ansatz = TwoLocal(rotation_blocks=['ry', 'rz'], entanglement_blocks='cz')

Variational ansatz

optimizer = COBYLA(maxiter=100)

Classical optimizer

sampler = Sampler()

Sampler primitive

sampling_vqe = SamplingVQE(sampler=sampler, ansatz=ansatz, optimizer=optimizer)

SamplingVQE

qaoa = MinimumEigenOptimizer(sampling_vqe)

MinimumEigenOptimizer

result = qaoa.solve(quadratic_program)

Solve problem

# Step 4: Interpret Results

Result interpretation

optimal_portfolio = portfolio.interpret(result)

Extract binary selection

selected_assets = np.where(np.atleast_1d(optimal_portfolio) == 1)[0]

Find selected asset indices

tickers = ['AAPL', 'GOOGL', 'MSFT', 'TSLA']

Stock names

selected_tickers = [tickers[i] for i in selected_assets]

Selected tickers

print("Optimal Portfolio Allocation:", selected_tickers)

Print selected stocks

πŸ“‹ Complete Script (All-in-One)

Click "Copy for Colab", open Google Colab, paste into a single cell, and run.

Google Colab Notebook Scriptpython
1# =========================================================
2# Quantum Portfolio Optimization with SamplingVQE in Qiskit Finance
3# Prepared for Google Colab (Run with Shift + Enter)
4# =========================================================
5
6# Step 1: Install required packages
7!pip install qiskit qiskit-finance qiskit-optimization qiskit-algorithms numpy pandas matplotlib
8
9# Step 2: Import libraries
10import numpy as np
11import pandas as pd
12import matplotlib.pyplot as plt
13from datetime import datetime
14from qiskit_finance.data_providers import RandomDataProvider
15from qiskit_finance.applications.optimization import PortfolioOptimization
16from qiskit_optimization.algorithms import MinimumEigenOptimizer
17from qiskit.primitives import Sampler
18from qiskit.circuit.library import TwoLocal
19from qiskit_algorithms import SamplingVQE
20from qiskit_algorithms.optimizers import COBYLA
21
22# Step 3: Run Demonstration
23# Step 1: Generate Synthetic Financial Market Data for 4 Assets
24num_assets = 4
25start = datetime(2022, 1, 1)
26end = datetime(2023, 1, 1)
27data_provider = RandomDataProvider(tickers=['AAPL', 'GOOGL', 'MSFT', 'TSLA'], start=start, end=end, seed=42)
28data_provider.run()
29stock_data = data_provider.get_covariance_matrix()
30expected_returns = np.mean(stock_data, axis=0)
31
32# Step 2: Define Portfolio Optimization Problem (Budget = 2 assets)
33risk_factor = 0.5 # Risk tolerance trade-off
34budget = 2 # Select best 2 out of 4 assets
35portfolio = PortfolioOptimization(expected_returns=expected_returns, covariances=stock_data, risk_factor=risk_factor, budget=budget)
36quadratic_program = portfolio.to_quadratic_program()
37
38# Step 3: Solve Using SamplingVQE and TwoLocal Ansatz
39ansatz = TwoLocal(rotation_blocks=['ry', 'rz'], entanglement_blocks='cz')
40optimizer = COBYLA(maxiter=100)
41sampler = Sampler()
42sampling_vqe = SamplingVQE(sampler=sampler, ansatz=ansatz, optimizer=optimizer)
43qaoa = MinimumEigenOptimizer(sampling_vqe)
44result = qaoa.solve(quadratic_program)
45
46# Step 4: Interpret Results
47optimal_portfolio = portfolio.interpret(result)
48selected_assets = np.where(np.atleast_1d(optimal_portfolio) == 1)[0]
49tickers = ['AAPL', 'GOOGL', 'MSFT', 'TSLA']
50selected_tickers = [tickers[i] for i in selected_assets]
51print("Optimal Portfolio Allocation:", selected_tickers)
⚑ How to Run in Google Colab (3 Quick Steps)
  1. Click "Copy for Google Colab" above.
  2. Click Open New Google Colab Notebook (opens in a new tab).
  3. Click on the first empty code cell, press Ctrl + V (or Cmd + V) to paste, then press Shift + Enter to execute!

πŸ”„ Algorithmic Execution Flow

1
Financial Risk Formulation

Generates asset price returns and covariance matrix across AAPL, GOOGL, MSFT, and TSLA.

β†’
2
Quadratic Program Mapping

Formulates Markowitz portfolio selection balancing expected return against risk covariance under a budget constraint of 2 assets.

β†’
3
SamplingVQE Convergence

Executes SamplingVQE with TwoLocal ansatz, measuring the minimum eigenvalue bitstring that identifies the optimal assets.

πŸ“₯ Input / Initial State
4 stocks (AAPL, GOOGL, MSFT, TSLA) with risk factor 0.5 and budget 2
πŸ“€ Expected Output
Optimal Portfolio Allocation: ['AAPL', 'GOOGL']
πŸ’‘ What Does This Demonstration Show?

The quantum eigensolver successfully identified the optimal portfolio combination that maximizes financial returns while minimizing risk variance under budget constraints.

Course Learning Resource β€’ Slide DeckLesson 1412 Slides

Lesson 14: Quantum Optimization for Portfolio Selection

Asset covariance matrices, Quadratic Programming, TwoLocal ansatz, and SamplingVQE portfolio optimization.

Author: Dr. Syed Muzamil Bashaβ€’ FDP Approved Curriculum
Open in New Tab

πŸ“ Learning Check

Test your understanding with these questions. Remember, this is for learning, not examination!

Question 1: How does quantum annealing find low-energy states in rugged optimization landscapes?

Question 2: In QUBO optimization, what values do the decision variables x_i take?