An implementation of Algorithm NCL in pure Julia. NCL currently supports the following subproblem solvers:
The data folder contains several of the original tax models in AMPL format that can be read with AmplNLReader.
Any model complying with the NLPModels API can be passed to the NCL solver, e.g., those from the CUTEst collection, or the pure Julia models of OptimizationProblems.jl.
The solver is still work in progress but is functional.
Our first NCL solver was written directly in the AMPL scripting language and was restricted to solving the tax problems. It is available from https://github.com/optimizers/ncl.
- Ma, D., Judd, K., Orban, D., & Saunders, M. (2018). Stabilized optimization via an NCL algorithm. In M. Al-Baali, L. Grandinetti, & A. Purnama (Eds.), Numerical Analysis and Optimization (Vol. 235, pp. 173–191). Switzerland: Springer International Publishing.
- Ma, D., Orban, D., & Saunders, M.A. (2021). A Julia Implementation of Algorithm NCL for Constrained Optimization. In: Al-Baali, M., Purnama, A., Grandinetti, L. (eds) Numerical Analysis and Optimization. NAO 2020. Springer Proceedings in Mathematics & Statistics, vol 354. Springer, Cham.
- Ma, D., Orban, D. & Saunders, M.A. (2025). Solving Algorithm NCL’s Subproblems: The Need for Interior Methods. Vietnam J. Math. 53, 915–919.
- Several talks by Michael A. Saunders: https://stanford.edu/group/SOL/publications_talks.html