In the previous post, we took a loot at how the NODDIx model could be made faster with Cython. In this post, we will take a look at how we need to set up the differential evolution with for optimizing and finding the minima for the parameters of the NODDIx model. The code to this function can be found at the branch here: https://github.com/ShreyasFadnavis/dipy/tree/noddix_speed .
In this post I will be explaining about how Differential Evolution works and in what context we have used it for optimization:
Setting the Parameters in SciPy for Differential Evolution Optimization:
On evaluating this, we see that the NODDIx model converges in 81 steps within 6 seconds approximately when f(x) = 1.10912e-07
The accuracy we get is:
References: . Differential Evolution: A Practical Approach to Global Optimization https://www.springer.com/us/book/9783540209508 . Numerical optimization by differential evolution https://www.youtube.com/watch?v=UZGiapWcoA4&t=2151s