Releases: motis-project/motis
v0.11.1: Bugfix for trip and departure table API
What's Changed
- nigiri: fix bugs in trip_to_connection and dep/arr tables by @felixguendling in #369
Full Changelog: v0.11.0...v0.11.1
v0.11.0: Valhalla support
- Nigiri based re-implementation of endpoints used by the web user interface
- Valhalla module wrapping the Valhalla street routing
What's Changed
- valhalla router as alternative to ppr/osrm by @felixguendling in #360
- nigiri guesser by @felixguendling in #361
- nigiri railviz by @felixguendling in #363
- fix nigiri railviz overlap check by @felixguendling in #365
- nigiri: fix railviz for block_id trips by @felixguendling in #366
- station lookup by @felixguendling in #367
Full Changelog: v0.10.2...v0.11.0
v0.10.2: Bugfix for GTFS-RT block_id
What's Changed
- nigiri: fix tag lookup by @felixguendling in #357
- ci: simplify cache keys to save space by @felixguendling in #358
- nigiri rt block_id fix by @felixguendling in #359
Full Changelog: v0.10.1...v0.10.2
v0.10.1: PPR Bugfix
What's Changed
- Nigiri GTFS-RT: catch errors by @felixguendling in #353
- update ppr (faster parallel preprocessing) by @felixguendling in #354
- Fix PPR + Parking initialization by @pablohoch in #356
Full Changelog: v0.10.0...v0.10.1
v0.10.0: New Core GTFS-RT
The new core can now be updated with GTFS-RT real-time updates (currently, only delay updates are supported). The real-time routing of the nigiri
module considers those real-time updates. The map and train run display are not showing real-time updates yet, because those depend on the old core.
What's Changed
- Fix typo: unkown -> unknown by @1Maxnet1 in #346
- formatting by @felixguendling in #347
- Nigiri rt by @felixguendling in #348
- clang-tidy: skip tests by @felixguendling in #350
- update nigiri (improve rt debug) by @felixguendling in #351
- increase cache size by @felixguendling in #352
Full Changelog: v0.9.4...v0.10.0
v0.9.4: Bugfixes
What's Changed
- PPR: Improved Crossings + Indoor Routing Support, Version Check Fix by @pablohoch in #334
- nigiri default timezone setting by @felixguendling in #337
- ppr: unchecked graph loading (integrity and version check are enough) by @felixguendling in #338
- fix ppr unchecked for production by @felixguendling in #339
- adjust zoom levels so all trains show at the same time by @felixguendling in #340
- improved display names for flixbus by @felixguendling in #341
- nigiri first_day="TODAY" option by @felixguendling in #342
- ctx fix by @felixguendling in #343
- update ppr by @felixguendling in #344
Full Changelog: v0.9.3...v0.9.4
v0.9.3 Bugfixes
Bugfixes:
- nigiri: don't connect stations at or close to coordinate (0, 0) since those are data errors and create loopholes between timetables
- tiles: don't compress already compressed HTTP responses coming from the tiles module
- intermodal: use station coordinates (even if only station id is given in request) to compute direct connection between start/end coordinates
- nigiri correct source index counting
- trip resolver: remove debug output
Improvements: nigiri labels buses with >100km range as (long distance) coach.
Full Changelog: v0.9.2...v0.9.3
v0.9.2: Performance
This version contains a performance improvement for the new nigiri core. The scale of the improvement depends on many factors such as dataset size or query type. To illustrate the differences between the different algorithms, a evaluation was done using a two week timetable of Germany, Switzerland and the Netherlands (each one as GTFS) and according OSM data.
In the follwing table Range 2h means that the departure time window was 2h, MCD is the multi-criteria Dijkstra contained in the routing
module, TB is the TripBased algorithm. Nigiri is the new MOTIS core which is based on the RAPTOR algorithm. The coordinate to coordinate case considers up to 15 min walking for the first and last leg. Big differences can be seen on the 99% percentile where the slowest queries are now more than one second faster (or 35%).
Start | Query | Router | Avg. | q50 | q80 | q90 | q99 |
---|---|---|---|---|---|---|---|
Coordinate → Coordinate | Range 2h | MCD | 2,321 ms | 1,709 ms | 3,647 ms | 4,829 ms | 10,131 ms |
Coordinate → Coordinate | Range 2h | TB | 1,952 ms | 1,909 ms | 2,742 ms | 3,173 ms | 4,416 ms |
Coordinate → Coordinate | Range 2h | nigiri v0.9.1 | 1,049 ms | 886 ms | 1,561 ms | 2,049 ms | 3,530 ms |
Coordinate → Coordinate | Range 2h | nigiri v0.9.2 | 802 ms | 699 ms | 1,157 ms | 1,485 ms | 2,303 ms |
Differences for station to station queries are not as distinctive but especially the improvement on the 99% quantile is significant (10% reduction). EA query type stands for earliest arrival query (called Ontrip
in the MOTIS API).
Start | Query | Router | Avg. | q50 | q80 | q90 | q99 |
---|---|---|---|---|---|---|---|
Station → Station | EA | MCD | 555 ms | 436 ms | 745 ms | 1,017 ms | 2,002 ms |
Station → Station | EA | TB | 583 ms | 465 ms | 943 ms | 1,230 ms | 1,950 ms |
Station → Station | EA | nigiri v0.9.1 | 209 ms | 206 ms | 290 ms | 338 ms | 428 ms |
Station → Station | EA | nigiri v0.9.2 | 203 ms | 202 ms | 272 ms | 311 ms | 382 ms |
Benchmarks were conducted on a AMD Ryzen 9 5900X 12-Core Processor with MOTIS built in Release
mode. MOTIS calculations were limited to 12 threads.
Steps to reproduce
# config.ini
modules=nigiri
modules=intermodal
modules=osrm
mode=batch
num_threads=12
dataset.no_schedule=true
intermodal.router=nigiri
osrm.profiles=motis/osrm-profiles/foot.lua
[import]
paths=schedule-nl:input/schedule/nl
paths=schedule-delfi:input/schedule/delfi
paths=schedule-swiss:input/schedule/swiss
paths=osm:input/osm.pbf
[nigiri]
geo_lookup=true
first_day=2023-05-16
num_days=14
# config-routing.ini
modules=routing
modules=intermodal
modules=osrm
modules=lookup
mode=batch
num_threads=12
intermodal.router=routing
osrm.profiles=motis/osrm-profiles/foot.lua
[dataset]
begin=20230516
num_days=14
cache_graph=true
adjust_footpaths=false
[import]
paths=schedule-nl:input/schedule/nl
paths=schedule-delfi:input/schedule/delfi
paths=schedule-swiss:input/schedule/swiss
paths=osm:input/osm.pbf
# config-tripbased.ini
modules=routing
modules=intermodal
modules=osrm
modules=lookup
modules=tripbased
mode=batch
num_threads=12
intermodal.router=tripbased
osrm.profiles=motis/osrm-profiles/foot.lua
[dataset]
begin=20230516
num_days=14
cache_graph=true
adjust_footpaths=false
[import]
paths=schedule-nl:input/schedule/nl
paths=schedule-delfi:input/schedule/delfi
paths=schedule-swiss:input/schedule/swiss
paths=osm:input/osm.pbf
Generate coordinate to coordinate range queries (backward):
./motis/motis generate -c config-routing.ini --search_dir backward --start_type intermodal_pretrip --start_modes osrm_foot-15 --dest_type coordinate --dest_modes osrm_foot-15 --routers /routing /nigiri /tripbased --out q_ipretrip_idest_TARGET.txt
Generate station to station earliest arrival queries (forward):
./motis/motis generate -c config-routing.ini --message_type=routing --start_type=ontrip_station --dest_type=station --routers /routing /nigiri /tripbased --search_dir forward --out q_ontrip_sdest_TARGET.txt
Run routings:
~/code/motis/cmake-build-relwithdebinfo-mimalloc/motis -c config.ini --batch_input_file q_ipretrip_idest_nigiri.txt --batch_output_file r_ipretrip_idest_nigiri_new.txt && \
./motis/motis -c config.ini --batch_input_file q_ipretrip_idest_nigiri.txt --batch_output_file r_ipretrip_idest_nigiri_09.txt && \
./motis/motis -c config-routing.ini --batch_input_file q_ipretrip_idest_routing.txt --batch_output_file r_ipretrip_idest_routing.txt && \
./motis/motis -c config-tripbased.ini --batch_input_file q_ipretrip_idest_tripbased.txt --batch_output_file r_ipretrip_idest_tripbased.txt
Show statistics:
./motis/motis analyze r_ipretrip_idest_nigiri_new.txt && \
./motis/motis analyze r_ipretrip_idest_nigiri_09.txt && \
./motis/motis analyze r_ipretrip_idest_routing.txt && \
./motis/motis analyze r_ipretrip_idest_tripbased.txt
What's Changed
- Fixes for RI Basis + RSL RT by @pablohoch in #330
- nigiri gtfs loader memory improvement + routing speedup by @felixguendling in #331
Full Changelog: v0.9.1...v0.9.2
v0.9.1: Compact API Bugfix, nigiri ZIP File Loading
What's Changed
- sort nigiri stats by @felixguendling in #327
- compact api: destination needs to be object by @felixguendling in #328
- nigiri zip file loading support by @felixguendling in #329
Full Changelog: v0.9.0...v0.9.1
v0.9.0: First Release with Nigiri
This is the first MOTIS release with nigiri
, the new MOTIS core.
News: https://motis-project.de/release/2023/05/15/new-motis-core.html
Changes:
- make time check less strict by @felixguendling in #283
- don't connect 0,0 coordinate stations from diff. schedules by @felixguendling in #284
- RailViz: Ignore trains without polylines by @pablohoch in #286
- roll out frequencies.txt by @felixguendling in #294
- start nigiri integration (wip) by @felixguendling in #274
- Web UI Fixes for Recent API Changes by @pablohoch in #300
- HRD Parser: Ignore Hidden and Invalid Files by @pablohoch in #301
- use brew to install ninja by @felixguendling in #303
- hrd: support multiple season entries by @felixguendling in #304
- Update Clang + Boost by @pablohoch in #308
- intermodal: stop counting change times at first/last station by @felixguendling in #305
- PPR Update: Performance + Memory Improvements by @pablohoch in #315
- Add mimalloc support on Windows by @pablohoch in #317
- xtract multi schedule + GTFS parser fixes by @felixguendling in #318
- More debugging functionality (FlatBuffers + RT) by @pablohoch in #323
- replace routing generate+compare commands by @felixguendling in #325
- Remove routing generate compare, enable ontrip with meta starts by @felixguendling in #326
Nigiri
- nigiri interval extension by @felixguendling in #302
- nigiri GTFS block_id support by @felixguendling in #313
- optional schedule loading by @felixguendling in #314
API
- Tool to generate OpenAPI / JSON Schema / TS protocol definitions by @pablohoch in #281
- OpenAPI Fixes + Improvements by @pablohoch in #291
- New Compact API Format by @pablohoch in #309
- HTTP Server: Support gzip encoding for API responses by @pablohoch in #319
RSL Changes
- RSL: Detailed Capacities Part 1 by @pablohoch in #249
- RSL: Groups Rework by @pablohoch in #275
- RSL: Support Through Services by @pablohoch in #279
- RSL UI Fixes + Improvements by @pablohoch in #280
- RSL: Add support for alternative TREK format by @pablohoch in #290
- RSL: Information about groups with unreachable destinations by @pablohoch in #289
- RSL: Add number of affected passengers to simulation result by @pablohoch in #292
- RSL: Capacities Part 2 by @pablohoch in #293
- RSL: Various Improvements by @pablohoch in #295
- RSL: Reachability + Estimated Delay Fixes by @pablohoch in #296
- RSL: Meta Station Fixes by @pablohoch in #298
- RSL: Capacities via RiBasisFormation by @pablohoch in #299
- RI Basis + RSL Fixes by @pablohoch in #306
Full Changelog: v0.8.7...v0.9.0