Detaljer
Bemærk, at argumenter efter …
skal passe nøjagtigt sammen.
Som standard udfører optim
minimering, men den vil maksimere, hvis control$fnscale
er negativ. optimHess
er en hjælpefunktion til at beregne Hessian på et senere tidspunkt, hvis hessian = TRUE
blev glemt.
Standardmetoden er en implementering af den af Nelder og Mead (1965), som kun bruger funktionsværdier og er robust, men relativt langsom. Den vil fungere rimeligt godt for ikke-differentierbare funktioner.
Metode "BFGS"
er en quasi-Newton-metode (også kendt som en algoritme med variabel metrik), nærmere bestemt den, der blev offentliggjort samtidig i 1970 af Broyden, Fletcher, Goldfarb og Shanno. Denne metode anvender funktionsværdier og gradienter til at opbygge et billede af den overflade, der skal optimeres.
Metode "CG"
er en konjugeret gradientermetode baseret på den af Fletcher og Reeves (1964) (men med mulighed for Polak–Ribiere- eller Beale–Sorenson-opdateringer). Konjugerede gradientmetoder vil generelt være mere skrøbelige end BFGS-metoden, men da de ikke lagrer en matrix, kan de være vellykkede i meget større optimeringsproblemer.
Metode "L-BFGS-B"
er den af Byrd et. al. (1995), som tillader boksbegrænsninger, dvs. at hver variabel kan have en nedre og/eller øvre grænse. Den oprindelige værdi skal opfylde begrænsningerne. Denne metode anvender en ændring af BFGS-kvasi-newton-metoden med begrænset hukommelse. Hvis der angives ikke-trivielle grænser, vælges denne metode med en advarsel.
Nocedal og Wright (1999) er en omfattende reference for de tre foregående metoder.
Metode "SANN"
er som standard en variant af simuleret annealing givet i Belisle (1992). Simulated-annealing hører til klassen af stokastiske globale optimeringsmetoder. Den anvender kun funktionsværdier, men er relativt langsom. Den fungerer også for ikke-differentierbare funktioner. Denne implementering anvender Metropolis-funktionen til accept-sandsynligheden. Som standard genereres det næste kandidatpunkt fra en Gaussisk Markov-kernel med en skala, der er proportional med den faktiske temperatur. Hvis der er angivet en funktion til at generere et nyt kandidatpunkt, kan metode "SANN"
også anvendes til at løse kombinatoriske optimeringsproblemer. Temperaturen sænkes i henhold til den logaritmiske køleskemaplan som angivet i Belisle (1992, s. 890); nærmere bestemt sættes temperaturen til temp / log(((t-1) %/% tmax)*tmax + exp(1))
, hvor t
er det aktuelle iterationstrin, og temp
og tmax
kan specificeres via control
, jf. nedenfor. Bemærk, at "SANN"
-metoden er kritisk afhængig af indstillingerne af kontrolparametrene. Det er ikke en metode til generelle formål, men den kan være meget nyttig til at nå frem til en god værdi på en meget ru overflade.
Metode "Brent"
er kun for endimensionale problemer, idet optimize()
anvendes. Den kan være nyttig i tilfælde, hvor optim()
bruges inde i andre funktioner, hvor kun method
kan angives, f.eks. i mle
fra pakke stats4.
Funktion fn
kan returnere NA
eller Inf
, hvis funktionen ikke kan evalueres ved den angivne værdi, men begyndelsesværdien skal have en beregnelig finit værdi af fn
. (Undtagen for metode "L-BFGS-B"
, hvor værdierne altid skal være finitte.)
optim
kan bruges rekursivt og for en enkelt parameter såvel som for mange. Den accepterer også en par
af nul længde og evaluerer blot funktionen med dette argument.
control
Argumentet control
er en liste, der kan levere en af følgende komponenter:
trace
Non-negativt heltal. Hvis den er positiv, produceres der sporingsoplysninger om optimeringens forløb. Højere værdier kan give flere sporingsoplysninger: for metode "L-BFGS-B"
er der seks sporingsniveauer. (For at forstå præcis, hvad disse gør, se kildekoden: højere niveauer giver flere detaljer.)
fnscale
En samlet skalering, der skal anvendes på værdien af fn
og gr
under optimeringen. Hvis den er negativ, forvandler den problemet til et maksimeringsproblem. Optimeringen udføres på fn(par)/fnscale
.
parscale
En vektor af skaleringsværdier for parametrene. Optimeringen udføres på par/parscale
, og disse bør være sammenlignelige i den forstand, at en ændring af en enhed i et element giver ca. en ændring af en enhed i den skalerede værdi. Ikke anvendt (og heller ikke nødvendigt)for method = "Brent"
.
ndeps
En vektor af trinstørrelser for finite-difference-approximationen af gradienten på skala par/parscale
. Standardværdien er 1e-3
.
maxit
Det maksimale antal iterationer. Standardværdien er 100
for de derivatbaserede metoder og 500
for "Nelder-Mead"
.
For "SANN"
maxit
angiver det samlede antal funktionsvurderinger: der er intet andet stopkriterium. Standardværdien er 10000
.
abstol
Den absolutte konvergenstolerance. Kun nyttig for ikke-negative funktioner, som en tolerance for at nå nul.
reltol
Relativ konvergenstolerance. Algoritmen stopper, hvis den ikke er i stand til at reducere værdien med en faktor reltol * (abs(val) + reltol)
på et trin. Standardværdien er sqrt(.Machine$double.eps)
, typisk ca. 1e-8
.
alpha
,beta
,gamma
Skaleringsparametre for "Nelder-Mead"
-metoden. alpha
er refleksionsfaktoren (standard 1,0), beta
er sammentrækningsfaktoren (0,5) og gamma
er ekspansionsfaktoren (2,0).
REPORT
Frekvensen af indberetninger for "BFGS"
, "L-BFGS-B"
og "SANN"
-metoderne, hvis control$trace
er positiv. Standardværdien er hver 10. gentagelse for "BFGS"
og "L-BFGS-B"
eller hver 100 temperaturer for "SANN"
.
warn.1d.NelderMead
a logical
, der angiver, om (standard)"Nelder-Mean"
-metoden "Nelder-Mean"
skal signalere en advarsel, når den anvendes til endimensional minimering. Da advarslen nogle gange er uhensigtsmæssig, kan du undertrykke den ved at indstille denne indstilling til false.
type
for konjugat-gradienter-metoden. Tager værdien 1
for Fletcher–Reeves-opdateringen, 2
for Polak–Ribiere og 3
for Beale–Sorenson.
lmm
er et heltal, der angiver antallet af BFGS-opdateringer, der bevares i "L-BFGS-B"
-metoden, Det er standardværdien 5
.
factr
styrer konvergensen af "L-BFGS-B"
-metoden. Der er konvergens, når reduktionen af målet er inden for denne faktor af maskintolerancen. Standardværdien er 1e7
, dvs. en tolerance på ca. 1e-8
.
pgtol
hjælper med at kontrollere konvergensen af "L-BFGS-B"
-metoden. Det er en tolerance på den projicerede gradient i den aktuelle søgeretning. Den er som standard nul, når kontrollen er undertrykt.
temp
styrer "SANN"
-metoden. Det er starttemperaturen for køleskemaet. Standardværdien er 10
.
tmax
er antallet af funktionsvurderinger ved hver temperatur for "SANN"
-metoden. Standardværdien er 10
.
Alle navne, der er givet til par
, vil blive kopieret til de vektorer, der overføres til fn
og gr
. Bemærk, at ingen andre attributter for par
kopieres over.
Parametervektoren, der overdrages til fn
, har en særlig semantik og kan deles mellem kald: funktionen bør ikke ændre eller kopiere den.