optim:

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.