Я использую эту библиотеку — https://pythonhosted.org/pyswarm/, чтобы найти глобальные минимумы выпуклая функция. Это просто для начала и работы над невыпуклой функцией. Я нашел глобальные минимумы, используя линейную регрессию, но проблема в том, что PSO, кажется, сходится в разных точках в зависимости от значений омеги и фи (s), которые я установил. Я могу подтвердить, что эти точки не являются глобальными минимумами, сравнив стоимость с минимумами, полученными с помощью линейной регрессии.
Возможно ли в PSO, что он сходится (значение не меняется после 10 итераций) или я где-то ошибаюсь?
Может ли PSO сходиться в точке с ненулевой производной?
Ответы (1)
Вполне возможно, что PSO сойдется не в том месте. Особенность метаэвристик в том, что их выполнение может занять много времени. Десять итераций в неправильном месте вполне возможны. Кроме того, сходимость к абсолютному глобальному минимуму займет очень много времени, и алгоритм никогда не сможет доказать, что он сошелся к глобальному минимуму, а только достигнет критерия завершения. Ваши ожидания от метаэвристики должны заключаться в том, что она в конце концов даст вам хороший ответ, а не в том, что она всегда сходится к глобальному минимуму.
В качестве компенсации за эти недостатки — долгое время работы, отсутствие гарантии глобальной минимизации — вы получаете алгоритм оптимизации, который может справиться с любым типом оценки функции или ландшафтом приспособленности.