Skip to content
This repository was archived by the owner on May 15, 2025. It is now read-only.

Commit 26f7d86

Browse files
TrustRegion -> SimpleTrustRegion and specialize the number types
1 parent 2b4cfa5 commit 26f7d86

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

src/trustRegion.jl

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""
22
```julia
3-
TrustRegion(max_trust_radius::Number; chunk_size = Val{0}(),
3+
SimpleTrustRegion(max_trust_radius::Number; chunk_size = Val{0}(),
44
autodiff = Val{true}(), diff_type = Val{:forward})
55
```
66
@@ -49,16 +49,16 @@ solver
4949
- `max_shrink_times`: the maximum number of times to shrink the trust region radius in a
5050
row, `max_shrink_times` is exceeded, the algorithm returns. Defaults to `32`.
5151
"""
52-
struct TrustRegion{CS, AD, FDT} <: AbstractNewtonAlgorithm{CS, AD, FDT}
53-
max_trust_radius::Number
54-
initial_trust_radius::Number
55-
step_threshold::Number
56-
shrink_threshold::Number
57-
expand_threshold::Number
58-
shrink_factor::Number
59-
expand_factor::Number
52+
struct SimpleTrustRegion{T, CS, AD, FDT} <: AbstractNewtonAlgorithm{CS, AD, FDT}
53+
max_trust_radius::T
54+
initial_trust_radius::T
55+
step_threshold::T
56+
shrink_threshold::T
57+
expand_threshold::T
58+
shrink_factor::T
59+
expand_factor::T
6060
max_shrink_times::Int
61-
function TrustRegion(max_trust_radius::Number; chunk_size = Val{0}(),
61+
function SimpleTrustRegion(max_trust_radius::Number; chunk_size = Val{0}(),
6262
autodiff = Val{true}(),
6363
diff_type = Val{:forward},
6464
initial_trust_radius::Number = max_trust_radius / 11,
@@ -68,8 +68,9 @@ struct TrustRegion{CS, AD, FDT} <: AbstractNewtonAlgorithm{CS, AD, FDT}
6868
shrink_factor::Number = 0.25,
6969
expand_factor::Number = 2.0,
7070
max_shrink_times::Int = 32)
71-
new{SciMLBase._unwrap_val(chunk_size), SciMLBase._unwrap_val(autodiff),
72-
SciMLBase._unwrap_val(diff_type)}(max_trust_radius, initial_trust_radius,
71+
new{typeof(initial_trust_radius), SciMLBase._unwrap_val(chunk_size),
72+
SciMLBase._unwrap_val(autodiff), SciMLBase._unwrap_val(diff_type)}(
73+
max_trust_radius, initial_trust_radius,
7374
step_threshold,
7475
shrink_threshold, expand_threshold,
7576
shrink_factor,
@@ -78,7 +79,7 @@ struct TrustRegion{CS, AD, FDT} <: AbstractNewtonAlgorithm{CS, AD, FDT}
7879
end
7980

8081
function SciMLBase.__solve(prob::NonlinearProblem,
81-
alg::TrustRegion, args...; abstol = nothing,
82+
alg::SimpleTrustRegion, args...; abstol = nothing,
8283
reltol = nothing,
8384
maxiters = 1000, kwargs...)
8485
f = Base.Fix2(prob.f, prob.p)

0 commit comments

Comments
 (0)