Open
Description
Issue
AutoFastDifferentiation is not able to deal with a NamedTuple context which could happen when the parameters of an optimization is a NamedTuple.
The error message:
ERROR: MethodError: no method matching variablize(::@NamedTuple{v1::Float64, v2::Float64}, ::Symbol)
Closest candidates are:
variablize(::AbstractArray, ::Symbol)
variablize(::Number, ::Symbol)
MWE
Example taken from Optimization.jl, and modified to have a NamedTuple as p and use AutoFastDifferentiation
using Optimization
import FastDifferentiation
rosenbrock(u, p) = (p.v1 - u[1])^2 + p.v2 * (u[2] - u[1]^2)^2
u0 = zeros(2)
p = (v1=1.0, v2=100.0)
optf = OptimizationFunction(rosenbrock, AutoFastDifferentiation())
prob = OptimizationProblem(optf, u0, p)
sol = solve(prob, Optimization.LBFGS())
AutoForwardDiff works fine.