2013-03-02 10 views
9

Qualcuno sa quale pacchetto R ha l'implementazione dell'algoritmo Generalized Reduced Gradient (GRG2)? grazieAlgoritmo a gradiente ridotto generalizzato (GRG2) in R

+2

'library (" sos "); findFn ("{generalized reduced gradient}"); findFn ("GRG2") 'suggerisce che potresti essere sfortunato. (Googling GRG2 suggerisce che l'implementazione principale di questo algoritmo sia nel Risolutore di Excel.) Piuttosto che chiedere "questo algoritmo è disponibile?", Potresti chiedere "Come posso risolvere il seguente problema?" –

+0

Questa era una buona domanda, ma 2 anni e nessuna risposta ferma. Qualcuno ha creato un GRG o GRG2 nella funzione R? Chiedo perché ho anche una situazione in cui il risolutore di Excel (basato su una sorta di GRG) è veloce e preciso su un problema che non funziona molto bene con diversi metodi optim(). – Anthony

+0

È ancora attuale. Non ho trovato alcuna implementazione Java che mi aspettavo esistesse. – alnasfire

risposta

3

Dal momento che @BenBolker ha svolto il lavoro iniziale nel trovare il tipo di funzionalità che si desidera replicare, sto postando un follow-up che potrebbe essere utile. Un recente scambio su rhelp si è conclusa con una citazione che è stato nominato per il pacchetto R fortunes, anche se non è chiaro se è stata accettata:

"The idea that the Excel solver "has a good reputation for being fast 
and accurate" does not withstand an examination of the Excel solver's 
ability to solve the StRD nls test problems. ... 
Excel solver does have the virtue that it will always produce an 
answer, albeit one with zero accurate digits." 

"I am unaware of R being applied to the StRD, but I did apply S+ to the 
StRD and, with analytic derivatives, it performed flawlessly." 

From: Bruce McCullough <[email protected]> 
Date: February 20, 2013 7:58:24 AM PST 

Questo è il link per il lavoro autonomo citato documentare i fallimenti del Risolutore di Excel (che ora sappiamo è alimentato da una qualche versione dell'algoritmo GRG2) da McCullough: www.pages.drexel.edu/~bdm25/chap8.pdf e il link al sito del NIST per i problemi di test sono qui: http://www.itl.nist.gov/div898/strd/nls/nls_info.shtml e http://www.itl.nist.gov/div898/strd/nls/nls_main.shtml

il commento negativo (portati alla mia attenzione da un downvote) di @jwg mi ha spinto a rifare la ricerca suggerita da Bolker. Ancora nessun colpo per findFn("GRG2"). Posso segnalare diversi colpi per "GRG", nessuno di loro apparentemente a un risolutore, ed è stato divertito dal fatto che uno di loro ha l'espansione accattivante di "General Random Guessing modello". Ciò mi è sembrato particolarmente divertente quando la spinta della mia discutibile non-risposta era che scegliere di usare il solutore di Excel lasciava uno veramente incerto sull'accuratezza della soluzione. Sono impenitente sulla pubblicazione di una "risposta" che non fornisce esattamente ciò che è stato richiesto, ma avverte invece gli utenti che potrebbero non essere impegnati religiosamente nel modo Microsoft in questo ambito statistico/matematico. La mancanza di qualsiasi sforzo da parte degli sviluppatori R distribuiti di fornire un drop-in-replacement per il risolutore di Excel è qualcosa su cui riflettere seriamente.

+0

Il collegamento per i problemi di test è morto. C'è un modo per ritrovarlo? –

+0

Dovresti lavorare sulle tue capacità di google. I primi hit per una ricerca su: "NIST StRD nls test problem" –

+0

I siti dei gov sono spesso terribili con i loro dati, ho pensato che sarebbe stato trasferito. Ho anche pensato che sarebbe stato meglio che la tua risposta fornisse un link reale e non volessi modificare il contenuto eventualmente spostato. Grazie per l'aggiornamento. –

1

Alcune intuizioni relavant provengono da this post to R-help da uno scienziato statistico stimabile:

Il codice in Excel è in realtà chiamato GRG2 (il 2 non importa). A differenza di uno qualsiasi dei metodi per optim(), può gestire i vincoli di disuguaglianza non lineare e non ha bisogno di una soluzione iniziale fattibile.

C'è un trafiletto su di esso nella guida di ottimizzazione NEOS: http://www-fp.mcs.anl.gov/otc/Guide/SoftwareGuide/Blurbs/grg2.html

A giudicare da questo trafiletto, sarà simile alla L-BFGS-B per problemi senza vincoli o vincoli box. -thomas

Thomas Lumley Assoc. Professore, Biostatistica presso tlumley u.washington.edu University of Washington, Seattle

Così in alcune condizioni può essere adatto da utilizzare optim come questo al posto del risolutore di Excel:

optim(pars, 
     OptPars, 
     ... , 
     method = "L-BFGS-B") 

Nota che la guida all'ottimizzazione di NEOS è qui: http://neos-guide.org/content/optimization-guide e GRG2 è menzionato in questa pagina: http://neos-guide.org/content/reduced-gradient-methods Elenca BFGS, CONOPT e molti altri come algoritmi correlati. L'articolo descrive questi come "algoritmo Lagrangian con proiezione aumentata". Secondo lo Optimization CTV, questi algoritmi possono essere trovati in nloptr, alabama e Rsolnp.

Ho avuto buoni risultati (a sei sig fichi) tra il solutore Excel e R utilizzando il pacchetto optimx, ma YMMV.