Объясните интуицию для tol paramer в дифференциальной эволюции scipy
Я использую оптимизатор дифференциальной эволюции в scipy, и я не понимаю интуицию, стоящую за аргументом tol. В частности, это сказано в документации:
tol: float, опционально
Когда среднее значение энергий населения, умноженное на tol, деленное на стандартное отклонение энергий населения, больше 1, процесс решения завершается:
convergence = mean(pop) * tol / stdev(pop) > 1
Что означает настройка tol с точки зрения пользователя?
1 ответ
Возможно, формулу в документации легче понять в следующей форме (см. Строки 508 и 526 в коде):
std(population_energies) / mean(population_energies) < tol
Это означает, что конвергенция достигается, когда стандартное отклонение энергий для каждого индивидуума в популяции, нормированное на среднее значение, меньше заданного значения допуска.
Алгоритм оптимизации является итеративным. На каждой итерации лучшее решение найдено. Параметры допуска используются для определения условия остановки. Условием остановки является то, что все индивидуумы (наборы параметров) имеют приблизительно одинаковую энергию, то есть одно и то же значение функции стоимости. Затем набор параметров, дающий наименьшую энергию, возвращается в качестве решения.
Это также означает, что все индивидуумы находятся относительно близко друг к другу в пространстве параметров. Таким образом, нельзя ожидать лучшего решения для следующих поколений.