=== versions === python 3.12.0 | spopt 0.8.0 | pulp 3.3.2 | osmnx 2.1.1 | geopandas 1.2.0 | numpy 2.5.4 CBC available through PuLP: C:\Users\Sean.Blaney\source\tgis-b6-4\.venv-access\Lib\site-packages\pulp\apis\../solverdir/cbc/win/i64\cbc.exe === demand === 336 Cornwall LSOAs, 570,320 residents (Census 2021), median 1,611 per LSOA for the problem-size benchmark: 1,847 Cornwall OAs, 570,334 residents === candidate sites (OpenStreetMap) === OSM features in Cornwall: {('candidate', 'community_centre'): 205, ('candidate', 'townhall'): 22, ('hospital', 'hospital'): 18} NHS hospital sites kept: Bodmin Hospital, Camborne Redruth Community Hospital, Falmouth Hospital, Helston Community Hospital, Launceston Community Hospital, Liskeard Community Hospital, Newquay Hospital, Royal Cornwall Hospital, St Austell Community Hospital, St. Michael's Hospital, Stratton Hospital, West Cornwall Hospital 144 candidate community buildings after 2 km thinning (from 227); 12 existing hospital sites === travel times === graph from ../spatial-accessibility-2sfca-python/data/cornwall_drive.graphml: 46,322 nodes, 105,181 edges; 6 s LSOA x site matrix (336, 156) and OA x site matrix (1847, 156) in 1.6 s; unreachable pairs: 0 existing 12 hospital sites: mean 7.6 min | worst 26.1 min | 90.7% within 15 min === p-median, p-center and MCLP with p = 6 (greenfield) === p-median Optimal in 3.5 s (48,528 variables, 48,721 constraints) | mean 10.6 min | worst 24.1 min | 77.9% within 15 min sites: Ertach Kernow; Liskeard Town Hall; Ponsanooth Hall; Quintrell Downs Village Hall; Bethel Methodist Church Sunday School; Ludgvan Village Hall p-center Optimal in 132.1 s (48,529 variables, 49,057 constraints) | mean 12.1 min | worst 22.1 min | 69.4% within 15 min sites: The Basement Youth Centre; Liskeard Town Hall; St. Erme Village Hall; Jacobstow Parish Hall; St Petroc Community Centre; Ludgvan Village Hall mclp Optimal in 0.3 s (480 variables, 337 constraints) | mean 11.9 min | worst 42.8 min | 85.9% within 15 min sites: Gwennap Parish Hall; Church Rooms; Stoke Climsland Village Hall; Community Centre at Indian Queens Pit; St Pirans Hall; Eliot Hall p-center by LSCP bisection: worst 22.08 min (direct model 22.08 min) from 15 set-covering solves in 4.1 s sites chosen by all three models: 0 === trade-off curves, p = 1-12 === mean_min max_min covered_pct model mclp p-center p-median mclp p-center p-median mclp p-center p-median p 1 29.0 27.0 25.3 72.0 51.3 52.2 29.8 14.2 19.0 2 19.4 19.7 17.5 52.2 39.1 43.0 48.5 33.3 36.8 3 16.1 17.6 15.0 49.4 35.6 46.5 61.3 34.3 56.9 4 13.6 15.0 13.3 46.5 26.9 46.5 71.7 44.6 70.8 5 12.6 12.6 11.8 46.5 25.3 31.0 81.3 67.6 73.2 6 11.9 12.3 10.6 42.8 22.1 24.1 85.9 68.2 77.9 7 10.5 12.2 9.7 39.5 21.0 24.4 90.7 65.3 79.2 8 9.8 11.9 8.9 24.0 19.8 24.4 94.3 72.6 84.9 9 9.3 9.9 8.4 24.0 17.5 24.4 96.3 90.5 89.5 10 9.3 10.2 7.8 22.4 16.8 23.7 97.9 93.5 91.8 11 8.9 9.6 7.3 22.5 15.8 22.6 99.1 97.1 91.8 12 8.9 9.1 6.9 15.4 15.4 22.6 99.8 99.8 96.1 solve time (s) by model (p-center = LSCP bisection): {'mclp': {'median': 0.07, 'max': 0.27}, 'p-center': {'median': 4.1, 'max': 5.43}, 'p-median': {'median': 5.63, 'max': 30.15}} p-median: minutes saved per extra site: 1->2: 7.75, 2->3: 2.52, 3->4: 1.74, 4->5: 1.47, 5->6: 1.22, 6->7: 0.84, 7->8: 0.80, 8->9: 0.55, 9->10: 0.54, 10->11: 0.52, 11->12: 0.45 === problem size: LSOAs vs output areas === model demand rows variables constraints note secs status mean_min max_min covered_pct p-median LSOA 336 48528.0 48721.0 49k vars 3.43 Optimal 10.61 27.43 77.78 p-median OA 1847 266112.0 267816.0 266k vars 185.25 Optimal 10.61 27.43 77.78 p-center LSOA 336 NaN NaN 15 LSCPs 3.88 Optimal 12.34 25.34 68.94 p-center OA 1847 NaN NaN 18 LSCPs 23.22 Optimal 13.05 23.15 59.01 mclp LSOA 336 480.0 337.0 480 vars 0.25 Optimal 11.89 46.45 85.67 mclp OA 1847 1991.0 1848.0 2k vars 1.73 Optimal 11.15 43.23 85.76 === adding 3 sites to the 12 existing hospital sites === p-median Optimal in 2.6 s | mean 6.5 min (was 7.6) | worst 26.1 min (was 26.1) | 97.5% within 15 min (was 90.7%) | new: Isambard House; Wadebridge Town Hall; Wilcove Village Hall mclp Optimal in 0.1 s | mean 6.6 min (was 7.6) | worst 26.1 min (was 26.1) | 98.6% within 15 min (was 90.7%) | new: Wadebridge Town Hall; Downderry and Seaton Village Hall; Callington Town Hall === figures === saved 01-demand-and-candidates.png, 02-solutions-p6.png, 03-solution-metrics.png, 04-tradeoff-curves.png, 05-solve-time.png, 06-existing-plus-new.png