From fe8663ead336cb0bb98b0d6a9a9ff7032985781b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20G=C3=BCndling?= Date: Sun, 3 Nov 2024 19:41:56 +0100 Subject: [PATCH] interval extension: maximum 2 days --- include/nigiri/routing/interval_estimate.h | 6 ++++-- include/nigiri/routing/query.h | 2 ++ include/nigiri/routing/raptor/raptor.h | 17 +++++++++++++++++ include/nigiri/routing/search.h | 9 +++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/include/nigiri/routing/interval_estimate.h b/include/nigiri/routing/interval_estimate.h index 796953c1e..f02ee3c35 100644 --- a/include/nigiri/routing/interval_estimate.h +++ b/include/nigiri/routing/interval_estimate.h @@ -20,13 +20,15 @@ struct interval_estimator { [](interval iut) { return iut; }}, q.start_time_); + auto const interval = + q.fastest_direct_ ? std::chrono::days{1} : std::chrono::days{2}; data_type_max_interval_ = { std::chrono::round( start_itv.from_ + ((start_itv.to_ - start_itv.from_) / 2)) - - kMaxSearchIntervalSize, + interval, std::chrono::round( start_itv.from_ + ((start_itv.to_ - start_itv.from_) / 2)) + - kMaxSearchIntervalSize}; + interval}; } interval initial(interval const& itv) const { diff --git a/include/nigiri/routing/query.h b/include/nigiri/routing/query.h index 8dd3410e6..8958a3c13 100644 --- a/include/nigiri/routing/query.h +++ b/include/nigiri/routing/query.h @@ -44,6 +44,8 @@ struct offset { struct td_offset { friend bool operator==(td_offset const&, td_offset const&) = default; + duration_t duration() const noexcept { return duration_; } + unixtime_t valid_from_; duration_t duration_; transport_mode_id_t transport_mode_id_; diff --git a/include/nigiri/routing/raptor/raptor.h b/include/nigiri/routing/raptor/raptor.h index 637e183e8..017e8f94a 100644 --- a/include/nigiri/routing/raptor/raptor.h +++ b/include/nigiri/routing/raptor/raptor.h @@ -19,6 +19,23 @@ namespace nigiri::routing { struct raptor_stats { + std::map to_map() const { + return { + {"n_routing_time", n_routing_time_}, + {"n_footpaths_visited", n_footpaths_visited_}, + {"n_routes_visited", n_routes_visited_}, + {"n_earliest_trip_calls", n_earliest_trip_calls_}, + {"n_earliest_arrival_updated_by_route", + n_earliest_arrival_updated_by_route_}, + {"n_earliest_arrival_updated_by_footpath", + n_earliest_arrival_updated_by_footpath_}, + {"fp_update_prevented_by_lower_bound", + fp_update_prevented_by_lower_bound_}, + {"route_update_prevented_by_lower_bound", + route_update_prevented_by_lower_bound_}, + }; + } + std::uint64_t n_routing_time_{0ULL}; std::uint64_t n_footpaths_visited_{0ULL}; std::uint64_t n_routes_visited_{0ULL}; diff --git a/include/nigiri/routing/search.h b/include/nigiri/routing/search.h index 0cd800022..11c3e064d 100644 --- a/include/nigiri/routing/search.h +++ b/include/nigiri/routing/search.h @@ -41,6 +41,15 @@ struct search_state { }; struct search_stats { + std::map to_map() const { + return { + {"lb_time", lb_time_}, + {"fastest_direct", fastest_direct_}, + {"interval_extensions", interval_extensions_}, + {"execute_time", execute_time_.count()}, + }; + } + std::uint64_t lb_time_{0ULL}; std::uint64_t fastest_direct_{0ULL}; std::uint64_t interval_extensions_{0ULL};