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. ↩