Details
Megjegyezzük, hogy a …
utáni argumentumoknak pontosan meg kell egyezniük.
Az optim
alapértelmezés szerint minimalizálást hajt végre, de maximalizál, ha control$fnscale
negatív. A optimHess
egy segédfüggvény a Hessian későbbi kiszámításához, ha a hessian = TRUE
-et elfelejtettük.
Az alapértelmezett módszer Nelder és Mead (1965) módszerének egy implementációja, amely csak függvényértékeket használ, és robusztus, de viszonylag lassú. Nem differenciálható függvények esetén viszonylag jól működik.
A "BFGS"
módszer egy kvázi-Newton-módszer (más néven változó metrikus algoritmus), konkrétan az 1970-ben Broyden, Fletcher, Goldfarb és Shanno által egyszerre publikált módszer. Ez függvényértékek és gradiensek segítségével alkot képet az optimalizálandó felületről.
A "CG"
módszer egy konjugált gradiens módszer, amely Fletcher és Reeves (1964) módszerén alapul (de Polak–Ribiere vagy Beale–Sorenson frissítések lehetőségével). A konjugált gradiens módszerek általában sérülékenyebbek, mint a BFGS módszer, de mivel nem tárolnak mátrixot, sokkal nagyobb optimalizálási problémák esetén sikeresek lehetnek.
A "L-BFGS-B"
módszer a Byrd et. al. (1995) módszere, amely lehetővé teszi a dobozkényszereket, azaz minden változóhoz adható alsó és/vagy felső korlát. A kezdeti értéknek meg kell felelnie a korlátozásoknak. Ez a BFGS kvázi-Newton-módszer korlátozott memóriájú módosítását használja. Ha nem triviális korlátokat adunk meg, ez a módszer lesz kiválasztva, egy figyelmeztetéssel.
Nocedal és Wright (1999) egy átfogó referencia az előző három módszerről.
A "SANN"
módszer alapértelmezés szerint a szimulált lágyítás egy változata, amelyet Belisle (1992) ad meg. A szimulált analízis a sztochasztikus globális optimalizálási módszerek osztályába tartozik. Csak függvényértékeket használ, de viszonylag lassú. Nem differenciálható függvények esetén is működik. Ez az implementáció a Metropolis-függvényt használja az elfogadás valószínűségére. Alapértelmezés szerint a következő jelölt pontot egy Gauss Markov-magból generálja, amelynek skálája arányos az aktuális hőmérséklettel. Ha megadunk egy függvényt az új jelölt pont generálására, a "SANN"
módszer kombinatorikus optimalizálási problémák megoldására is használható. A hőmérsékletet a Belisle (1992, 890. o.) által megadott logaritmikus hűtési ütemterv szerint csökkentjük; konkrétan a hőmérsékletet temp / log(((t-1) %/% tmax)*tmax + exp(1))
-ra állítjuk, ahol t
az aktuális iterációs lépés, temp
és tmax
pedig a control
segítségével adható meg, lásd alább. Megjegyzendő, hogy a "SANN"
módszer kritikusan függ a vezérlési paraméterek beállításaitól. Ez nem egy általános célú módszer, de nagyon hasznos lehet, ha egy nagyon durva felületen szeretnénk jó értéket kapni.
A "Brent"
módszer csak egydimenziós problémákra használható, a optimize()
használatával. Hasznos lehet olyan esetekben, amikor a optim()
más függvényeken belül használatos, ahol csak method
adható meg, például a mle
-ben a stats4 csomagból.
A fn
függvény NA
vagy Inf
értéket adhat vissza, ha a függvény nem értékelhető ki a megadott értéken, de a kezdőértéknek egy kiszámítható véges fn
értékűnek kell lennie. (Kivéve a "L-BFGS-B"
módszer, ahol az értékeknek mindig végesnek kell lenniük.)
optim
rekurzívan használható, és egy és több paraméterre is. Elfogad egy nulla hosszúságú par
értéket is, és csak kiértékeli a függvényt ezzel az argumentummal.
A control
argumentum egy lista, amely a következő összetevők bármelyikét megadhatja:
trace
nem-negatív egész szám. Ha pozitív, akkor az optimalizálás előrehaladásáról nyomkövetési információ keletkezik. A magasabb értékek több nyomonkövetési információt eredményezhetnek: a "L-BFGS-B"
módszer esetében hat nyomonkövetési szint van. (Hogy pontosan mit csinálnak ezek, lásd a forráskódot: a magasabb szintek több részletet adnak.)
fnscale
A fn
és gr
értékére az optimalizálás során alkalmazandó általános skálázás. Ha negatív, akkor a problémát maximalizálási problémává változtatja. Az optimalizálás fn(par)/fnscale
alapján történik.
parscale
A paraméterek skálázási értékeinek vektora. Az optimalizálás par/parscale
-on történik, és ezeknek összehasonlíthatónak kell lenniük abban az értelemben, hogy bármelyik elem egységnyi változása körülbelül egységnyi változást eredményez a skálázott értékben. Nem használatos (és nem is szükséges)a method = "Brent"
esetében.
ndeps
A gradiens véges differenciájú közelítéséhez használt lépésméretek vektora, par/parscale
skálán. Alapértelmezett értéke 1e-3
.
maxit
A maximális iterációk száma. Alapértelmezés szerint 100
a derivált alapú módszereknél, és 500
"Nelder-Mead"
.
"SANN"
esetén maxit
adja meg a függvénykiértékelések teljes számát: nincs más megállási kritérium. Alapértelmezett értéke 10000
.
abstol
Az abszolút konvergenciatűrés. Csak nem-negatív függvények esetén hasznos, mint a nulla elérésének toleranciája.
reltol
Relatív konvergencia tolerancia. Az algoritmus leáll, ha egy lépésben nem tudja az értéket reltol * (abs(val) + reltol)
faktorral csökkenteni. Alapértelmezett értéke sqrt(.Machine$double.eps)
, jellemzően körülbelül 1e-8
.
alpha
,beta
,gamma
Skálázási paraméterek a "Nelder-Mead"
módszerhez. alpha
a reflexiós tényező (alapértelmezett 1,0), beta
a kontrakciós tényező (0,5) és gamma
a tágulási tényező (2,0).
REPORT
A jelentések gyakorisága a "BFGS"
, "L-BFGS-B"
és "SANN"
módszereknél, ha a control$trace
pozitív. Alapértelmezés szerint a "BFGS"
és "L-BFGS-B"
esetében 10 iterációnként, a "SANN"
esetében 100 hőmérsékletenként.
warn.1d.NelderMead
a logical
jelzi, hogy a (alapértelmezett) "Nelder-Mean"
módszer jelezzen-e figyelmeztetést, ha egydimenziós minimalizáláshoz használják. Mivel a figyelmeztetés néha nem megfelelő, elnyomhatja azt, ha ezt az opciót false-ra állítja.
type
a konjugált gradiens módszer esetében. Fletcher–Reeves frissítés esetén 1
, Polak–Ribiere esetén 2
, Beale–Sorenson esetén 3
értéket vesz fel.
lmm
a "L-BFGS-B"
módszerben megtartott BFGS frissítések számát megadó egész szám, Alapértelmezett értéke 5
.
factr
a "L-BFGS-B"
módszer konvergenciáját szabályozza. A konvergencia akkor következik be, ha a célkitűzés csökkenése a gépi tűréshatár ezen tényezőjén belül van. Az alapértelmezett érték 1e7
, azaz a tűréshatár körülbelül 1e-8
.
pgtol
segít a "L-BFGS-B"
módszer konvergenciájának szabályozásában. Ez egy tolerancia a vetített gradiensre az aktuális keresési irányban. Alapértelmezés szerint nulla, ha az ellenőrzés el van nyomva.
temp
vezérli a "SANN"
módszert. Ez a hűtési ütemezés kezdő hőmérséklete. Alapértelmezett értéke 10
.
tmax
a "SANN"
módszer esetében az egyes hőmérsékleteken végzett függvénykiértékelések száma. Alapértelmezett értéke 10
.
A par
-nak adott nevek átmásolódnak a fn
-nek és gr
-nek átadott vektorokba. Megjegyzendő, hogy a par
egyéb attribútumai nem kerülnek átmásolásra.
A fn
-nek átadott paramétervektor speciális szemantikával rendelkezik, és megosztható a hívások között: a függvénynek nem szabad megváltoztatnia vagy másolnia.