Sembrano esserci due tipi principali di funzioni di test per gli ottimizzatori senza derivato:
- one-liner come la funzione Rosenbrock e seguenti, con punti di partenza
- insiemi di punti dati reali, con un interpolatore
È possibile confrontare diciamo 10d Rosenbrock con qualche reale problema 10d?
Si potrebbe confrontare in vari modi: descrivere la struttura dei minimi locali
o eseguire gli ottimizzatori ABC su Rosenbrock e su alcuni problemi reali;
ma entrambi sembrano difficili.
(Forse teorici e sperimentatori sono solo due culture abbastanza diverse, quindi sto chiedendo una chimera?)
Guarda anche:
- domanda scicomp.SE: dove si possono ottenere buoni set di dati / problemi di test per testare algoritmi / routine?
- Hooker, "Test di euristica: abbiamo sbagliato tutto" è sconvolgente: "l'enfasi sulla concorrenza ... ci dice quali algoritmi sono migliori ma non perché".
(Aggiunto a settembre 2014):
Il diagramma seguente confronta 3 algoritmi DFO su 14 funzioni di test in 8d da 10 punti di partenza casuali: BOBYQA PRAXIS SBPLX di NLOpt
14 funzioni di test N-dimensionali, Python sotto gist.github da questo Matlab di A. Hedar 10 punti di partenza casuali uniformi nel riquadro di delimitazione di ciascuna funzione.
Su Ackley, ad esempio, la riga in alto mostra che SBPLX è il migliore e PRAXIS terribile; su Schwefel, il pannello in basso a destra mostra SBPLX che trova un minimo sul 5 ° punto di partenza casuale.
Nel complesso, BOBYQA è il migliore su 1, PRAXIS su 5 e SBPLX (~ Nelder-Mead con riavvii) su 7 su 13 funzioni di test, con Powersum un lancio. YMMV! In particolare, Johnson afferma: "Ti consiglierei di non utilizzare il valore di funzione (ftol) o le tolleranze dei parametri (xtol) nell'ottimizzazione globale".
Conclusione: non mettere tutti i tuoi soldi su un cavallo o su una funzione di test.