Объясните интуицию для тол-парамера в дифференциальной эволюции - PullRequest
0 голосов
/ 03 сентября 2018

Я использую оптимизатор дифференциального развития в scipy, и я не понимаю интуицию, стоящую за аргументом tol. Конкретно сказано в документации:

tol: float, необязательно

Когда среднее значение энергий населения, умноженное на тол, делится по стандартному отклонению энергии популяции больше 1 процесс решения заканчивается:
convergence = mean(pop) * tol / stdev(pop) > 1

Что означает настройка tol с точки зрения пользователя?

1 Ответ

0 голосов
/ 03 сентября 2018

Возможно, формулу в документации легче понять в следующей форме (см. Строки 508 и 526 в код ):

std(population_energies) / mean(population_energies) < tol

Это означает, что конвергенция достигается, когда стандартное отклонение энергий для каждого индивидуума в популяции, нормированное на среднее значение, меньше заданного значения допуска.

Алгоритм оптимизации является итеративным. На каждой итерации лучшее решение найдено. Параметры допуска используются для определения условия остановки. Условием остановки является то, что все индивидуумы (наборы параметров) имеют приблизительно одинаковую энергию, то есть одно и то же значение функции стоимости. Затем набор параметров, дающий наименьшую энергию, возвращается в качестве решения.

Это также означает, что все индивидуумы находятся относительно близко друг к другу в пространстве параметров. Таким образом, нельзя ожидать лучшего решения от следующих поколений.

...