using Pkg; Pkg.add("Progradio")where x_0::Vector and an in-place gradient function g!, the problem is defined as:
up = UProblem(x_0, f, g!);where ℓ::Vector and u::Vector, the problem is defined as:
bcp = BCProblem(x_0, ℓ, u, f, g!);where S::BitSet, the problem is defined as:
sbcp = SBCProblem(x_0, S, ℓ, u, f, g!);| Direction\Search | Armijo() |
Wolfe()1 |
TrustRegion() |
|---|---|---|---|
SteepestDescent() |
♾️📦📐2 | ♾️📦 | - |
ConjugateGradient() |
♾️📦 | ♾️📦 | - |
QuasiNewton() |
- | - | - |
Newton() |
- | - | - |
Recommended usage with solve()
# Problem
bcp = BCProblem(x_0, ℓ, u, f, g!);
# Solve
solve(bcp, SteepestDescent(), Armijo())Advanced usage with Iterator
# Iterator
iterator = Iterator(bcp, SteepestDescent(), Armijo());
# Iterate
collect(iterator)Footnotes
-
M. W. Ferry, P. E. Gill, E. Wong, and M. Zhang, "A class of projected-search methods for boundconstrained optimization", Center for Computational Mathematics Report CCoM, pp. 20–07, 2020. ↩
-
D. P. Bertsekas, "Projected Newton methods for optimization problems with simple constraints", SIAM Journal on Control and Optimization, Vol. 20, pp.221-246, 1982. ↩