We consider the problem of locating maintenance facilities in a railway setting. Different facility sizes can be chosen for each candidate location and for each size there is an associated annual facility costs that can capture economies of scale in facility size. Because of the strategic nature of facility location, the opened facilities should be able to handle the current maintenance demand, but also the demand for any of the scenarios that can occur in the future. These scenarios capture changes such as changes to the line plan and the introduction of new rolling stock types. We allow recovery in the form of opening additional facilities, closing facilities, and increasing the facility size for each scenario. We provide a two-stage robust programming formulation. In the first-stage, we decide where to open what size of facility. In the second-stage, we solve a NP-hard maintenance location routing problem. We reformulate the problem as a mixed integer program that can be used to make an efficient column-and-constraint generation algorithm. To show that our algorithm works on practical sized instances, and to gain managerial insights, we perform a case study with instances from the Netherlands Railways. A counter intuitive insight is that economies of scale only play a limited role and that it is more important to reduce the transportation cost by building many small facilities, rather than a few large ones to profit from economies of scale.
- Column-and-constraint generation
- Facility location
- Maintenance routing
- Rolling stock
- Two-stage robust optimization