pub fn astar_grid2d_opts(
start: (usize, usize),
goal: (usize, usize),
opts: &GridAStarOpts<'_>,
) -> Option<AStarResult<(usize, usize)>>Expand description
Full-featured A* on a 2D grid with cost metrics, periodic boundaries, admissibility, and walkability maps.
This is the advanced variant of astar_grid2d. Use GridAStarOpts
to configure all parameters.
§Admissibility
Setting admissibility > 0.0 trades optimality for speed. The algorithm
inflates the heuristic by (1 + admissibility), which causes it to
explore fewer nodes at the cost of finding paths that may be up to
(1 + admissibility) times the optimal length.
§Example
use rustsim_pathfinding::astar::{astar_grid2d_opts, GridAStarOpts};
use rustsim_pathfinding::metrics::PenaltyMap;
use rustsim_pathfinding::metrics::DirectDistance;
let mut opts = GridAStarOpts::new(50, 50);
opts.diagonal = true;
opts.periodic = true;
opts.admissibility = 0.5;
opts.walkable = Some(&|x, y| !(x == 25 && y != 25));
let penalties = vec![0i32; 2500];
let metric = PenaltyMap::new(penalties, 50, 50, DirectDistance::new()).unwrap();
opts.cost_metric = Some(&metric);
let result = astar_grid2d_opts((0, 0), (49, 49), &opts);
assert!(result.is_some());