@@ -9,21 +9,22 @@ import PrecompileTools: @recompile_invalidations, @compile_workload, @setup_work
9
9
10
10
@recompile_invalidations begin
11
11
using ADTypes, ConcreteStructs, DiffEqBase, FastBroadcast, FastClosures, LazyArrays,
12
- LineSearches, LinearAlgebra, LinearSolve, MaybeInplace, Preferences, Printf,
13
- SciMLBase, SimpleNonlinearSolve, SparseArrays, SparseDiffTools
12
+ LineSearches, LinearAlgebra, LinearSolve, MaybeInplace, Preferences, Printf,
13
+ SciMLBase, SimpleNonlinearSolve, SparseArrays, SparseDiffTools
14
14
15
15
import ArrayInterface: undefmatrix, can_setindex, restructure, fast_scalar_indexing
16
16
import DiffEqBase: AbstractNonlinearTerminationMode,
17
- AbstractSafeNonlinearTerminationMode, AbstractSafeBestNonlinearTerminationMode,
18
- NonlinearSafeTerminationReturnCode, get_termination_mode
17
+ AbstractSafeNonlinearTerminationMode,
18
+ AbstractSafeBestNonlinearTerminationMode,
19
+ NonlinearSafeTerminationReturnCode, get_termination_mode
19
20
import FiniteDiff
20
21
import ForwardDiff
21
22
import ForwardDiff: Dual
22
23
import LinearSolve: ComposePreconditioner, InvPreconditioner, needs_concrete_A
23
24
import RecursiveArrayTools: recursivecopy!, recursivefill!
24
25
25
26
import SciMLBase: AbstractNonlinearAlgorithm, JacobianWrapper, AbstractNonlinearProblem,
26
- AbstractSciMLOperator, NLStats, _unwrap_val, has_jac, isinplace
27
+ AbstractSciMLOperator, NLStats, _unwrap_val, has_jac, isinplace
27
28
import SparseDiffTools: AbstractSparsityDetection, AutoSparseEnzyme
28
29
import StaticArraysCore: StaticArray, SVector, SArray, MArray, Size, SMatrix, MMatrix
29
30
end
@@ -44,11 +45,13 @@ include("adtypes.jl")
44
45
include (" timer_outputs.jl" )
45
46
include (" internal/helpers.jl" )
46
47
48
+ include (" descent/common.jl" )
47
49
include (" descent/newton.jl" )
48
50
include (" descent/steepest.jl" )
49
51
include (" descent/dogleg.jl" )
50
52
include (" descent/damped_newton.jl" )
51
53
include (" descent/geodesic_acceleration.jl" )
54
+ include (" descent/multistep.jl" )
52
55
53
56
include (" internal/operators.jl" )
54
57
include (" internal/jacobian.jl" )
@@ -95,20 +98,28 @@ include("default.jl")
95
98
probs_nlls = NonlinearLeastSquaresProblem[]
96
99
nlfuncs = ((NonlinearFunction {false} ((u, p) -> (u .^ 2 .- p)[1 : 1 ]), [0.1 , 0.0 ]),
97
100
(NonlinearFunction {false} ((u, p) -> vcat (u .* u .- p, u .* u .- p)), [0.1 , 0.1 ]),
98
- (NonlinearFunction {true} ((du, u, p) -> du[1 ] = u[1 ] * u[1 ] - p,
99
- resid_prototype = zeros (1 )), [0.1 , 0.0 ]),
100
- (NonlinearFunction {true} ((du, u, p) -> du .= vcat (u .* u .- p, u .* u .- p),
101
- resid_prototype = zeros (4 )), [0.1 , 0.1 ]))
101
+ (
102
+ NonlinearFunction {true} ((du, u, p) -> du[1 ] = u[1 ] * u[1 ] - p,
103
+ resid_prototype = zeros (1 )),
104
+ [0.1 , 0.0 ]),
105
+ (
106
+ NonlinearFunction {true} ((du, u, p) -> du .= vcat (u .* u .- p, u .* u .- p),
107
+ resid_prototype = zeros (4 )),
108
+ [0.1 , 0.1 ]))
102
109
for (fn, u0) in nlfuncs
103
110
push! (probs_nlls, NonlinearLeastSquaresProblem (fn, u0, 2.0 ))
104
111
end
105
112
nlfuncs = ((NonlinearFunction {false} ((u, p) -> (u .^ 2 .- p)[1 : 1 ]), Float32[0.1 , 0.0 ]),
106
113
(NonlinearFunction {false} ((u, p) -> vcat (u .* u .- p, u .* u .- p)),
107
114
Float32[0.1 , 0.1 ]),
108
- (NonlinearFunction {true} ((du, u, p) -> du[1 ] = u[1 ] * u[1 ] - p,
109
- resid_prototype = zeros (Float32, 1 )), Float32[0.1 , 0.0 ]),
110
- (NonlinearFunction {true} ((du, u, p) -> du .= vcat (u .* u .- p, u .* u .- p),
111
- resid_prototype = zeros (Float32, 4 )), Float32[0.1 , 0.1 ]))
115
+ (
116
+ NonlinearFunction {true} ((du, u, p) -> du[1 ] = u[1 ] * u[1 ] - p,
117
+ resid_prototype = zeros (Float32, 1 )),
118
+ Float32[0.1 , 0.0 ]),
119
+ (
120
+ NonlinearFunction {true} ((du, u, p) -> du .= vcat (u .* u .- p, u .* u .- p),
121
+ resid_prototype = zeros (Float32, 4 )),
122
+ Float32[0.1 , 0.1 ]))
112
123
for (fn, u0) in nlfuncs
113
124
push! (probs_nlls, NonlinearLeastSquaresProblem (fn, u0, 2.0f0 ))
114
125
end
@@ -132,18 +143,18 @@ end
132
143
export NewtonRaphson, PseudoTransient, Klement, Broyden, LimitedMemoryBroyden, DFSane
133
144
export GaussNewton, LevenbergMarquardt, TrustRegion
134
145
export NonlinearSolvePolyAlgorithm,
135
- RobustMultiNewton, FastShortcutNonlinearPolyalg, FastShortcutNLLSPolyalg
146
+ RobustMultiNewton, FastShortcutNonlinearPolyalg, FastShortcutNLLSPolyalg
136
147
137
148
# Extension Algorithms
138
149
export LeastSquaresOptimJL, FastLevenbergMarquardtJL, CMINPACK, NLsolveJL,
139
- FixedPointAccelerationJL, SpeedMappingJL, SIAMFANLEquationsJL
150
+ FixedPointAccelerationJL, SpeedMappingJL, SIAMFANLEquationsJL
140
151
141
152
# Advanced Algorithms -- Without Bells and Whistles
142
153
export GeneralizedFirstOrderAlgorithm, ApproximateJacobianSolveAlgorithm, GeneralizedDFSane
143
154
144
155
# Descent Algorithms
145
156
export NewtonDescent, SteepestDescent, Dogleg, DampedNewtonDescent,
146
- GeodesicAcceleration
157
+ GeodesicAcceleration
147
158
148
159
# Globalization
149
160
# # Line Search Algorithms
@@ -153,9 +164,9 @@ export RadiusUpdateSchemes
153
164
154
165
# Export the termination conditions from DiffEqBase
155
166
export SteadyStateDiffEqTerminationMode, SimpleNonlinearSolveTerminationMode,
156
- NormTerminationMode, RelTerminationMode, RelNormTerminationMode, AbsTerminationMode,
157
- AbsNormTerminationMode, RelSafeTerminationMode, AbsSafeTerminationMode,
158
- RelSafeBestTerminationMode, AbsSafeBestTerminationMode
167
+ NormTerminationMode, RelTerminationMode, RelNormTerminationMode, AbsTerminationMode,
168
+ AbsNormTerminationMode, RelSafeTerminationMode, AbsSafeTerminationMode,
169
+ RelSafeBestTerminationMode, AbsSafeBestTerminationMode
159
170
160
171
# Tracing Functionality
161
172
export TraceAll, TraceMinimal, TraceWithJacobianConditionNumber
0 commit comments