Details
Zauważ, że argumenty po …
muszą być dokładnie dopasowane.
Domyślnie optim
wykonuje minimalizację, ale będzie maksymalizować, jeśli control$fnscale
jest ujemne. optimHess
jest funkcją pomocniczą do obliczania hesjanu na późniejszym etapie, jeśli hessian = TRUE
został zapomniany.
Domyślną metodą jest implementacja metody Neldera i Meada (1965), która używa tylko wartości funkcji i jest solidna, ale stosunkowo wolna. Będzie ona działać dość dobrze dla funkcji nieróżniczkowalnych.
Metoda "BFGS"
jest metodą quasi-Newtona (znaną również jako algorytm zmiennej metryki), w szczególności opublikowaną jednocześnie w 1970 roku przez Broydena, Fletchera, Goldfarba i Shanno. Wykorzystuje ona wartości funkcji i gradientów do zbudowania obrazu powierzchni, która ma być zoptymalizowana.
Metoda "CG"
jest metodą gradientów sprzężonych opartą na metodzie Fletchera i Reevesa (1964) (ale z opcją aktualizacji Polak–Ribiere lub Beale–Sorenson). Metody gradientów sprzężonych będą ogólnie bardziej kruche niż metoda BFGS, ale ponieważ nie przechowują macierzy, mogą być skuteczne w znacznie większych problemach optymalizacyjnych.
Metoda "L-BFGS-B"
jest metodą Byrd et. al. (1995), która pozwala na ograniczenia pudełkowe, czyli każda zmienna może otrzymać dolną i/lub górną granicę. Wartość początkowa musi spełniać te ograniczenia. Wykorzystuje ona ograniczoną pamięciowo modyfikację quasi-Newtonowskiej metody BFGS. Jeśli zostaną podane nietrywialne granice, ta metoda zostanie wybrana z ostrzeżeniem.
Nocedal i Wright (1999) to wyczerpujące odniesienie do poprzednich trzech metod.
Metoda "SANN"
jest domyślnie wariantem symulowanego wyżarzania podanego w Belisle (1992). Symulowane wyżarzanie należy do klasy stochastycznych metod optymalizacji globalnej. Używa tylko wartości funkcji, ale jest stosunkowo wolne. Będzie również działać dla funkcji nieróżniczkowalnych. Ta implementacja wykorzystuje funkcję Metropolis dla prawdopodobieństwa akceptacji. Domyślnie następny punkt kandydujący jest generowany z gaussowskiego jądra Markowa o skali proporcjonalnej do rzeczywistej temperatury. Jeśli podana jest funkcja generująca nowy punkt kandydujący, metoda "SANN"
może być również użyta do rozwiązywania problemów optymalizacji kombinatorycznej. Temperatury są obniżane zgodnie z logarytmicznym harmonogramem chłodzenia podanym w Belisle (1992, s.890); w szczególności, temperatura jest ustawiana na temp / log(((t-1) %/% tmax)*tmax + exp(1))
, gdzie t
jest bieżącym krokiem iteracji, a temp
i tmax
są określane przez control
, patrz poniżej. Zauważ, że metoda "SANN"
zależy w decydującym stopniu od ustawień parametrów sterowania. Nie jest to metoda ogólnego zastosowania, ale może być bardzo użyteczna w dochodzeniu do dobrych wartości na bardzo chropowatej powierzchni.
Metoda "Brent"
jest tylko dla problemów jednowymiarowych, używając optimize()
. Może być przydatna w przypadkach, gdy optim()
jest używana wewnątrz innych funkcji, w których można określić tylko method
, jak np. w mle
z pakietu stats4.
Funkcja fn
może zwrócić NA
lub Inf
, jeśli funkcja nie może być obliczona przy dostarczonej wartości, ale wartość początkowa musi mieć obliczalną wartość skończoną fn
. (Z wyjątkiem metody "L-BFGS-B"
, gdzie wartości zawsze powinny być skończone.)
optim
może być używane rekurencyjnie, zarówno dla pojedynczego parametru, jak i wielu. Akceptuje również par
o zerowej długości i po prostu ocenia funkcję z tym argumentem.
Przedstawiony control
argument jest listą, która może dostarczyć dowolny z następujących składników:
trace
Nieujemna liczba całkowita. Jeśli jest dodatnia, tworzone są informacje o postępie optymalizacji. Wyższe wartości mogą produkować więcej informacji o śledzeniu: dla metody "L-BFGS-B"
istnieje sześć poziomów śledzenia. (Aby dokładnie zrozumieć, co one robią, zobacz kod źródłowy: wyższe poziomy dają więcej szczegółów.)
fnscale
Ogólne skalowanie, które ma być zastosowane do wartości fn
i gr
podczas optymalizacji. Jeśli jest ujemne, zamienia problem w problem maksymalizacji. Optymalizacja jest wykonywana na fn(par)/fnscale
.
parscale
Wektor wartości skalowania dla parametrów. Optymalizacja jest wykonywana na par/parscale
i powinny one być porównywalne w tym sensie, że zmiana jednostki w dowolnym elemencie powoduje około jednostkową zmianę w wartości skalowanej. Nieużywane (ani niepotrzebne) dla method = "Brent"
.
ndeps
Wektor wielkości kroków dla aproksymacji gradientu metodą różnic skończonych, w skali par/parscale
. Defaults to 1e-3
.
maxit
Maksymalna liczba iteracji. Defaults to 100
for the derivative-based methods, and 500
for "Nelder-Mead"
.
For "SANN"
maxit
gives the total number of function evaluations: there is no other stopping criterion. Defaults to 10000
.
abstol
Tolerancja zbieżności bezwzględnej. Użyteczne tylko dla funkcji nieujemnych, jako tolerancja osiągnięcia zera.
reltol
Tolerancja zbieżności względnej. Algorytm zatrzymuje się, jeśli nie jest w stanie zmniejszyć wartości o współczynnik reltol * (abs(val) + reltol)
w kroku. Domyślnie sqrt(.Machine$double.eps)
, typowo około 1e-8
.
alpha
,beta
,gamma
Parametry skalowania dla metody "Nelder-Mead"
. alpha
jest współczynnikiem odbicia (domyślnie 1,0), beta
współczynnikiem skurczenia (0,5), a gamma
współczynnikiem rozszerzenia (2,0).
REPORT
Częstotliwość raportów dla metod "BFGS"
, "L-BFGS-B"
i "SANN"
, jeśli control$trace
jest dodatnia. Domyślnie co 10 iteracji dla "BFGS"
i "L-BFGS-B"
lub co 100 temperatur dla "SANN"
.
warn.1d.NelderMead
a logical
wskazanie, czy (domyślna) metoda "Nelder-Mean"
powinna sygnalizować ostrzeżenie, gdy jest używana do minimalizacji jednowymiarowej. Ponieważ ostrzeżenie jest czasami niewłaściwe, można je wyłączyć, ustawiając tę opcję na false.
type
dla metody conjugate-gradients. Przyjmuje wartość 1
dla aktualizacji Fletcher–Reeves, 2
dla Polak–Ribiere i 3
dla Beale–Sorenson.
lmm
jest liczbą całkowitą podającą liczbę aktualizacji BFGS zachowanych w metodzie "L-BFGS-B"
, Domyślnie wynosi 5
.
factr
kontroluje zbieżność metody "L-BFGS-B"
. Zbieżność występuje, gdy redukcja celu mieści się w tym współczynniku tolerancji maszyny. Domyślnie jest to 1e7
, czyli tolerancja około 1e-8
.
pgtol
pomaga kontrolować zbieżność metody "L-BFGS-B"
. Jest to tolerancja na projektowanym gradiencie w bieżącym kierunku przeszukiwania. Wartość domyślna to zero, gdy kontrola jest wyłączona.
temp
pomaga kontrolować metodę "SANN"
. Jest to temperatura początkowa dla harmonogramu chłodzenia. Domyślnie 10
.
tmax
jest to liczba ocen funkcji w każdej temperaturze dla metody "SANN"
. Defaults to 10
.
Dowolne nazwy podane do par
zostaną skopiowane do wektorów przekazanych do fn
i gr
. Zauważ, że żadne inne atrybuty par
nie są kopiowane.
Wektor parametrów przekazany do fn
ma specjalną semantykę i może być współdzielony między wywołaniami: funkcja nie powinna go zmieniać ani kopiować.
.