site.SiteProblem

site.SiteProblem(preferred_crs='EPSG:27700', debug_mode=True)

Facility location optimization for healthcare site planning.

A comprehensive toolkit for solving spatial optimization problems in healthcare service delivery. This class supports multiple location-allocation models including p-median, p-center, and maximal covering location problems (MCLP), with various solution strategies from exact brute-force to heuristic methods.

The class handles the complete workflow from data ingestion (demand patterns, candidate sites, travel costs) through optimization to solution evaluation, with built-in support for geographic data and spatial visualizations.

Parameters

Name Type Description Default
preferred_crs str The coordinate reference system for spatial data. All geographic inputs will be transformed to this CRS. Defaults to British National Grid. "EPSG:27700"
debug_mode bool If True, enables verbose output during optimization and data processing. True

Attributes

Name Type Description
demand_data pandas.DataFrame or geopandas.GeoDataFrame or None Patient or service demand locations with associated weights.
candidate_sites geopandas.GeoDataFrame or None Potential facility locations available for optimization.
travel_matrix pandas.DataFrame or None Cost matrix (time/distance) between demand points and candidate sites.
region_geometry_layer geopandas.GeoDataFrame or None Optional geographic boundaries for visualization (e.g., LSOA polygons).
travel_and_demand_df pandas.DataFrame or geopandas.GeoDataFrame or None Internal merged dataset combining demand and travel cost data.
total_n_sites int or None Total number of candidate facilities available for optimization.

Notes

The class implements three inheritance mixins providing different solution strategies:

  • BruteForceMixin: Exhaustive enumeration for small problems
  • GreedyMixin: Fast constructive heuristic for larger problems
  • GraspMixin: Randomized adaptive search with local optimization

Supported optimization objectives:

  • ‘simple_p_median’: Minimize total unweighted travel distance/time
  • ‘hybrid_simple_p_median’: Simple p-median with maximum distance/time constraint
  • ‘p_median’: Minimize total weighted travel distance/time
  • ‘hybrid_p_median’: P-median with maximum distance/time constraint
  • ‘p_center’: Minimize maximum travel distance/time
  • ‘mclp’: Maximize coverage within a distance/time threshold

Methods

Name Description
add_additional_data Append a user-defined dataset to be tracked during optimization.
add_demand Add demand data to the site problem and validate its structure.
add_equity_data Add a dataframe containing equity data into your problem.
add_region_geometry_layer Add a region geodataframe to the site problem and validate its structure.
add_secondary_demand Register an additional demand scenario (e.g. projected future
add_secondary_travel_matrix Register an additional travel/cost matrix for a different mode or
add_sites Add candidate facility sites to the problem and handle spatial alignment.
add_travel_matrix Add a travel cost matrix to the problem and handle unit conversions.
describe_models Prints a menu of available optimization strategies for healthcare.
evaluate_baseline Evaluate the current (“do-nothing”) network as a one-solution
evaluate_single_solution_single_objective Evaluate a specific set of facility sites against a single objective.
get_hotspots Identify statistically significant hotspots and coldspots.
plot_accessibility Map 2SFCA accessibility: a region choropleth of accessibility,
plot_hotspots Plot statistically significant hotspots and coldspots.
plot_quadrant_map Plot the 2×2 attribute typology for a combined demand/deprivation analysis.
plot_region_geometry_layer Visualize the regional geometry layer, optionally overlaid with demand data.
plot_site_utilisation Map each candidate site’s current utilisation ratio.
plot_sites Generate a visualization of the candidate facility sites.
show_demand Returns a loaded demand dataframe
show_demand_format Prints the expected structure for the demand DataFrame.
show_region_geometry_layer Returns a loaded region geometry geodataframe
show_secondary_demand Returns a registered secondary demand scenario dataframe.
show_secondary_travel_matrix Returns a registered secondary travel/cost matrix dataframe.
show_sites Returns a loaded candidate site geodataframe
show_travel_format Prints the expected structure for the travel/cost matrix DataFrame.
show_travel_matrix Returns a loaded travel or cost matrix dataframe
site_utilisation_summary Summarise each candidate site’s real-world current utilisation.
solve Solve the site location problem using the specified objective and strategy.
two_step_floating_catchment Two-step floating catchment area (2SFCA) accessibility score.
Back to top