This project implements distributed quantum Gaussian process regression using ADMM optimization with state-of-the-art test functions and multi-dimensional support.
βββ main.py # Main distributed QGPR with ADMM consensus
βββ agent_riemannian.py # Quantum agent with Riemannian optimization
βββ riemannian_optimizer.py # Manifold-aware optimization (torus geometry)
βββ real_world_datasets.py # Real-world dataset loaders (SRTM, SST, kin40k, robot_push)
βββ requirements.txt # Project dependencies
βββ README.md # Documentation and examples
βββ srtm_data/ # Sample SRTM elevation datasets
βββ N17E073.hgt # Latitude 17Β°N, Longitude 73Β°E (Western Ghats - Maharashtra)
βββ N43W080.hgt # Latitude 43Β°N, Longitude 80Β°W (Great Lakes region)
βββ N45W123.hgt # Latitude 45Β°N, Longitude 123Β°W (Oregon Coast)
βββ N47W124.hgt # Latitude 47Β°N, Longitude 124Β°W (Washington Coast)
python main.py --real-world-dataset srtm --srtm-region maharashtra --dataset-max-samples 1000 --dataset-normalize --encoding hubregtsen --kernel-type projected --num-layers 1 --num-qubits 3 --outer-kernel matern --rho 100 --L 100 --n-agents 4 --prediction-method gPoE --cv-patience 5 --noise-lower-bound 0.1# 1D function with default settings
python main.py --input-dim 1 --n-train 60 --n-agents 4
# 2D Goldstein-Price function
python main.py --input-dim 2 --n-train 100 --n-agents 4 --max-iter 50
# 3D Hartmann function with more qubits
python main.py --input-dim 3 --n-train 150 --num-qubits 6 --n-agents 4# SRTM Elevation Dataset (2D)
--use-srtm-preprocessed for approach comparison
# Maharashtra
python main.py --real-world-dataset srtm --srtm-region maharashtra --dataset-max-samples 1000 --dataset-normalize --encoding hubregtsen --kernel-type projected --num-layers 1 --num-qubits 3 --outer-kernel matern --rho 100 --L 100 --n-agents 4 --prediction-method gPoE --cv-patience 5 --noise-lower-bound 0.1
python experiment_runner.py --num-experiments 30 --real-world-dataset srtm --srtm-region maharashtra --dataset-max-samples 1000 --dataset-normalize --encoding chebyshev --kernel-type projected --num-layers 3 --use-riemannian --num-qubits 4 --outer-kernel matern --rho 100 --L 100
# Great Lakes
python main.py --real-world-dataset srtm --srtm-region great_lakes --dataset-max-samples 1000 --dataset-normalize --encoding hubregtsen --kernel-type projected --num-layers 1 --num-qubits 3 --outer-kernel matern --rho 100 --L 100 --n-agents 4 --prediction-method gPoE --cv-patience 5 --noise-lower-bound 0.1
python experiment_runner.py --num-experiments 30 --real-world-dataset srtm --srtm-region great_lakes --dataset-max-samples 1000 --dataset-normalize --encoding chebyshev --kernel-type projected --num-layers 3 --use-riemannian --num-qubits 4 --outer-kernel matern --rho 100 --L 100
# Oregon Coast
python main.py --real-world-dataset srtm --srtm-region oregon_coast --dataset-max-samples 1000 --dataset-normalize --encoding hubregtsen --kernel-type projected --num-layers 1 --num-qubits 3 --outer-kernel matern --rho 100 --L 100 --n-agents 4 --prediction-method gPoE --cv-patience 5 --noise-lower-bound 0.1
python experiment_runner.py --num-experiments 30 --real-world-dataset srtm --srtm-region oregon_coast --dataset-max-samples 1000 --dataset-normalize --encoding chebyshev --kernel-type projected --num-layers 3 --use-riemannian --num-qubits 4 --outer-kernel matern --rho 100 --L 100
# Washington Coast
python main.py --real-world-dataset srtm --srtm-region washington_coast --dataset-max-samples 1000 --dataset-normalize --encoding hubregtsen --kernel-type projected --num-layers 1 --num-qubits 3 --outer-kernel matern --rho 100 --L 100 --n-agents 4 --prediction-method gPoE --cv-patience 5 --noise-lower-bound 0.1
python experiment_runner.py --num-experiments 30 --real-world-dataset srtm --srtm-region washington_coast --dataset-max-samples 1000 --dataset-normalize --encoding chebyshev --kernel-type projected --num-layers 4 --use-riemannian --num-qubits 5 --outer-kernel matern --rho 100 --L 100
# Sea Surface Temperature (2D)
python main.py --real-world-dataset sst --dataset-max-samples 1000 --dataset-normalize --encoding hubregtsen --kernel-type projected --num-layers 1 --num-qubits 3 --outer-kernel matern --rho 100 --L 100 --n-agents 4 --prediction-method gPoE --cv-patience 5 --noise-lower-bound 0.1
python experiment_runner.py --num-experiments 30 --real-world-dataset sst --dataset-max-samples 1000 --encoding hubregtsen --kernel-type projected --num-layers 1 --use-riemannian --num-qubits 3 --outer-kernel matern --rho 100 --L 100 --dataset-normalize
# Robot Push Dataset (3D)
python main.py --real-world-dataset robot_push --dataset-max-samples 1000 --encoding hubregtsen --kernel-type projected --num-layers 1 --num-qubits 3 --outer-kernel matern --rho 100 --L 100 --n-agents 4 --prediction-method gPoE --cv-patience 5 --noise-lower-bound 0.1
python experiment_runner.py --num-experiments 30 --real-world-dataset robot_push --dataset-max-samples 1000 --encoding hubregtsen --kernel-type projected --num-layers 1 --use-riemannian --num-qubits 3 --outer-kernel matern --rho 100 --L 100
# Save dataset for later use
python main.py --real-world-dataset sst --dataset-max-samples 1000 --dataset-normalize --encoding hubregtsen --kernel-type projected --num-layers 1 --num-qubits 3 --outer-kernel matern --rho 100 --L 100 --n-agents 4 --prediction-method gPoE --cv-patience 5 --noise-lower-bound 0.1 --dataset-only --save-dataset# 2D Goldstein-Price function (normalized)
python main.py --classical-dataset --input-dim 2 --n-dataset 1000 --encoding hubregtsen --kernel-type projected --num-layers 1 --num-qubits 3 --outer-kernel matern --rho 100 --L 100 --n-agents 4 --prediction-method gPoE --cv-patience 5 --noise-lower-bound 0.1
python experiment_runner.py --num-experiments 30 --classical-dataset --n-dataset 1000 --input-dim 2 --encoding hubregtsen --kernel-type projected --num-layers 1 --use-riemannian --num-qubits 3 --outer-kernel matern --rho 100 --L 100
# 3D Hartmann function
python main.py --classical-dataset --input-dim 3 --n-dataset 1000 --encoding hubregtsen --kernel-type projected --num-layers 1 --num-qubits 3 --outer-kernel matern --rho 100 --L 100 --n-agents 4 --prediction-method gPoE --cv-patience 5 --noise-lower-bound 0.1
python experiment_runner.py --num-experiments 30 --classical-dataset --n-dataset 1000 --input-dim 3 --encoding chebyshev --kernel-type projected --num-layers 1 --use-riemannian --num-qubits 3 --outer-kernel matern --rho 100 --L 100# Riemannian gradients with parameter shift
python main.py --differentiation parameter_shift
# Sequential data partitioning
python main.py --input-dim 2 --partition sequential --test-split 0.3
# Custom ADMM parameters
python main.py --max-iter 100 --tolerance 1e-8 --noise-std 0.05
# Real-world dataset with advanced settings
python main.py --real-world-dataset kin40k --dataset-max-samples 500 \
--encoding hubregtsen --kernel-type projected --num-layers 1 \
--num-qubits 3 --outer-kernel matern --rho 100 --L 100 \
--n-agents 4 --prediction-method gPoE --cv-patience 5 --noise-lower-bound 0.1
# High-dimensional experiment with robot kinematics
python main.py --real-world-dataset kin40k --dataset-max-samples 800 \
--encoding hubregtsen --kernel-type projected --num-layers 1 \
--num-qubits 3 --outer-kernel matern --rho 100 --L 100 \
--n-agents 4 --prediction-method gPoE --cv-patience 5 --noise-lower-bound 0.1# Option 1: Use launcher
python run_quantum_hardware.py
# Option 2: Direct execution
cd quantum_hardware
python main_hardware_job.pyThe implementation supports multiple dataset types:
Generated using quantum Gaussian processes for authentic quantum ML research.
State-of-the-art optimization benchmarks:
- Complex Synthetic:
f(x) = 5xΒ²sin(12x) + (xΒ³-0.5)sin(3x-0.5) + 4cos(2x) - Domain: [0, 1]
- Features: Multiple local optima, complex oscillatory behavior
- Goldstein-Price (normalized): Classic optimization benchmark
- Domain: [-2, 2] Γ [-2, 2]
- Features: Global minimum, multiple local minima, logarithmic scaling
- Hartmann 3D: Standard high-dimensional benchmark
- Domain: [0, 1]Β³
- Features: 4 local minima, exponential terms, smooth gradients
Realistic datasets commonly used in GP research:
- Input: Latitude, Longitude coordinates
- Output: Temperature measurements
- Use case: Spatial regression, environmental modeling
- Command:
--real-world-dataset sst
- Input: Object position (x, y) + push angle
- Output: Resulting displacement
- Use case: Robotics, manipulation planning
- Command:
--real-world-dataset robot_push
- Input: 8 joint angles
- Output: End-effector position
- Use case: High-dimensional regression, robotics
- Command:
--real-world-dataset kin40k
- Random: Shuffled random partitioning among agents
- Sequential: Ordered partitioning (useful for spatial data)
- Regional: Spatial partitioning for geographical data
- Train/Test Split: sklearn-style splitting with reproducible seeds
| Feature | Description | Benefit |
|---|---|---|
| Riemannian Optimization | Treats quantum circuit parameters as points on a torus manifold | Better convergence for periodic rotation parameters |
| Distributed ADMM | Consensus-based parameter optimization across agents | Scalable quantum GP with privacy preservation |
| 2D Focus | Optimized for 2D spatial problems | Visualization and interpretability |
| Real SRTM Data | Actual elevation measurements | Realistic GP benchmarks |
| Quantum Kernels | Fidelity & Projected kernels with multiple encodings | Flexible quantum feature spaces |
| Cross-Validation | NLPD-based model selection | Robust hyperparameter tuning |
--n-agents: Number of distributed agents (default: 4)--num-qubits: Quantum circuit qubits (default: 4)--num-layers: Encoding circuit layers (default: 2)--encoding: Circuit type -chebyshev,hubregtsen,yz_cx,kyriienko, etc.--kernel-type:fidelityorprojected--outer-kernel: For projected kernels -gaussian,matern,expsinesquared, etc.--rho: ADMM penalty parameter (default: 100.0)--L: Lipschitz constant (default: 100.0)
--riemannian-method:gradient_descent,momentum, orconjugate_gradient--riemannian-lr: Learning rate (default: 0.015)--riemannian-beta: Momentum/CG parameter (default: 0.9)--gradient-clip-norm: Gradient clipping (default: 1.0)--max-step-size: Maximum step size (default: 0.1)
--partition: Data split method -regional,random, orsequential--test-split: Test set ratio (default: 0.1)--noise-std: Observation noise (default: 0.1)--dataset-normalize: Normalize features and targets
The code generates:
- Convergence plots for ADMM iterations
- Prediction vs ground truth visualizations
- Cross-validation NLPD scores
- Agent-wise performance metrics
- Kernel matrix condition numbers
This implementation is designed for research in:
- Quantum machine learning
- Distributed Gaussian processes
- Riemannian optimization for quantum circuits
- Spatial regression with quantum methods
- ADMM consensus algorithms
If you use this code in your research, please cite:
@inproceedings{gandhi2026distributed,
title={Distributed Quantum Gaussian Processes for Multi-Agent Systems},
author={Gandhi, Meet and Kontoudis, George P},
booktitle={International Conference on Autonomous Agents and Multiagent Systems (AAMAS)},
year={2026}
}