I am currently using scipy’s differential_evolution() which has the option (vectorized=True) to pass the n_variables * n_population_size matrix (in my case around 20 x 200) to the objective function once pee iteration . This allows me to vectorize the math (numba/numpy) and get very good performance, around 50ms per iteration. This ends up being faster than using multiprocessing and dispatching individual solution vectors to multiple cores due to the overheads involved (considering the relatively cheap cost function).
I am currently using scipy’s differential_evolution() which has the option (vectorized=True) to pass the n_variables * n_population_size matrix (in my case around 20 x 200) to the objective function once pee iteration . This allows me to vectorize the math (numba/numpy) and get very good performance, around 50ms per iteration. This ends up being faster than using multiprocessing and dispatching individual solution vectors to multiple cores due to the overheads involved (considering the relatively cheap cost function).