-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Problem
When running "Compare Routes" on a long route (e.g., Portugal 37.24°N, 10.29°W → Netherlands 52.75°N, 3.07°W, ~1619 nm), the VISIR engine only converges for the Fuel weight (safety_weight=0.0). The Balanced (safety_weight=0.5) and Safety (safety_weight=1.0) modes fail silently — returning no result and showing "-" in the comparison table.
All 3 A* variants converge successfully on the same route.
Expected Behavior
All 6 route variants (2 engines × 3 weights) should return results. If VISIR cannot converge within the node budget, it should return a partial result or a clear error message rather than failing silently.
Observed Behavior
| Engine | Fuel (w=0.0) | Balanced (w=0.5) | Safety (w=1.0) |
|---|---|---|---|
| A* | 1194 nm, 117.5 MT | 1237 nm, 120.7 MT | 1279 nm, 124.3 MT |
| VISIR | 1201 nm, 119.1 MT | - | - |
Probable Cause
The VISIR Dijkstra at 0.25° resolution with max_nodes=200,000 likely exhausts its node budget when safety penalties are applied. Higher safety weights increase edge costs significantly, causing the search frontier to expand more broadly before reaching the destination. The 200k node cap is hit before convergence.
Potential fixes:
- Increase
DEFAULT_MAX_NODESfor VISIR (e.g., 500k or adaptive based on route length) - Use A* heuristic instead of pure Dijkstra to guide the search toward the destination
- Coarsen VISIR grid dynamically for longer routes (e.g., 0.5° for routes > 1000 nm)
- Return best partial path when node budget is exhausted
Screenshot
Route: Portugal → Netherlands (~1619 nm, 6 waypoints)
Environment
- Branch:
development(commit5a5cf6e) - VISIR resolution: 0.25° (~15 nm)
- Max nodes: 200,000
- Route length: ~1619 nm