optim: General-purpose Optimization

Details

Huomaa, että :n jälkeiset argumentit on sovitettava täsmällisesti yhteen.

Vakiossa optim suorittaa minimoinnin, mutta se maksimoi, jos control$fnscale on negatiivinen. optimHess on apufunktio, joka laskee Hessin myöhemmässä vaiheessa, jos hessian = TRUE unohtui.

Oletusmenetelmä on toteutus Nelderin ja Meadin (1965) menetelmästä, joka käyttää vain funktion arvoja ja on robusti mutta suhteellisen hidas. Se toimii kohtuullisen hyvin ei-differentioiduille funktioille.

Menetelmä "BFGS" on kvasi-Newtonin menetelmä (tunnetaan myös nimellä muuttuvan metriikan algoritmi), erityisesti Broydenin, Fletcherin, Goldfarbin ja Shannon vuonna 1970 samanaikaisesti julkaisema menetelmä. Tämä käyttää funktion arvoja ja gradientteja rakentaakseen kuvan optimoitavasta pinnasta.

Menetelmä "CG" on Fletcherin ja Reevesin (1964) menetelmään perustuva konjugoidun gradientin menetelmä (mutta Polak–Ribiere- tai Beale–Sorenson-päivitysten avulla). Konjugaattigradienttimenetelmät ovat yleensä hauraampia kuin BFGS-menetelmä, mutta koska ne eivät tallenna matriisia, ne voivat onnistua paljon suuremmissa optimointiongelmissa.

Menetelmä "L-BFGS-B" on Byrdin et. al. (1995), joka sallii laatikkorajoitukset, eli jokaiselle muuttujalle voidaan antaa ala- ja/tai yläraja. Alkuarvon on täytettävä rajoitukset. Tässä käytetään BFGS-kvasi-Newton-menetelmän rajoitetun muistin muunnosta. Jos annetaan muita kuin triviaaleja rajoja, tämä menetelmä valitaan varoituksen kera.

Nocedal ja Wright (1999) on kattava referenssi kolmesta edellisestä menetelmästä.

Menetelmä "SANN" on oletusarvoisesti muunnelma simuloidusta hehkutuksesta, joka on esitetty Belislessä (1992). Simuloitu hehkutus kuuluu stokastisten globaalien optimointimenetelmien luokkaan. Se käyttää vain funktion arvoja, mutta on suhteellisen hidas. Se toimii myös ei-differentioiduille funktioille. Tässä toteutuksessa käytetään Metropolis-funktiota hyväksymistodennäköisyyteen. Oletusarvoisesti seuraava ehdokaspiste generoidaan Gaussin Markovin ytimestä, jonka skaala on verrannollinen todelliseen lämpötilaan. Jos annetaan funktio uuden ehdokaspisteen tuottamiseksi, menetelmää "SANN" voidaan käyttää myös kombinatoristen optimointiongelmien ratkaisemiseen. Lämpötiloja alennetaan logaritmisen jäähdytysaikataulun mukaisesti, joka on annettu Belislessä (1992, s. 890); erityisesti lämpötila asetetaan arvoon temp / log(((t-1) %/% tmax)*tmax + exp(1)), jossa t on nykyinen iteraatioaskel ja temp ja tmax ovat määritettävissä control:n kautta, ks. jäljempänä. Huomaa, että "SANN"-menetelmä riippuu ratkaisevasti ohjausparametrien asetuksista. Se ei ole yleiskäyttöinen menetelmä, mutta se voi olla erittäin hyödyllinen, kun halutaan päästä hyvään arvoon hyvin karkealla pinnalla.

Menetelmä "Brent" on tarkoitettu vain yksiulotteisille ongelmille käyttäen optimize(). Se voi olla hyödyllinen tapauksissa, joissa optim() käytetään muiden funktioiden sisällä, joissa voidaan antaa vain method, kuten mle:ssa paketista stats4.

Funktio fn voi palauttaa NA tai Inf, jos funktiota ei voida evaluoida annetulla arvolla, mutta alkuarvolla on oltava laskettavissa oleva äärellinen arvo fn. (Paitsi metodissa "L-BFGS-B", jossa arvojen tulee aina olla äärellisiä.)

optim voidaan käyttää rekursiivisesti ja sekä yhdelle että monelle parametrille. Se hyväksyy myös nollapituisen par, ja vain evaluoi funktion kyseisellä argumentilla.

Argumentti control on lista, joka voi antaa minkä tahansa seuraavista komponenteista:

trace

Ei-negatiivinen kokonaisluku. Jos se on positiivinen, tuotetaan jäljitystietoa optimoinnin etenemisestä. Suuremmat arvot voivat tuottaa enemmän jäljitystietoa: menetelmässä "L-BFGS-B" on kuusi jäljitystasoa. (Ymmärtääksesi tarkalleen, mitä nämä tekevät, katso lähdekoodi: korkeammat tasot antavat enemmän yksityiskohtia.)

fnscale

Yleinen skaalaus, jota sovelletaan fn:n ja gr:n arvoon optimoinnin aikana. Jos negatiivinen, muuttaa ongelman maksimointiongelmaksi. Optimointi suoritetaan fn(par)/fnscale.

parscale

Parametrien skaalausarvojen vektori. Optimointi suoritetaan par/parscale:lle ja näiden tulisi olla vertailukelpoisia siinä mielessä, että yksikkömuutos missä tahansa elementissä tuottaa noin yksikkömuutoksen skaalatussa arvossa. Ei käytetä (eikä tarvita)method = "Brent":ssä.

ndeps

Vektori askelkokoja gradientin äärellisen differenssin approksimaatiolle, asteikolla par/parscale. Oletusarvo on 1e-3.

maxit

Iteraatioiden enimmäismäärä. Oletusarvo on 100 derivaattiin perustuville menetelmille ja 500 "Nelder-Mead".

"SANN":lle maxit antaa funktion evaluointien kokonaismäärän: muuta pysäytyskriteeriä ei ole. Oletusarvo on 10000.

abstol

Absoluuttinen konvergenssitoleranssi. Hyödyllinen vain ei-negatiivisille funktioille nollan saavuttamisen toleranssina.

reltol

Relatiivinen konvergenssitoleranssi. Algoritmi pysähtyy, jos se ei pysty pienentämään arvoa kertoimella reltol * (abs(val) + reltol) askeleella. Oletusarvo on sqrt(.Machine$double.eps), tyypillisesti noin 1e-8.

alpha,beta,gamma

Skaalausparametrit menetelmälle "Nelder-Mead". alpha on heijastuskerroin (oletusarvo 1.0), beta supistumiskerroin (0.5) ja gamma laajenemiskerroin (2.0).

REPORT

Raportointitiheys "BFGS"-, "L-BFGS-B"– ja "SANN"-menetelmille, jos control$trace on positiivinen. Oletusarvo on 10 iteraation välein "BFGS":lle ja "L-BFGS-B":lle tai 100 lämpötilan välein "SANN":lle.

warn.1d.NelderMead

a logical, joka ilmoittaa, pitäisikö (oletus)"Nelder-Mean"-menetelmän "Nelder-Mean" antaa varoitus, kun sitä käytetään yksiulotteiseen minimointiin. Koska varoitus on joskus epätarkoituksenmukainen, voit tukahduttaa sen asettamalla tämän vaihtoehdon arvoksi false.

type

konjugaattigradienttimenetelmää varten. Ottaa arvon 1 Fletcher–Reeves-päivitykselle, 2 Polak–Ribiere-menetelmälle ja 3 Beale–Sorenson-menetelmälle.

lmm

on kokonaisluku, joka antaa BFGS-päivitysten lukumäärän, joka säilytetään "L-BFGS-B"-menetelmässä, Sen oletusarvo on 5.

factr

säädetään "L-BFGS-B"-menetelmän konvergenssia. Konvergenssi tapahtuu, kun tavoitteen pieneneminen on tämän koneen toleranssikertoimen sisällä. Oletusarvo on 1e7, eli toleranssi on noin 1e-8.

pgtol

ohjaa "L-BFGS-B"-menetelmän konvergenssia. Se on toleranssi projisoidulle gradientille nykyisessä hakusuunnassa. Tämän oletusarvo on nolla, kun tarkistus on tukahdutettu.

temp

ohjaa "SANN"-menetelmää. Se on jäähdytysaikataulun lähtölämpötila. Oletusarvo on 10.

tmax

on "SANN"-menetelmän funktion arviointien määrä kussakin lämpötilassa. Oletusarvo on 10.

Mahdolliset par:lle annetut nimet kopioidaan fn:lle ja gr:lle annettuihin vektoreihin. Huomaa, että mitään muita par:n attribuutteja ei kopioida.

Parametrivektorilla, joka välitetään fn:lle, on erityinen semantiikka, ja se voidaan jakaa kutsujen välillä: funktion ei pidä muuttaa tai kopioida sitä.