Skip to content

AutoFastDifferentiation not working with NamedTuple context #775

@pitx-perf

Description

@pitx-perf

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    backendRelated to one or more autodiff backends

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions