hrdf_routing_engine/debug.rs
1use std::time::Instant;
2
3use chrono::Duration;
4use hrdf_parser::Hrdf;
5
6use crate::{
7 routing::{find_reachable_stops_within_time_limit, plan_journey},
8 utils::create_date_time,
9};
10
11pub fn run_debug(hrdf: Hrdf) {
12 println!();
13 println!("------------------------------------------------------------------------------------------------");
14 println!("--- Debug");
15 println!("------------------------------------------------------------------------------------------------");
16
17 test_plan_journey(&hrdf);
18 test_find_reachable_stops_within_time_limit(&hrdf);
19}
20
21#[allow(dead_code)]
22pub fn test_plan_journey(hrdf: &Hrdf) {
23 // ------------------------------------------------------------------------------------------------
24 // --- 2.0.5
25 // ------------------------------------------------------------------------------------------------
26
27 println!();
28 let start_time = Instant::now();
29
30 // 1. Petit-Lancy, Les Esserts => Onex, Bandol
31 // plan_journey(hrdf, 8587418, 8593027, create_date_time(2025, 6, 1, 12, 30), verbose);
32
33 // 2. Petit-Lancy, Les Esserts => Genève-Aéroport
34 // plan_journey(hrdf, 8587418, 8501026, create_date_time(2025, 2, 9, 14, 2), verbose);
35
36 // 3. Avully, village => Pont-Céard, gare
37 // plan_journey(hrdf, 8587031, 8593189, create_date_time(2025, 7, 13, 16, 43), verbose);
38
39 // 4. Petit-Lancy, Les Esserts => Vevey, Palud
40 // plan_journey(hrdf, 8587418, 8595120, create_date_time(2025, 9, 17, 5, 59), verbose);
41
42 // 5. Genève, gare Cornavin => Avusy, village
43 // plan_journey(hrdf, 8587057, 8587032, create_date_time(2025, 10, 18, 20, 10), verbose);
44
45 // 6. Genève => Bern, Bierhübeli
46 // plan_journey(hrdf, 8501008, 8590028, create_date_time(2025, 11, 22, 6, 59), verbose);
47
48 // 7. Genève => Zürich HB
49 // plan_journey(hrdf, 8501008, 8503000, create_date_time(2025, 4, 9, 8, 4), verbose);
50
51 // 8. Zürich HB => Lugano, Genzana
52 // plan_journey(hrdf, 8503000, 8575310, create_date_time(2025, 6, 15, 12, 10), verbose);
53
54 // 9. Chancy, Douane => Campocologno
55 // plan_journey(hrdf, 8587477, 8509368, create_date_time(2025, 5, 29, 17, 29), verbose);
56
57 // 10. Chancy, Douane => Sevelen, Post
58 plan_journey(
59 hrdf,
60 8587477,
61 8588197,
62 create_date_time(2025, 9, 10, 13, 37),
63 true,
64 );
65
66 println!("\n{:.2?}", start_time.elapsed());
67}
68
69#[allow(dead_code)]
70pub fn test_find_reachable_stops_within_time_limit(hrdf: &Hrdf) {
71 // 1. Petit-Lancy, Les Esserts (8587418)
72 let departure_stop_id = 8587418;
73 let departure_at = create_date_time(2025, 6, 1, 12, 30);
74
75 // 2. Sevelen, Post (8588197)
76 // let departure_stop_id = 8588197;
77 // let departure_at = create_date_time(2025, 9, 2, 14, 2);
78
79 // 3. Avully, village (8587031)
80 // let departure_stop_id = 8587031;
81 // let departure_at = create_date_time(2025, 7, 13, 16, 43);
82
83 // 4. Bern, Bierhübeli (8590028)
84 // let departure_stop_id = 8590028;
85 // let departure_at = create_date_time(2025, 9, 17, 5, 59);
86
87 // 5. Genève, gare Cornavin (8587057)
88 // let departure_stop_id = 8587057;
89 // let departure_at = create_date_time(2025, 10, 18, 20, 10);
90
91 // 6. Villmergen, Zentrum (8587554)
92 // let departure_stop_id = 8587554;
93 // let departure_at = create_date_time(2025, 11, 22, 6, 59);
94
95 // 7. Lugano, Genzana (8575310)
96 // let departure_stop_id = 8575310;
97 // let departure_at = create_date_time(2025, 4, 9, 8, 4);
98
99 // 8. Zürich HB (8503000)
100 // let departure_stop_id = 8503000;
101 // let departure_at = create_date_time(2025, 6, 15, 12, 10);
102
103 // 9. Campocologno (8509368)
104 // let departure_stop_id = 8509368;
105 // let departure_at = create_date_time(2025, 5, 29, 17, 29);
106
107 // 10. Chancy, Douane (8587477)
108 // let departure_stop_id = 8587477;
109 // let departure_at = create_date_time(2025, 9, 10, 13, 37);
110
111 let start_time = Instant::now();
112 for time_limit in [60, 120, 180] {
113 let routes = find_reachable_stops_within_time_limit(
114 hrdf,
115 departure_stop_id,
116 departure_at,
117 Duration::minutes(time_limit),
118 false,
119 );
120
121 println!("\n{}", routes.len());
122 }
123
124 println!("{:.2?}", start_time.elapsed());
125}