I work with non-linear models that need to be calibrated to match data moments. The setup is simple. I have a function that takes a set of parameters as input (for example, a vector of floats), solves the model, and returns a measure of the distance between the model-generated moments and the data moments. Typically there are more moments than parameters. Hence, I use some simple weighting function to summarize the differences between model and data moments into one float. The objective is to minimize this distance.
Relevant for this problem:
- Each parameter needs to lie within a given interval.
- It is time-consuming to solve the model (it can take from several minutes to several hours).
My usual approach was to code the function that simulates the model in Fortran and then use MatLab’s genetic algorithm or direct search to find the parameters that minimize the distance between the model and data moments. The good thing about that approach is that it was incredibly easy to parallelize the MatLab optimization. I would like to do everything in Julia now.
I have looked at different options:
-
Optim
package. I think I could use the Nelder-Mead algorithm but I’m not sure if it’s possible/how to specify intervals for the parameters. -
JuMP
package. Not sure if there is an option that could work for my case.
I appreciate any suggestion.
Thanks.