Hi, has anyone solved the following optimization problem: I am estimating ODE parameters (using NLopt) like param1,param2,param3
and I want to create “profiles” of each parameter. It means estimate param2
and param3
for different fixed values of param1
and plot cost_value(param1)
and the same for param2
and param3
. Of course it seems quite easy to code but I am not sure how to implement adaptive stepsize control here etc. I guess the problem is called “partial likelihood”. Has anyone seen julia tools/articles on this problem?
Let me see if I got this right. You’re optimizing param2
and param3
for given values of param1
and keeping (param1,param2,param3,cost)
to make some kind of plot (presumably using NLopt on the DiffEq tools), and you want to find out the best algorithm for picking param1
s efficiently such that you get a good graph out, calculating the values at least amount of param1
s as possible? The baseline is to just make an even grid of param1
s of course. But to get fancy, you might want to take some heuristics out of this:
https://github.com/JuliaPlots/Plots.jl/issues/621
and maybe those can help you identify the portions of the likelihood that are more prone to change and reduce the number of required param1
s by focusing on specific areas.
Chris, thanks for you response!
In general this method is called “Profile likelihood” and it is one of the approaches of identifiability analysis of ODE (or any Dynamical model) parameters.
The idea of the method is to re-optimize the problem fixing the values of one of the parameters (ex, param1
) and to plot best_cost(param1)
to say smth about sensitivity and identifiability of param1
.
It is described in a number of articles:
And one of the algorithm used is described in the supplementary materials of this article.
The authors implemented this approach in the following matlab tool:
The main question as you have mentioned is the right choice of param1s
because each optimization is computationally “expensive”.
I ll try to figure out if adaptive plotting can help here.
If our optimization pkgs have optimizers which include this functionality please let me know)
@ChrisRackauckas thanks a lot for the link, adapted_grid
from PlotUtils is a great solution here