Сам сталкивался с такой же проблемой.Поддержка параллелизма в scipy.optimize.differential_evolution была добавлена в версии 1.2.0, а версия, которая у меня была, была слишком старой.При поиске документации верхний результат также ссылался на старую версию.Вместо этого более новую документацию можно найти по адресу https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.differential_evolution.html (надеюсь, что скоро это будет лучший результат Google).
Я использую virtualenvironment и pip для управления пакетами и для обновления до последней версииscipy Мне просто нужно было запустить pip install --upgrade scipy
.
Чтобы активировать параллелизм, установите флаг workers
на что-то > 1
для определенного количества ядер или workers=-1
, чтобы использовать все доступные ядра.
Одно предостережение: не делайте ту же ошибку, что и я, и попробуйте запустить дифференциальную эволюцию непосредственно на верхнем уровне скрипта Python, тогда он не запустится (из-за того, как multiprocessing.Pool
функции, я полагаю):
import scipy.optimize
def minimize_me(x, *args):
... # Your code
return result
# DO NOT DO LIKE THIS
... # Prepare all the arguments
# This will give errors
result = scipy.optimize.differential_evolution(minimize_me, bounds=function_bounds, args=extraargs,
disp=True, polish=False, updating='deferred', workers=-1)
print(result)
Вместо этого поместите код, как показано ниже:
import scipy.optimize
def minimize_me(x, *args):
... # Your code
return result
# DO LIKE THIS
if __name__ == "__main__":
... # Prepare all the arguments
result = scipy.optimize.differential_evolution(minimize_me, bounds=function_bounds, args=extraargs,
disp=True, polish=False, updating='deferred', workers=-1)
print(result)