ULSAlgorithms intentionally exposes multiple historically important exact implementations instead of replacing older algorithms with the newest one.
This is the transparent classical shortest-path dynamic program.
Reference:
H. M. Wagner and T. M. Whitin (1958), Dynamic Version of the Economic Lot Size Model, Management Science 5(1), 89-96. DOI: https://doi.org/10.1287/mnsc.5.1.89
Evans recognized that the Wagner-Whitin recurrence can be evaluated without materializing the complete regeneration-cost matrix. Candidate interval costs are updated incrementally as the horizon is extended.
Reference:
J. R. Evans (1985), An Efficient Implementation of the Wagner-Whitin Algorithm for Dynamic Lot-Sizing, Journal of Operations Management 5(2), 229-235. DOI: https://doi.org/10.1016/0272-6963(85)90009-9
Evans describes the algorithm as a shortest-path computation on an acyclic network and emphasizes low core-storage requirements. The C# implementation uses the same low-storage recurrence, adapted to contiguous arrays and ArrayPool<T>.
This is the high-performance implementation introduced in ULSAlgorithms 0.3.0.
Reference:
A. Wagelmans, S. van Hoesel and A. Kolen (1992), Economic Lot Sizing: An O(n log n) Algorithm That Runs in Linear Time in the Wagner-Whitin Case, Operations Research 40(S1), S145-S156. DOI: https://doi.org/10.1287/opre.40.1.S145
The library has both scientific and computational goals. Keeping all three implementations makes it possible to:
The test suite performs:
The benchmark project compares all three implementations on identical Wagner-Whitin instances.