Nie jest to kompletna odpowiedź, ale za długa na komentarz i może postawić cię na właściwej drodze.
Temat ten jest krótko omówiony na stronie 171 „Kompaktowych metod numerycznych dla komputerów”, wydanie drugie, John C. Nash. I zdarza się, że jest to odwołanie cytowane dla procedury Neldera-Meada zaimplementowanej w optim()
funkcji R. Cytując odpowiednią część:
Należy zatem odpowiedzieć na najostrzejsze pytanie dotyczące algorytmów minimalizacji: kiedy znaleziono minimum? Nelder i Mead sugerują „błąd standardowy” wartości funkcji:
Gdzie
test=[(∑i=1n+1[S(bi)−S¯]2)/n]1/2
S¯=∑i=1n+1S(bi)/(n+1).
Będę przerywać, aby wyjaśnić, że Jest funkcją, która jest minimalizowana, są punktami które definiują wymiarowy simpleks; punkt o najwyższej wartości funkcji to a punkt o najniższej wartości funkcji to . Nash kontynuuje:S(.)bn+1nbHbL
Przyjmuje się, że procedura jest zbieżna, gdy wartość testu spadnie poniżej ustalonej tolerancji. W zastosowaniach statystycznych, które zainteresowały Neldera i Meada, takie podejście jest uzasadnione. Jednak autor stwierdził, że to kryterium może powodować przedwczesne zakończenie procedury w przypadku problemów z dość płaskimi obszarami na powierzchni funkcji. W kontekście statystycznym można by zatrzymać, gdyby napotkano taki region, ale zakładając, że poszukiwane jest minimum, logiczne wydaje się stosowanie prostszego testu na równość między
i , to znaczy test na równą wysokość wszystkich punktów w jednostronie.S ( b H )S(bL)S(bH)
Szybkie spojrzenie na źródło optim()
wskazuje, że wykorzystuje różnicę między najwyższą a najniższą wartością funkcji (punktów definiujących simpleks) do ustalenia zbieżności: if (VH <= VL + convtol || VL <= abstol) break;
Gdzie VH
jest wysoka wartość, a VL
niska wartość. Jest to związane z zastrzeżeniem, że rzuciłem okiem na źródło i prawdopodobnie czegoś mi brakuje.
Teraz twoja opcja (1) wydaje się drugim podejściem zalecanym przez Nasha. Omawia również napotkany problem:
Wreszcie nadal możliwe jest zbieganie się w punkcie, który nie jest minimum. Jeśli na przykład wszystkie punkty simpleksu znajdują się w jednej płaszczyźnie (która jest linią w dwóch wymiarach), simpleks może poruszać się tylko w kierunkach w przestrzeni wymiarowej i może nie być w stanie przejść do minimum. O'Neill (1971), w implementacji FORTRAN pomysłów Neldera-Meada, testuje wartość funkcji po obu stronach przypuszczalnego minimum wzdłuż każdej z osi parametrów. Jeśli jakakolwiek wartość funkcji zostanie znaleziona poniżej aktualnego przypuszczalnego minimum, procedura zostanie ponownie uruchomiona.( n - 1 ) n(n+1)(n−1)n
Oryginalne odniesienia, do których odnosi się Nash, to:
Nelder JA, Mead R. 1965. Prostokątna metoda minimalizacji funkcji. The Computer Journal 7: 308-313.
O'Neill R. 1971. Algorytm AS 47: Minimalizacja funkcji za pomocą procedury simpleks. Statystyka stosowana 20: 338–345.