|
| 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 | +""" |
1 | 17 | 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 | + """ |
2 | 26 | 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 | + """ |
3 | 36 | 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 | + """ |
4 | 46 | 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 | + """ |
5 | 57 | 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 | + """ |
6 | 66 | Fan
|
7 | 67 | end
|
8 | 68 |
|
|
0 commit comments