Files
huangfu 8ff9715fb7 Initial commit: T-ALNS-RRD paper reproduction project
- Paper: Optimizing urban last mile delivery efficiency (Liu & Wang, 2025)
- 5 algorithms: Static-VRPTW, TA-Greedy, ALNS-Base, T-ALNS, T-ALNS-RRD
- v1 baseline + v2 calibrated experiments with full results
- Tabu memory ablation study with convergence analysis
- Comprehensive final report (FINAL_REPORT.md)
2026-06-02 21:11:00 +08:00

146 lines
4.5 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Default configuration for T-ALNS-RRD Reproduction
# All parameters aligned with the original paper.
# Problem scale (paper §4.2)
problem:
n_customers: 47
n_vehicles: 4
depot_count: 1
vehicle_capacity_kg: 120
service_time_min: 4
area_width_km: 8.0
area_height_km: 10.0
operating_start: 360 # 6:00 AM in minutes (0 = midnight)
operating_end: 1080 # 6:00 PM in minutes
n_time_intervals: 12 # H = 12 one-hour intervals
# Customer generation (paper §4.2)
customers:
demand_min_kg: 3
demand_max_kg: 12
time_window_categories:
morning:
earliest: 540 # 9:00
latest: 720 # 12:00
afternoon:
earliest: 780 # 13:00
latest: 960 # 16:00
evening:
earliest: 1020 # 17:00
latest: 1200 # 20:00
num_clusters: 3
cluster_labels: ["residential", "commercial", "office"]
# Road network (paper §3.2)
roads:
types:
arterial:
speed_kmh: 45
proportion: 0.25
collector:
speed_kmh: 30
proportion: 0.35
residential:
speed_kmh: 20
proportion: 0.40
noise_std: 0.05 # base travel time noise
use_complete_graph: true
# Traffic congestion (paper §3.2, Table in §4.3)
traffic:
# hourly congestion multipliers (6:00-7:00, ..., 17:00-18:00)
multipliers: [1.0, 1.0, 1.6, 1.6, 1.2, 1.2, 1.0, 1.0, 1.2, 1.2, 1.7, 1.7]
congestion_scale_theta: 1.0 # θ in Eq.9
risk_aversion_beta: 0.3 # β in Eq.10
uncertainty_base: 0.05 # base uncertainty proportion of travel time
# Cost function weights (paper Eq.1)
cost:
lambda_lateness: 1.0 # λ₁
lambda_congestion: 1.0 # λ₂
lambda_stability: 0.3 # λ₃ (for RRD only)
# ALNS parameters (paper §3.3.1)
alns:
max_iterations: 1000
time_limit_sec: 600
destroy_ratio_min: 0.1 # α_min
destroy_ratio_max: 0.4 # α_max
initial_temperature_factor: 0.05 # T₀ = factor × Z(S⁰)
cooling_rate: 0.99975 # γ in Eq.21
reaction_factor: 0.1 # ξ in Eq.19
segment_length: 100 # π iterations for weight update
stall_limit: 200 # T_stall consecutive no-improvement
max_attempts: 5 # max attempts per candidate generation
# Reward levels (σ₁, σ₂, σ₃, σ₄)
reward_global_best: 1.0
reward_improvement: 0.5
reward_accepted: 0.2
reward_rejected: 0.0
# Tabu memory parameters (paper §3.3.2)
tabu:
move_tabu:
tenure: 7 # τ_move initial
tenure_min: 3
tenure_max: 12
overlap_threshold: 0.5 # μ in Eq.23
stall_for_increase: 50 # τ_stall for adaptive tenure
solution_tabu:
tenure: 15 # τ_sol
buffer_size: 1000
hash_prime: 1000000007
frequency:
normalization_factor: 2 # κ in Eq.33
normalization_interval: 50 # ν in Eq.33
diversification:
delta_max: 0.7 # δ_max in Eq.27
eta_balance: 0.5 # η in Eq.28
weights: [0.4, 0.3, 0.3] # ω₁, ω₂, ω₃ in Eq.27
aspiration:
beta_threshold: 0.3 # β in Eq.30
gamma_threshold: 0.8 # γ in Eq.31
# RRD parameters (paper §3.3.3)
rrd:
rollout:
horizon_min_min: 30 # H_min
horizon_max_min: 120 # H_max
urgency_alpha: 1.0 # α_urgency
n_sim_min: 2 # N_min
n_sim_max: 50 # N_max
mc_iterations: 50 # Monte Carlo iterations
time_overhead_ms: 10
time_per_sim_ms: 50
dispatch:
# Weights for composite score (Eq.40)
weight_rollout: 0.4 # ω₁
weight_stability: 0.3 # ω₂
weight_recovery: 0.3 # ω₃
tabu:
penalty: 50.0 # τ_penalty in Eq.39
bonus: 25.0 # τ_bonus in Eq.39
events:
urgency_threshold: 0.5 # trigger threshold
# Event weights (α_e, β_e, γ_e in Eq.35)
weights:
E1_traffic: [0.5, 0.3, 0.2]
E2_urgent: [0.7, 0.1, 0.2]
E3_capacity: [0.3, 0.4, 0.3]
E4_timewindow: [0.8, 0.1, 0.1]
max_actions: 20 # |A_e| ≤ 20
# Experiment settings (paper §4.8, §5)
experiments:
random_seeds: 30 # 30 runs per configuration
seed_start: 1 # seed range: 1..30
report_mean_std: true
# Sensitivity analysis ranges (paper §5.1)
sensitivity:
fleet_sizes: [2, 3, 4, 5, 6]
customer_counts: [30, 40, 47, 60]
capacities: [80, 100, 120, 140, 160]
# Uncertainty levels (paper §5.2)
robustness:
sigma_values: [0.1, 0.2, 0.3, 0.5]