# 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]