Software Design and the PATH Preprocessor
Description
PATH is a nonsmooth Newton method for solving nonlinear complementarity problems, which have many applications in economics and engineering. This general-purpose code is capable of solving problem instances generated by non-expert users within algebraic modeling languages, such as AMPL and GAMS. To improve reliability on difficult problems, many algorithmic enhancements have been incorporated into the code. One key enhancement is the preprocessor that automatically applies a series of reductions to a given problem to produce a more compact problem that is usually easier to solve. The preprocessor implementation, however, is complex and accounts for roughly 25\% of the entire PATH code. The software design process for the PATH preprocessor is described in this report, which starts from a mathematical analysis that identifies the reductions that can be applied to generic problems, the reductions then dictate the requirements for data structures and algorithms, and an extensible implementation follows. A discussion of the limitations in the reductions that can be easily implemented and the difficulty of designing a comprehensive testing plan due to the software design choices is provided. While the implementation of the PATH preprocessor satisfies the requirements and is functional, greater emphasis on extensibility, testability, and maintainbility during the software design might have helped to lessen these limitations.
Files
PATH_White_Paper_Collegeville_Workshop_2022-2.pdf
Files
(193.5 kB)
Name | Size | Download all |
---|---|---|
md5:e02c57256b02b35f2357006fd45d1506
|
193.5 kB | Preview Download |