Параллельная дифференциальная эволюция
Я играл с библиотекой дифференциальной эволюции в R, и мне было интересно: этот алгоритм имеет смысл распараллеливать? Мне кажется, что вы могли бы разделить интервал оптимизации на несколько сегментов, запустить алгоритм для каждого сегмента, а затем сравнить результаты каждого сегмента и вернуть минимум.
1 ответ
Да, это должно распараллелить. Нетрудно найти многочисленные хиты Google по этой теме, и у проекта GAUL на Soureforge есть даже некоторый код (который никак не портирован на R).
Возвращаясь к R и его вариантам DE, лучший подход был бы на скомпилированном уровне. Я попробовал это, используя OpenMP в "RcppParDE" варианте моего RcppDE "порта" DEoption, но не закончил.
Я понимаю, что в следующей (текущей?) Версии DEoptim есть вариант, в котором используется цикл foreach на уровне R, который не идеален, но лучше, чем последовательный подход.