Hy !
I had written a Git issue a few months ago ( Add a findfit function · Issue #220 · SciML/DiffEqParamEstim.jl (github.com)) on this subject but having had no response I take the liberty of making a post here.
Since the package DiffEqParamEstim.jl is defined as "a simple interface for users who want to quickly run standard parameter estimation routines for model calibration ", it would be interesting to add a findfit
function on the model of the homonymous functions in Wolfram Mathematica (FindFit: Find parameters to best fit data—Wolfram Documentation ; Fitting system of Differential equations to a dataset - Online Technical Discussion Groups—Wolfram Community) or SageMath (Numerical Root Finding and Optimization - Numerical Optimization) for example. This findfit
function would combine a “generic” cost function, the definition of the OptimizationProblem
and the solving. It would greatly simplify the use of DiffEqParamEstim.jl, which is certainly very efficient for complex situations, but which is a bit of a gas factory when you only have a small ODE system to fit on data.
I’m also convinced that the varmap_to_vars
function, which is essential for combining ModelingToolkit and DiffEqParamEstim.jl, is extremely unintuitive and could be greatly improved. The documentation (Frequently Asked Questions · ModelingToolkit.jl) alone is confusing. Just one example : unless I’m mistaken, the expression
pnew = varmap_to_vars([β => 3.0, c => 10.0, γ => 2.0], parameters(sys))
su
suggests that pnew
is a new ordered version of p
, when in fact it’s a list of indices (to which Int.
must be applied to make them integer). Further down the page, the explanations “Using ModelingToolkit with Optimization / Automatic Differentiation” are also quite confusing, in my opinion.
fdekerm