@@ -31,7 +31,7 @@ using LinearAlgebra: LinearAlgebra, ColumnNorm, Diagonal, I, LowerTriangular, Sy
31
31
UpperTriangular, axpy!, cond, diag, diagind, dot, issuccess, istril,
32
32
istriu, lu, mul!, norm, pinv, tril!, triu!
33
33
using LineSearch: LineSearch, AbstractLineSearchAlgorithm, AbstractLineSearchCache,
34
- NoLineSearch
34
+ NoLineSearch, RobustNonMonotoneLineSearch
35
35
using LineSearches: LineSearches
36
36
using LinearSolve: LinearSolve, LUFactorization, QRFactorization, ComposePreconditioner,
37
37
InvPreconditioner, needs_concrete_A, AbstractFactorization,
@@ -105,54 +105,54 @@ include("algorithms/extension_algs.jl")
105
105
include (" utils.jl" )
106
106
include (" default.jl" )
107
107
108
- # @setup_workload begin
109
- # nlfuncs = ((NonlinearFunction{false}((u, p) -> u .* u .- p), 0.1),
110
- # (NonlinearFunction{true}((du, u, p) -> du .= u .* u .- p), [0.1]))
111
- # probs_nls = NonlinearProblem[]
112
- # for (fn, u0) in nlfuncs
113
- # push!(probs_nls, NonlinearProblem(fn, u0, 2.0))
114
- # end
115
-
116
- # nls_algs = (NewtonRaphson(), TrustRegion(), LevenbergMarquardt(),
117
- # PseudoTransient(), Broyden(), Klement(), DFSane(), nothing)
118
-
119
- # probs_nlls = NonlinearLeastSquaresProblem[]
120
- # nlfuncs = ((NonlinearFunction{false}((u, p) -> (u .^ 2 .- p)[1:1]), [0.1, 0.0]),
121
- # (NonlinearFunction{false}((u, p) -> vcat(u .* u .- p, u .* u .- p)), [0.1, 0.1]),
122
- # (
123
- # NonlinearFunction{true}(
124
- # (du, u, p) -> du[1] = u[1] * u[1] - p, resid_prototype = zeros(1)),
125
- # [0.1, 0.0]),
126
- # (
127
- # NonlinearFunction{true}((du, u, p) -> du .= vcat(u .* u .- p, u .* u .- p),
128
- # resid_prototype = zeros(4)),
129
- # [0.1, 0.1]))
130
- # for (fn, u0) in nlfuncs
131
- # push!(probs_nlls, NonlinearLeastSquaresProblem(fn, u0, 2.0))
132
- # end
133
-
134
- # nlls_algs = (LevenbergMarquardt(), GaussNewton(), TrustRegion(),
135
- # LevenbergMarquardt(; linsolve = LUFactorization()),
136
- # GaussNewton(; linsolve = LUFactorization()),
137
- # TrustRegion(; linsolve = LUFactorization()), nothing)
138
-
139
- # @compile_workload begin
140
- # @sync begin
141
- # for T in (Float32, Float64), (fn, u0) in nlfuncs
142
- # Threads.@spawn NonlinearProblem(fn, T.(u0), T(2))
143
- # end
144
- # for (fn, u0) in nlfuncs
145
- # Threads.@spawn NonlinearLeastSquaresProblem(fn, u0, 2.0)
146
- # end
147
- # for prob in probs_nls, alg in nls_algs
148
- # Threads.@spawn solve(prob, alg; abstol = 1e-2, verbose = false)
149
- # end
150
- # for prob in probs_nlls, alg in nlls_algs
151
- # Threads.@spawn solve(prob, alg; abstol = 1e-2, verbose = false)
152
- # end
153
- # end
154
- # end
155
- # end
108
+ @setup_workload begin
109
+ nlfuncs = ((NonlinearFunction {false} ((u, p) -> u .* u .- p), 0.1 ),
110
+ (NonlinearFunction {true} ((du, u, p) -> du .= u .* u .- p), [0.1 ]))
111
+ probs_nls = NonlinearProblem[]
112
+ for (fn, u0) in nlfuncs
113
+ push! (probs_nls, NonlinearProblem (fn, u0, 2.0 ))
114
+ end
115
+
116
+ nls_algs = (NewtonRaphson (), TrustRegion (), LevenbergMarquardt (),
117
+ PseudoTransient (), Broyden (), Klement (), DFSane (), nothing )
118
+
119
+ probs_nlls = NonlinearLeastSquaresProblem[]
120
+ nlfuncs = ((NonlinearFunction {false} ((u, p) -> (u .^ 2 .- p)[1 : 1 ]), [0.1 , 0.0 ]),
121
+ (NonlinearFunction {false} ((u, p) -> vcat (u .* u .- p, u .* u .- p)), [0.1 , 0.1 ]),
122
+ (
123
+ NonlinearFunction {true} (
124
+ (du, u, p) -> du[1 ] = u[1 ] * u[1 ] - p, resid_prototype = zeros (1 )),
125
+ [0.1 , 0.0 ]),
126
+ (
127
+ NonlinearFunction {true} ((du, u, p) -> du .= vcat (u .* u .- p, u .* u .- p),
128
+ resid_prototype = zeros (4 )),
129
+ [0.1 , 0.1 ]))
130
+ for (fn, u0) in nlfuncs
131
+ push! (probs_nlls, NonlinearLeastSquaresProblem (fn, u0, 2.0 ))
132
+ end
133
+
134
+ nlls_algs = (LevenbergMarquardt (), GaussNewton (), TrustRegion (),
135
+ LevenbergMarquardt (; linsolve = LUFactorization ()),
136
+ GaussNewton (; linsolve = LUFactorization ()),
137
+ TrustRegion (; linsolve = LUFactorization ()), nothing )
138
+
139
+ @compile_workload begin
140
+ @sync begin
141
+ for T in (Float32, Float64), (fn, u0) in nlfuncs
142
+ Threads. @spawn NonlinearProblem (fn, T .(u0), T (2 ))
143
+ end
144
+ for (fn, u0) in nlfuncs
145
+ Threads. @spawn NonlinearLeastSquaresProblem (fn, u0, 2.0 )
146
+ end
147
+ for prob in probs_nls, alg in nls_algs
148
+ Threads. @spawn solve (prob, alg; abstol = 1e-2 , verbose = false )
149
+ end
150
+ for prob in probs_nlls, alg in nlls_algs
151
+ Threads. @spawn solve (prob, alg; abstol = 1e-2 , verbose = false )
152
+ end
153
+ end
154
+ end
155
+ end
156
156
157
157
# Core Algorithms
158
158
export NewtonRaphson, PseudoTransient, Klement, Broyden, LimitedMemoryBroyden, DFSane
@@ -172,8 +172,9 @@ export NewtonDescent, SteepestDescent, Dogleg, DampedNewtonDescent, GeodesicAcce
172
172
173
173
# Globalization
174
174
# # Line Search Algorithms
175
- export LineSearchesJL, NoLineSearch, RobustNonMonotoneLineSearch, LiFukushimaLineSearch
176
- export Static, HagerZhang, MoreThuente, StrongWolfe, BackTracking
175
+ export LineSearchesJL, LiFukushimaLineSearch # FIXME : deprecated. use LineSearch.jl directly
176
+ export Static, HagerZhang, MoreThuente, StrongWolfe, BackTracking # FIXME : deprecated
177
+ export NoLineSearch, RobustNonMonotoneLineSearch
177
178
# # Trust Region Algorithms
178
179
export RadiusUpdateSchemes
179
180
0 commit comments