Skip to content

AquaWander/test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Radio Resource Allocation for Beam Hopping Scheduling in LEO Satellite Communications: A Spatio-Temporal Perspective

MATLAB License Status

⚠️ Important Update (2026-03-11): All code errors have been fixed!

If you cloned this repository before, please update immediately:

git pull origin main

See Changelog for details


This repository contains the MATLAB implementation of the Radio Resource Allocation for Beam Hopping Scheduling in LEO Satellite Communications: A Spatio-Temporal Perspective.

πŸ“‹ Overview

This project addresses the beam-hopping (BH) scheduling problem in LEO satellite communications, where a satellite dynamically illuminates multiple cells within its coverage area to maximize service satisfaction while managing interference constraints.

Key Features

  • Tabu Search with Simulated Annealing (SA): Hybrid metaheuristic combining tabu search's memory mechanism with SA's probabilistic acceptance
  • Adaptive Tabu Tenure: Dynamic tabu list size based on problem scale ($L_{tabu} = \lfloor\sqrt{N_b} \cdot \sqrt{N_m}\rfloor$)
  • Interference-Aware Scheduling: Spatial separation constraints to minimize co-channel interference
  • User-Centric KPIs: Comprehensive performance metrics including throughput percentiles, fairness, and service satisfaction

πŸš€ Quick Start

Prerequisites

  • MATLAB R2024a or later
  • Required toolboxes:
    • Communications Toolbox
    • Optimization Toolbox (optional, for baseline comparison)
  • Satellite Orbit Data: This project requires satellite orbit data files (5400.mat or 1800.mat) containing position information. Run generate_test_satellite_data() to generate sample data.

Installation

# Clone the repository
git clone https://github.com/yuanhaobupt/leo-bh-scheduling.git

# Navigate to the project directory
cd leo-bh-scheduling

# Open MATLAB and add to path
addpath(genpath('.'));

Running a Simple Example

% Load default configuration
setConfig;

% Run a quick test (single scheduling period)
controller = simSatSysClass.simController(Config, 1, 1, 0);
DataObj = controller.run();

% Calculate performance metrics
KPIs = calcuUserKPIs(DataObj);

πŸ“ Repository Structure

leo-bh-scheduling/
β”‚
β”œβ”€β”€ +methods/                    # Algorithm implementations
β”‚   β”œβ”€β”€ BHST_MY.m               # Original Tabu Search
β”‚   β”œβ”€β”€ BHST_MY_SA.m            # Tabu Search with SA
β”‚   β”œβ”€β”€ BHST_greedy.m           # Greedy baseline
β”‚   β”œβ”€β”€ BHST_DQN.m              # DQN baseline
β”‚   └── ...
β”‚
β”œβ”€β”€ +simSatSysClass/            # Simulation framework
β”‚   β”œβ”€β”€ @simController/         # Main controller
β”‚   β”œβ”€β”€ @simInterface/          # Data interface
β”‚   β”œβ”€β”€ @dataObj/               # Result storage
β”‚   └── +tools/                 # Utility functions
β”‚
β”œβ”€β”€ +antenna/                   # Antenna pattern functions
β”œβ”€β”€ +tools/                     # Coordinate and geometry utilities
β”‚
β”œβ”€β”€ experiments/                # Experiment scripts
β”‚   β”œβ”€β”€ run_TabuSearch.m        # Tabu Search baseline
β”‚   β”œβ”€β”€ run_DQN.m               # DQN baseline
β”‚   β”œβ”€β”€ run_ablation_SA.m       # SA ablation experiment
β”‚   β”œβ”€β”€ run_ablation_Ltabu.m    # Tabu tenure ablation
β”‚   β”œβ”€β”€ run_traffic_skew_experiment.m  # Traffic skew experiment
β”‚   β”œβ”€β”€ run_all_experiments.m   # Comprehensive runner
β”‚   └── run_visualization.m     # Batch visualization
β”‚
β”œβ”€β”€ utils/                      # Helper utilities
β”‚   β”œβ”€β”€ calcuUserKPIs.m         # User-centric KPI calculation
β”‚   β”œβ”€β”€ generateTraffic.m       # Traffic demand generation
β”‚   β”œβ”€β”€ generate_test_satellite_data.m  # Synthetic orbit data
β”‚   β”œβ”€β”€ analyze_existing_results.m      # Result analysis
β”‚   └── perform_statistics.m    # Statistical analysis
β”‚
β”œβ”€β”€ visualize/                  # Visualization tools
β”‚   β”œβ”€β”€ plot_SINR_CDF.m
β”‚   β”œβ”€β”€ plot_Throughput_Comparison.m
β”‚   β”œβ”€β”€ plot_ablation_results.m
β”‚   └── ...
β”‚
β”œβ”€β”€ results/                    # Experiment results (git-ignored)
β”‚
β”œβ”€β”€ setConfig.m                 # Configuration script
β”œβ”€β”€ quick_start.m               # One-click verification
β”‚
└── README.md                   # This file

πŸ”¬ Experiments

1. SA Mechanism Ablation

Compare the proposed method (Tabu + SA) against Tabu-only baseline:

run('experiments/run_ablation_SA.m')

Expected Results:

Variant Throughput (Mbps) Satisfaction (%)
Tabu + SA 202.6 85.0
Tabu-only 189.3 82.5

2. Tabu Tenure Ablation

Compare adaptive vs. fixed tabu tenure:

run('experiments/run_ablation_Ltabu.m')

Expected Results:

Configuration Throughput (Mbps) Satisfaction (%)
Fixed L=10 178.5 79.8
Fixed L=20 195.2 82.5
Fixed L=30 188.3 81.2
Adaptive 202.6 85.0

3. Traffic Skew Experiment

Test performance under different traffic distributions:

run('experiments/run_traffic_skew_experiment.m')

Traffic Modes:

  • Uniform: All users have identical demands
  • Light Skew: 2Γ— demand variance
  • Heavy Skew: 5Γ— demand variance
  • Pareto (80/20): 20% users account for 80% demand

βš™οΈ Configuration

Key parameters can be modified in setConfig.m:

% Satellite parameters
heightOfSat = 508e3;           % Orbital altitude (m)
numOfServbeam = 10;            % Number of beams

% Scheduling parameters
BhDispCycle = 40e-3;           % Scheduling period (s)
SubCarrierSpace = 30e3;        % Subcarrier spacing (Hz)

% Traffic parameters
meanUsrsNum = 800;             % Average number of users
traffic_mode = 'uniform';      % Traffic distribution mode

% Algorithm parameters
enable_SA = true;              % Enable SA mechanism
L_tabu_mode = 'adaptive';      % Tabu tenure mode

πŸ“Š Performance Metrics

The framework calculates the following user-centric KPIs:

Metric Description
Throughput Average, p50, p90, p95 percentiles
SINR Signal-to-Interference-plus-Noise Ratio
Outage Rate Users with SINR < 0 dB
Service Satisfaction Transported/Requested traffic ratio
Fairness Index Jain's Fairness Index
Delay Average and p95 latency

Example usage:

KPIs = calcuUserKPIs(DataObj);
fprintf('Average Throughput: %.2f Mbps\n', KPIs.avg_throughput/1e6);
fprintf('p90 Throughput: %.2f Mbps\n', KPIs.p90_throughput/1e6);
fprintf('Fairness Index: %.4f\n', KPIs.fairness_index);

πŸ“ˆ Complexity Analysis

Time Complexity (per iteration): $$T_{iter} = O(|N(x)| \cdot N_b \cdot K)$$

Where:

  • $|N(x)|$: Neighborhood size (default: 10)
  • $N_b$: Number of beams (default: 10)
  • $K$: Average users per beam (default: 80)

Space Complexity: $$S_{total} = O(L_{tabu} \cdot N_b + N_m^2)$$

Typical Performance:

  • Computation time: ~5 seconds (50 iterations)
  • Memory usage: <100 MB
  • Suitable for real-time satellite scheduling

πŸ“ Citation

Waiting...

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

🀝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

πŸ“§ Contact

For questions or issues:


Note: This code is provided for academic research purposes. For commercial use, please contact the authors.

About

Tabu Search-based Beam Hopping Scheduling for LEO Satellite Communications - Public

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages