Hi everyone,
We are having some issues when setting the maximum number of iterations for the differential evolution algorithm. So far we discovered that setting a maximum only works via max_nfev and not via maxiter. However we still have a hard stop at 1000 iterations of the differential evolution algorithm.
Example:
minner1 = Minimizer(func, params, fcn_args=(args))
result1 = minner1.minimize(method='differential_evolution',disp=True, popsize = 10 ,tol = 10**-100, max_nfev= 10000000)
When we execute this we get the following output:
differential_evolution step 1: f(x)= 2.90649e+07
differential_evolution step 2: f(x)= 168681
differential_evolution step 3: f(x)= 40888.4
...
differential_evolution step 1000: f(x)= 10.1097
{'args': (), 'strategy': 'best1bin', 'maxiter': None, 'popsize': 10, 'tol': 1e-100, 'mutation': (0.5, 1), 'recombination': 0.7, 'seed': None, 'callback': None, 'disp': True, 'polish': True, 'init': 'latinhypercube', 'atol': 0, 'updating': 'immediate', 'workers': 1}
[[Fit Statistics]]
# fitting method = differential_evolution
# function evals = 30090
In the above example you can see that we set a very high number of maximum function evaluations and a tolerance below machine precision. Yet, the algorithm still stop at 1000 iterations, while the number of function evaluations (30090) is still way below the limit (10000000).
What should we change if we want do more than 1000 iterations of the differential evolution algorithm?
Kind regards,
Olivier