Не повна відповідь, але занадто довго для коментарів і може поставити вас на правильний шлях.
Ця тема коротко розглядається на сторінці 171 «Компактні чисельні методи для комп’ютерів», 2-е видання, Джон К. Неш. І трапляється це посилання, яке цитується для рутини Nelder-Mead, реалізованої у optim()
функції R. Цитуючи відповідну частину:
Таким чином, слід вирішити найсміливіше питання щодо алгоритмів мінімізації: коли було встановлено мінімум? Нельдер і Мід пропонують "стандартну помилку" значень функції:
Де
test=[(∑i=1n+1[S(bi)−S¯]2)/n]1/2
S¯=∑i=1n+1S(bi)/(n+1).
Я перерву, щоб уточнити, що - функція, що мінімізується, - балів, які визначають розмірний симплекс; точка з найвищим значенням функції - а точка з найнижчим значенням функції - . Наш продовжує:S(.)bn+1nbHbL
Процедура вважається збіжною, коли значення тесту опускається нижче заздалегідь заданого допуску. У статистичних додатках, які зацікавили Нелдера та Міда, такий підхід є розумним. Однак автор встановив, що цей критерій може спричинити передчасне припинення процедури при проблемах із досить плоскими ділянками на функціональній поверхні. У статистичному контексті можна було б зупинитись, якщо зустрічалася така подібна область, але, припускаючи мінімум, шукається, здається, логічним є використання більш простого тесту на рівність між
та , тобто тест на рівну висоту всіх точок у симплекса.S ( b H )S(bL)S(bH)
Швидкий огляд джерела optim()
вказує на те, що він використовує різницю між найвищим і найнижчим значенням функції (точок, що визначають симплекс) для визначення конвергенції: if (VH <= VL + convtol || VL <= abstol) break;
Де VH
високе і VL
низьке значення. Це стосується застереження, що я дуже швидко подивився на джерело, і, певно, чогось не вистачає.
Тепер ваш варіант (1) представляється другим підходом, який обстоює Неш. Він також обговорює проблему, з якою ви стикалися:
Нарешті, все ж можливо сходитись у точці, яка не є мінімальним. Наприклад, якщо точки симплексу знаходяться в одній площині (яка є лінією у двох вимірах), симплекс може рухатись лише в напрямках у -вимірному просторі і може не в змозі перейти до мінімального. O'Neill (1971), реалізуючи FORTRAN ідеї Нелдера-Міда, тестує значення функції по будь-якій стороні від передбачуваного мінімуму вздовж кожної з осей параметрів. Якщо будь-яке значення функції виявилося нижчим від поточного передбачуваного мінімуму, процедура повторно запускається.( n - 1 ) n(n+1)(n−1)n
Оригінальні посилання, на які тут посилається Наш,:
Nelder JA, Mead R. 1965. Симплексний метод мінімізації функцій. Комп'ютерний журнал 7: 308-313.
O'Neill R. 1971. Алгоритм AS 47: мінімізація функцій за допомогою симплексної процедури. Прикладна статистика 20: 338-345.