Metodo di Nelder-Mead
# Metodo di Nelder-Mead

Il metodo Nelder-Mead, noto anche come metodo del simplesso (da non confondere con l'omonimo metodo di programmazione lineare) o metodo ameba, è un metodo di ottimizzazione non lineare di funzioni definite su un dominio a n dimensioni. È un metodo di ricerca euristica che può convergere a punti non stazionari nel caso di problemi risolubili con metodi alternativi. Il metodo prende il nome dai matematici John Nelder e Roger Mead, che l'hanno pubblicato nel 1965.

## Considerazioni generali

Il metodo non fa uso delle derivate e si basa sul concetto di simplesso, un particolare tipo di politopo con n+1 vertici in uno spazio ad n dimensioni; esempi di simplesso sono un segmento in una retta, un triangolo nel piano, un tetraedro nello spazio etc. Il metodo approssima il punto di ottimo locale di un problema in n variabili quando la funzione obiettivo è liscia ed unimodale.

Il metodo genera una nuova posizione di test estrapolando il comportamento della funzione obiettivo valutata in ogni punto del dominio ai vertici di un simplesso. L'algoritmo quindi sceglie uno di questi punti, da rimpiazzare con un nuovo punto. Il passo più semplice è rimpiazzare il punto più lontano dall'ottimo con il centroide dei restanti n punti: se la valutazione nel nuovo punto è migliore rispetto al punto corrente, si continua la ricerca con andamento esponenziale nella direzione individuata dal punto, altrimenti si cerca in direzione di un punto che fornisca una valutazione migliore.

A differenza dei moderni metodi di ottimizzazione, il metodo di Nelder–Mead può convergere su punti non stazionari se il problema non soddisfa condizioni più forti. Il metodo è stato migliorato significativamente già dal 1979.

Esistono diverse varianti del metodo, a seconda della natura del problema da risolvere. Una tecnica comune prevede l'impiego di un piccolo simplesso di ampiezza costante che segue in maniera approssimativa la direzione del gradiente (che rappresenta la direzione di massima variazione della funzione).

## Possibile formulazione del metodo Nelder-Mead

* 1. Ordinamento secondo il valore della funzione nei vertici del simplesso:

       $f({\textbf {x}}_{1})\leq f({\textbf {x}}_{2})\leq \cdots \leq f({\textbf {x}}_{n+1})$
* 2. Calcolo del baricentro ${\textbf {x}}_{o}$ dei vertici escluso ${\textbf {x}}_{n+1}$.
* 3. Riflessione

       Si calcola il punto riflesso secondo ${\textbf {x}}_{r}={\textbf {x}}_{o}+\alpha ({\textbf {x}}_{o}-{\textbf {x}}_{n+1})$
       Se il punto riflesso è migliore del penultimo punto peggiore, ma non più valido del punto migliore, es.: $f({\textbf {x}}_{1})\leq f({\textbf {x}}_{r})<f({\textbf {x}}_{n})$,
       allora si determina un nuovo simplesso sostituendo il punto peggiore ${\textbf {x}}_{n+1}$ con il punto riflesso ${\textbf {x}}_{r}$, e si torna al passo 1.
* 4. Espansione

       Se il punto che è stato riflesso è il migliore, con $f({\textbf {x}}_{r})<f({\textbf {x}}_{1}),$ allora si calcola il punto espanso secondo ${\textbf {x}}_{e}={\textbf {x}}_{o}+\gamma ({\textbf {x}}_{r}-{\textbf {x}}_{o})$
       Se il punto espanso così trovato è migliore del punto riflesso, secondo $f({\textbf {x}}_{e})<f({\textbf {x}}_{r})$, allora si determina un nuovo simplesso sostituendo il punto peggiore ${\textbf {x}}_{n+1}$ con il punto ottenuto nell'espansione ${\textbf {x}}_{e}$ e si ritorna al passo 1.
       Altrimenti si determina un nuovo simplesso sostituendo il punto peggiore ${\textbf {x}}_{n+1}$ con il punto riflesso ${\textbf {x}}_{r}$, e si torna al passo 1.
       Nel caso restante, quando ad esempio il punto ottenuto dalla riflessione non è migliore del penultimo punto peggiore, si avanza al passo 5.
* 5. Contrazione

       Raggiunto questo punto si ha certamente $f({\textbf {x}}_{r})\geq f({\textbf {x}}_{n})$
       Si determina un punto di contrazione ${\textbf {x}}_{c}={\textbf {x}}_{o}+\rho ({\textbf {x}}_{o}-{\textbf {x}}_{n+1})$
       Se il punto di contrazione è migliore del punto peggiore, es. $f({\textbf {x}}_{c})<f({\textbf {x}}_{n+1})$, allora si determina un nuovo simplesso sostituendo il punto peggiore ${\textbf {x}}_{n+1}$ con il punto di contrazione ${\textbf {x}}_{c}$, e si torna al passo 1.
       Altrimenti si avanza al passo 6.
* 6. Riduzione

       Tutti i punti tranne il migliore vengono rimpiazzati con
       ${\textbf {x}}_{i}={\textbf {x}}_{1}+\sigma ({\textbf {x}}_{i}-{\textbf {x}}_{1})\;\forall i\in \{2,\dots ,n+1\}$
       quindi si torna al passo 1.

Nota: $\alpha$, $\gamma$, $\rho$ e $\sigma$ sono rispettivamente i coefficienti di riflessione, espansione, contrazione e riduzione. I valori più comunemente impiegati sono $\alpha =1$, $\gamma =2$, $\rho =-1/2$ e $\sigma =1/2$.

Per la riflessione, essendo ${\textbf {x}}_{n+1}$ il vertice associato al maggior valore, ci si aspetta di trovare un valore più basso nella riflessione di ${\textbf {x}}_{n+1}$ nella faccia opposta formata da tutti i vertici ${\textbf {x}}_{i}$ escluso ${\textbf {x}}_{n+1}$. Per l'espansione, se il punto riflesso ${\textbf {x}}_{r}$ è il nuovo minimo tra i vertici ci si aspetta di trovare valori interessanti nella direzione da ${\textbf {x}}_{o}$ verso ${\textbf {x}}_{r}$. Per quanto riguarda la contrazione, se $f({\textbf {x}}_{r})>f({\textbf {x}}_{n})$ ci si aspetta un valore migliore dentro il simplesso formato dai vertici ${\textbf {x}}_{i}$. Infine, la riduzione gestisce il raro caso nel quale la contrazione aumenta il valore di $f$, cosa che non succede verosimilmente quando si è sufficientemente vicino ad un punto di minimo non singolare. La determinazione del simplesso iniziale è importante, in quanto un simplesso iniziale troppo piccolo può portare ad una ricerca locale, aumentando il rischio di insuccesso. Per tale motivo, il simplesso iniziale deve essere costruito accuratamente e facendo attenzione alla natura del problema.

