Skip to content

Commit cb80ed2

Browse files
Merge pull request #199 from yash2798/ys/rad_updt
Added documentation for Trust region radius update schemes
2 parents 37f92e3 + 24fcd98 commit cb80ed2

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed

docs/src/api/nonlinearsolve.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,19 @@ These are the native solvers of NonlinearSolve.jl.
88
NewtonRaphson
99
TrustRegion
1010
```
11+
12+
## Radius Update Schemes for Trust Region (RadiusUpdateSchemes)
13+
14+
```@docs
15+
RadiusUpdateSchemes
16+
```
17+
18+
### Available Radius Update Schemes
19+
20+
```@docs
21+
RadiusUpdateSchemes.Simple
22+
RadiusUpdateSchemes.Hei
23+
RadiusUpdateSchemes.Yuan
24+
RadiusUpdateSchemes.Bastin
25+
RadiusUpdateSchemes.Fan
26+
```

src/trustRegion.jl

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,68 @@
1+
"""
2+
`RadiusUpdateSchemes`
3+
4+
`RadiusUpdateSchemes` is the standard enum interface for different types of radius update schemes
5+
implemented in the Trust Region method. These schemes specify how the radius of the so-called trust region
6+
is updated after each iteration of the algorithm. The specific role and caveats associated with each
7+
scheme are provided below.
8+
9+
## Using `RadiusUpdateSchemes`
10+
11+
`RadiusUpdateSchemes` uses the standard EnumX interface (https://github.com/fredrikekre/EnumX.jl),
12+
and hence inherits all properties of being an EnumX, including the type of each constituent enum
13+
states as `RadiusUpdateSchemes.T`. Simply put the desired scheme as follows:
14+
`TrustRegion(radius_update_scheme = your desired update scheme)`. For example,
15+
`sol = solve(prob, alg=TrustRegion(radius_update_scheme = RadiusUpdateSchemes.Hei))`.
16+
"""
117
EnumX.@enumx RadiusUpdateSchemes begin
18+
"""
19+
`RadiusUpdateSchemes.Simple`
20+
21+
The simple or conventional radius update scheme. This scheme is chosen by default
22+
and follows the conventional approach to update the trust region radius, i.e. if the
23+
trial step is accepted it increases the radius by a fixed factor (bounded by a maximum radius)
24+
and if the trial step is rejected, it shrinks the radius by a fixed factor.
25+
"""
226
Simple
27+
28+
"""
29+
`RadiusUpdateSchemes.Hei`
30+
31+
This scheme is proposed by [Hei, L.] (https://www.jstor.org/stable/43693061). The trust region radius
32+
depends on the size (norm) of the current step size. The hypothesis is to let the radius converge to zero
33+
as the iterations progress, which is more reliable and robust for ill-conditioned as well as degenerate
34+
problems.
35+
"""
336
Hei
37+
38+
"""
39+
`RadiusUpdateSchemes.Yuan`
40+
41+
This scheme is proposed by [Yuan, Y.] (https://www.researchgate.net/publication/249011466_A_new_trust_region_algorithm_with_trust_region_radius_converging_to_zero).
42+
Similar to Hei's scheme, the trust region is updated in a way so that it converges to zero, however here,
43+
the radius depends on the size (norm) of the current gradient of the objective (merit) function. The hypothesis
44+
is that the step size is bounded by the gradient size, so it makes sense to let the radius depend on the gradient.
45+
"""
446
Yuan
47+
48+
"""
49+
`RadiusUpdateSchemes.Bastin`
50+
51+
This scheme is proposed by [Bastin, et al.] (https://www.researchgate.net/publication/225100660_A_retrospective_trust-region_method_for_unconstrained_optimization).
52+
The scheme is called a retrospective update scheme as it uses the model function at the current
53+
iteration to compute the ratio of the actual reduction and the predicted reduction in the previous
54+
trial step, and use this ratio to update the trust region radius. The hypothesis is to exploit the information
55+
made available during the optimization process in order to vary the accuracy of the objective function computation.
56+
"""
557
Bastin
58+
59+
"""
60+
`RadiusUpdateSchemes.Fan`
61+
62+
This scheme is proposed by [Fan, J.] (https://link.springer.com/article/10.1007/s10589-005-3078-8). It is very much similar to
63+
Hei's and Yuan's schemes as it lets the trust region radius depend on the current size (norm) of the objective (merit)
64+
function itself. These new update schemes are known to improve local convergence.
65+
"""
666
Fan
767
end
868

0 commit comments

Comments
 (0)