Backup Coverage Location Problem (BCLP)

Description

This model aims to cover every demand unit at least once, while trying to increase the amount backup/secondary coverage. For example, you want to implement a new bus system and ensure that every neighborhood has access to at least one bus. You also want to maximize the number of neighborhoods that have 2 buses. You could apply the BCLP to solve this problem.

When to use this model:

  • You want to cover 100% of the demand and increase the demand units that are covered twice

  • You have point (or polygon) demand

Source

Hogan, Kathleen, and Charles Revelle. 1986. Concepts and Applications of Backup Coverage. Management Science 32 (11):1434-1444.

Example

The following example show how an BCLP can be created and solved.

from allagash import Coverage, Problem
import pulp
import geopandas

d = geopandas.read_file("sample_data/demand_point.shp")
s = geopandas.read_file("sample_data/facility_service_areas.shp")
s2 = geopandas.read_file("sample_data/facility2_service_areas.shp")
coverage1 = Coverage.from_geodataframes(d, s, "GEOID10", "ORIG_ID", demand_col="Population")
coverage2 = Coverage.from_geodataframes(d, s2, "GEOID10", "ORIG_ID", demand_col="Population")
problem = Problem.bclp([coverage1, coverage2], max_supply={coverage1: 5, coverage2: 19})
problem.solve(pulp.GLPK())