The problem of assigning locomotives to trains consists of selecting the types and number of engines that minimize the fixed and operational locomotive costs resulting from providing sufficient power to pull trains on fixed schedules. The force required to pull a train is often expressed in terms of horsepower and tonnage requirements rather than in terms of number of engines. This complicates the solution process of the integer programming formulation and usually creates a large integrality gap. Furthermore, the solution of the linearly relaxed problem is strongly fractional.
To obtain integer solutions, we propose a novel branch-and-cut approach. The core of the method consists of branching decisions that define on one branch the projection of the problem on a low-dimensional subspace. There, the facets of the polyhedron describing a restricted constraint set can be easily derived. We call this approach branch-first, cut-second. We first derive facets when at most two types of engines are used. We then extend the branching rule to cases involving additional locomotive types.
We have conducted computational experiments using actual data from the Canadian National railway company. Simulated test-problems involving two or more locomotive types were solved over 1-, 2-, and 3-day rolling horizons. The cuts were successful in reducing the average integrality gap by 52% for the two-type case and by 34% when more than twenty five types were used. Furthermore, the branch-first, cut-second approach was instrumental in improving the best known solution for an almost 2000-leg weekly problem involving 26 locomotive types. It reduced the number of locomotives by 11, or 1.1%, at an equivalent savings of 3,000,000$ per unit. Additional tests on different weekly data produced almost identical results.
Paru en mars 1998 , 20 pages
Ce cahier a été révisé en décembre 1998