@@ -53,85 +53,91 @@ promote_objtype(method::ZerothOrderOptimizer, x, autodiff::Symbol, inplace::Bool
5353promote_objtype (method:: FirstOrderOptimizer , x, autodiff:: Symbol , inplace:: Bool , td:: TwiceDifferentiable ) = td
5454promote_objtype (method:: SecondOrderOptimizer , x, autodiff:: Symbol , inplace:: Bool , td:: TwiceDifferentiable ) = td
5555
56+ for optimize in [:optimize , :optimizing ]
57+ @eval begin
58+
5659# if no method or options are present
57- function optimize (f, initial_x:: AbstractArray ; inplace = true , autodiff = :finite , kwargs... )
60+ function $ optimize (f, initial_x:: AbstractArray ; inplace = true , autodiff = :finite , kwargs... )
5861 method = fallback_method (f)
5962 checked_kwargs, method = check_kwargs (kwargs, method)
6063 d = promote_objtype (method, initial_x, autodiff, inplace, f)
6164 add_default_opts! (checked_kwargs, method)
6265
6366 options = Options (; checked_kwargs... )
64- optimize (d, initial_x, method, options)
67+ $ optimize (d, initial_x, method, options)
6568end
66- function optimize (f, g, initial_x:: AbstractArray ; inplace = true , autodiff = :finite , kwargs... )
69+ function $ optimize (f, g, initial_x:: AbstractArray ; inplace = true , autodiff = :finite , kwargs... )
6770
6871 method = fallback_method (f, g)
6972 checked_kwargs, method = check_kwargs (kwargs, method)
7073 d = promote_objtype (method, initial_x, autodiff, inplace, f, g)
7174 add_default_opts! (checked_kwargs, method)
7275
7376 options = Options (; checked_kwargs... )
74- optimize (d, initial_x, method, options)
77+ $ optimize (d, initial_x, method, options)
7578end
76- function optimize (f, g, h, initial_x:: AbstractArray ; inplace = true , autodiff = :finite , kwargs... )
79+ function $ optimize (f, g, h, initial_x:: AbstractArray ; inplace = true , autodiff = :finite , kwargs... )
7780
7881 method = fallback_method (f, g, h)
7982 checked_kwargs, method = check_kwargs (kwargs, method)
8083 d = promote_objtype (method, initial_x, autodiff, inplace, f, g, h)
8184 add_default_opts! (checked_kwargs, method)
8285
8386 options = Options (; checked_kwargs... )
84- optimize (d, initial_x, method, options)
87+ $ optimize (d, initial_x, method, options)
8588end
8689
8790# no method supplied with objective
88- function optimize (d:: T , initial_x:: AbstractArray , options:: Options ) where T<: AbstractObjective
89- optimize (d, initial_x, fallback_method (d), options)
91+ function $ optimize (d:: T , initial_x:: AbstractArray , options:: Options ) where T<: AbstractObjective
92+ $ optimize (d, initial_x, fallback_method (d), options)
9093end
9194# no method supplied with inplace and autodiff keywords becauase objective is not supplied
92- function optimize (f, initial_x:: AbstractArray , options:: Options ; inplace = true , autodiff = :finite )
95+ function $ optimize (f, initial_x:: AbstractArray , options:: Options ; inplace = true , autodiff = :finite )
9396 method = fallback_method (f)
9497 d = promote_objtype (method, initial_x, autodiff, inplace, f)
95- optimize (d, initial_x, method, options)
98+ $ optimize (d, initial_x, method, options)
9699end
97- function optimize (f, g, initial_x:: AbstractArray , options:: Options ; inplace = true , autodiff = :finite )
100+ function $ optimize (f, g, initial_x:: AbstractArray , options:: Options ; inplace = true , autodiff = :finite )
98101
99102 method = fallback_method (f, g)
100103 d = promote_objtype (method, initial_x, autodiff, inplace, f, g)
101- optimize (d, initial_x, method, options)
104+ $ optimize (d, initial_x, method, options)
102105end
103- function optimize (f, g, h, initial_x:: AbstractArray{T} , options:: Options ; inplace = true , autodiff = :finite ) where {T}
106+ function $ optimize (f, g, h, initial_x:: AbstractArray{T} , options:: Options ; inplace = true , autodiff = :finite ) where {T}
104107
105108 method = fallback_method (f, g, h)
106109 d = promote_objtype (method, initial_x, autodiff, inplace, f, g, h)
107110
108- optimize (d, initial_x, method, options)
111+ $ optimize (d, initial_x, method, options)
109112end
110113
111114# potentially everything is supplied (besides caches)
112- function optimize (f, initial_x:: AbstractArray , method:: AbstractOptimizer ,
115+ function $ optimize (f, initial_x:: AbstractArray , method:: AbstractOptimizer ,
113116 options:: Options = Options (;default_options (method)... ); inplace = true , autodiff = :finite )
114117
115118 d = promote_objtype (method, initial_x, autodiff, inplace, f)
116- optimize (d, initial_x, method, options)
119+ $ optimize (d, initial_x, method, options)
117120end
118- function optimize (f, g, initial_x:: AbstractArray , method:: AbstractOptimizer ,
121+ function $ optimize (f, g, initial_x:: AbstractArray , method:: AbstractOptimizer ,
119122 options:: Options = Options (;default_options (method)... ); inplace = true , autodiff = :finite )
120123
121124 d = promote_objtype (method, initial_x, autodiff, inplace, f, g)
122125
123- optimize (d, initial_x, method, options)
126+ $ optimize (d, initial_x, method, options)
124127end
125- function optimize (f, g, h, initial_x:: AbstractArray{T} , method:: AbstractOptimizer ,
128+ function $ optimize (f, g, h, initial_x:: AbstractArray{T} , method:: AbstractOptimizer ,
126129 options:: Options = Options (;default_options (method)... ); inplace = true , autodiff = :finite ) where T
127130
128131 d = promote_objtype (method, initial_x, autodiff, inplace, f, g, h)
129132
130- optimize (d, initial_x, method, options)
133+ $ optimize (d, initial_x, method, options)
131134end
132135
133- function optimize (d:: D , initial_x:: AbstractArray , method:: SecondOrderOptimizer ,
136+ function $ optimize (d:: D , initial_x:: AbstractArray , method:: SecondOrderOptimizer ,
134137 options:: Options = Options (;default_options (method)... ); autodiff = :finite , inplace = true ) where {D <: Union{NonDifferentiable, OnceDifferentiable} }
135138 d = promote_objtype (method, initial_x, autodiff, inplace, d)
136- optimize (d, initial_x, method, options)
139+ $ optimize (d, initial_x, method, options)
137140end
141+
142+ end # eval
143+ end # for
0 commit comments