optim:

Detaljer

Notera att argument efter måste matchas exakt.

Som standard utför optim minimering, men det kommer att maximera om control$fnscale är negativt. optimHess är en hjälpfunktion för att beräkna Hessian i ett senare skede om hessian = TRUE har glömts bort.

Standardmetoden är en implementering av den av Nelder och Mead (1965), som endast använder funktionsvärden och som är robust men relativt långsam. Den kommer att fungera någorlunda bra för icke-differentierbara funktioner.

Metod "BFGS" är en kvasi-Newton-metod (även känd som en algoritm med variabla metriska mått), närmare bestämt den som publicerades samtidigt 1970 av Broyden, Fletcher, Goldfarb och Shanno. Denna använder funktionsvärden och gradienter för att bygga upp en bild av den yta som skall optimeras.

Metod "CG" är en metod med konjugerade gradienter baserad på den av Fletcher och Reeves (1964) (men med möjlighet till Polak–Ribiere- eller Beale–Sorenson-uppdateringar). Konjugerade gradientmetoder är i allmänhet mer ömtåliga än BFGS-metoden, men eftersom de inte lagrar en matris kan de vara framgångsrika i mycket större optimeringsproblem.

Metod "L-BFGS-B" är den av Byrd et. al. (1995) som tillåter boxbegränsningar, det vill säga att varje variabel kan ges en nedre och/eller övre gräns. Det ursprungliga värdet måste uppfylla begränsningarna. Här används en modifiering med begränsat minne av BFGS kvasinewtonmetoden. Om icke-triviala gränser anges kommer denna metod att väljas, med en varning.

Nocedal och Wright (1999) är en omfattande referens för de tre föregående metoderna.

Metod "SANN" är som standard en variant av simulerad glödgning som ges i Belisle (1992). Simulated-annealing tillhör klassen av stokastiska globala optimeringsmetoder. Den använder endast funktionsvärden men är relativt långsam. Den fungerar även för icke-differentierbara funktioner. I detta genomförande används Metropolis-funktionen för acceptanssannolikheten. Som standard genereras nästa kandidatpunkt från en Gaussisk Markov-kärna med en skala som är proportionell mot den faktiska temperaturen. Om en funktion för att generera en ny kandidatpunkt ges kan metod "SANN" också användas för att lösa kombinatoriska optimeringsproblem. Temperaturen sänks i enlighet med det logaritmiska avkylningsschema som anges i Belisle (1992, s. 890); närmare bestämt sätts temperaturen till temp / log(((t-1) %/% tmax)*tmax + exp(1)), där t är det aktuella iterationssteget och temp och tmax kan specificeras via control, se nedan. Observera att "SANN"-metoden är kritiskt beroende av inställningarna av styrparametrarna. Det är inte en generell metod men kan vara mycket användbar för att få fram ett bra värde på en mycket grov yta.

Metod "Brent" är endast för endimensionella problem, med hjälp av optimize(). Den kan vara användbar i fall där optim() används inuti andra funktioner där endast method kan anges, till exempel i mle från paketet stats4.

Funktion fn kan returnera NA eller Inf om funktionen inte kan utvärderas vid det levererade värdet, men det initiala värdet måste ha ett beräkningsbart ändligt värde av fn. (Utom för metod "L-BFGS-B" där värdena alltid ska vara finita.)

optim kan användas rekursivt, och för en enda parameter såväl som för många. Den accepterar också en par med noll längd och utvärderar bara funktionen med det argumentet.

Argumentet control är en lista som kan innehålla någon av följande komponenter:

trace

Non-negativt heltal. Om det är positivt produceras spårningsinformation om hur optimeringen fortskrider. Högre värden kan ge mer spårningsinformation: för metod "L-BFGS-B" finns det sex spårningsnivåer. (För att förstå exakt vad dessa gör se källkoden: högre nivåer ger mer detaljer.)

fnscale

En övergripande skalning som ska tillämpas på värdet av fn och gr under optimeringen. Om den är negativ förvandlas problemet till ett maximeringsproblem. Optimeringen utförs på fn(par)/fnscale.

parscale

En vektor med skalningsvärden för parametrarna. Optimering utförs på par/parscale och dessa bör vara jämförbara i den meningen att en enhetsförändring i något element ger ungefär en enhetsförändring i det skalade värdet. Används inte (behövs inte heller)för method = "Brent".

ndeps

En vektor med stegstorlekar för finitdifferensapproximationen av gradienten, i skala par/parscale. Standardvärdet är 1e-3.

maxit

Det maximala antalet iterationer. Standardvärdet är 100 för de derivatbaserade metoderna och 500 för "Nelder-Mead".

För "SANN" maxit ger det totala antalet funktionsutvärderingar: det finns inget annat stoppkriterium. Standardvärdet är 10000.

abstol

Den absoluta konvergenstoleransen. Endast användbar för icke-negativa funktioner, som en tolerans för att nå noll.

reltol

Relativ konvergenstolerans. Algoritmen stannar om den inte kan minska värdet med en faktor reltol * (abs(val) + reltol) i ett steg. Standardvärdet är sqrt(.Machine$double.eps), vanligtvis cirka 1e-8.

alpha,beta,gamma

Skaleringsparametrar för "Nelder-Mead"-metoden. alpha är reflektionsfaktorn (standard 1,0), beta är kontraktionsfaktorn (0,5) och gamma är expansionsfaktorn (2,0).

REPORT

Frekvensen av rapporter för metoderna "BFGS", "L-BFGS-B" och "SANN" om control$trace är positiv. Standardvärdet är var 10:e iteration för "BFGS" och "L-BFGS-B", eller var 100:e temperatur för "SANN".

warn.1d.NelderMead

a logical som anger om (standard) "Nelder-Mean"-metoden "Nelder-Mean" ska signalera en varning när den används för endimensionell minimering. Eftersom varningen ibland är olämplig kan du undertrycka den genom att ställa in detta alternativ till false.

type

för konjugatgradientmetoden. Tar värdet 1 för Fletcher–Reeves uppdatering, 2 för Polak–Ribiere och 3 för Beale–Sorenson.

lmm

är ett heltal som ger antalet BFGS-uppdateringar som behålls i "L-BFGS-B"-metoden, Standardvärdet är 5.

factr

kontrollerar konvergensen för "L-BFGS-B"-metoden. Konvergens inträffar när minskningen av målet ligger inom denna faktor av maskintoleransen. Standardvärdet är 1e7, det vill säga en tolerans på cirka 1e-8.

pgtol

Hjälper till att kontrollera konvergensen för "L-BFGS-B"-metoden. Det är en tolerans för den projicerade gradienten i den aktuella sökriktningen. Den är som standard noll, när kontrollen är undertryckt.

temp

kontrollerar "SANN"-metoden. Det är starttemperaturen för kylningsschemat. Standardvärdet är 10.

tmax

är antalet funktionsutvärderingar vid varje temperatur för "SANN"-metoden. Standardvärdet är 10.

Alla namn som ges till par kopieras till de vektorer som skickas till fn och gr. Observera att inga andra attribut för par kopieras över.

Parametervektorn som överlämnats till fn har särskild semantik och kan delas mellan anrop: funktionen bör inte ändra eller kopiera den.