Articulo de referencia

Método de Nelder-Mead

Una iteración del método de Nelder-Mead sobre un espacio bidimensional. Buscar en la función de plátano de Rosenbrock Buscar sobre la función de Himmelblau Búsqueda mínima de Ne...

Una iteración del método de Nelder-Mead sobre un espacio bidimensional.
Buscar en la función de plátano de Rosenbrock
Buscar sobre la función de Himmelblau
Búsqueda mínima de Nelder-Mead de la función de Simionescu . Los vértices del simplex están ordenados por su valor, donde 1 tiene el valor más bajo (mejor).

El método de Nelder-Mead (también conocido como método simplex descendente , método ameba o método politopo ) es un método numérico que se utiliza para encontrar un mínimo o máximo local de una función objetivo en un espacio multidimensional. Es un método de búsqueda directa (basado en la comparación de funciones) y se aplica frecuentemente a problemas de optimización no lineal cuyas derivadas pueden ser desconocidas. Sin embargo, la técnica de Nelder-Mead es un método de búsqueda heurística que puede converger a puntos no estacionarios [ 1 ] en problemas que pueden resolverse mediante métodos alternativos. [ 2 ]

La técnica de Nelder-Mead fue propuesta por John Nelder y Roger Mead en 1965, [ 3 ] como un desarrollo del método de Spendley et al. [ 4 ]

Descripción general

El método utiliza el concepto de símplice , que es un politopo especial de n  +  1 vértices en n dimensiones. Ejemplos de símplices incluyen un segmento de línea en el espacio unidimensional, un triángulo en el espacio bidimensional, un tetraedro en el espacio tridimensional, etc.

El método aproxima un óptimo local de un problema con n variables cuando la función objetivo varía suavemente y es unimodal . Las implementaciones típicas minimizan funciones, y nosotros maximizamos.F(incógnita){\displaystyle f(\mathbf {x} )}minimizandoF(incógnita){\displaystyle -f(\mathbf {x} )}.

Por ejemplo, un ingeniero de puentes colgantes debe elegir el grosor de cada puntal, cable y pilar. Estos elementos son interdependientes, pero no es fácil visualizar el impacto de modificar alguno en particular. La simulación de estructuras tan complejas suele ser extremadamente costosa desde el punto de vista computacional, pudiendo tardar varias horas por ejecución. El método de Nelder-Mead, en su versión original, requiere no más de dos evaluaciones por iteración, salvo la operación de reducción descrita posteriormente, lo que resulta atractivo en comparación con otros métodos de optimización de búsqueda directa. Sin embargo, el número total de iteraciones para alcanzar el óptimo propuesto puede ser elevado.

El método de Nelder-Mead en n dimensiones mantiene un conjunto de n  +  1 puntos de prueba dispuestos como un simplex . Luego, extrapola el comportamiento de la función objetivo medida en cada punto de prueba para encontrar un nuevo punto y reemplazar uno de los puntos de prueba antiguos con el nuevo, y así progresa la técnica. El enfoque más simple es reemplazar el peor punto con un punto reflejado a través del centroide de los n puntos restantes. Si este punto es mejor que el mejor punto actual, podemos intentar extender exponencialmente a lo largo de esta línea. Por otro lado, si este nuevo punto no es mucho mejor que el valor anterior, entonces estamos cruzando un valle, por lo que reducimos el simplex hacia un punto mejor. Una explicación intuitiva del algoritmo de "Numerical Recipes": [ 5 ]

El método del simplex descendente ahora toma una serie de pasos, la mayoría de los cuales simplemente mueven el punto del simplex donde la función es máxima ("punto más alto") a través de la cara opuesta del simplex hasta un punto más bajo. Estos pasos se llaman reflexiones y están construidos para conservar el volumen del simplex (y, por lo tanto, mantener su no degeneración). Cuando es posible, el método expande el simplex en una u otra dirección para dar pasos más grandes. Cuando llega a un "fondo de valle", el método se contrae en la dirección transversal e intenta deslizarse por el valle. Si se da la situación de que el simplex intenta "pasar por el ojo de una aguja", se contrae en todas direcciones, apretándose alrededor de su punto más bajo (mejor).

A diferencia de los métodos de optimización modernos, la heurística de Nelder-Mead puede converger a un punto no estacionario, a menos que el problema satisfaga condiciones más estrictas que las necesarias para los métodos modernos. [ 1 ] Se conocen mejoras modernas sobre la heurística de Nelder-Mead desde 1979. [ 2 ]

Existen muchas variantes según la naturaleza del problema que se esté resolviendo. Una variante común utiliza un simplex pequeño de tamaño constante que sigue aproximadamente la dirección del gradiente (lo que produce el descenso más pronunciado ). Imagínese un pequeño triángulo en un mapa de elevación que se desplaza por un valle hasta un punto más bajo. Este método también se conoce como el método del poliedro flexible . Sin embargo, suele tener un rendimiento inferior al del método descrito en este artículo, ya que realiza pasos pequeños e innecesarios en áreas de poco interés.

Una posible variación del algoritmo NM

(Esto se aproxima al procedimiento descrito en el artículo original de Nelder-Mead).

Método de Nelder-Mead aplicado a la función de Rosenbrock

Estamos tratando de minimizar la funciónF(incógnita){\displaystyle f(\mathbf {x} )}, dóndeincógnitaRnorte{\displaystyle \mathbf {x} \in \mathbb {R} ^{n}}Nuestros puntos de prueba actuales sonincógnita1,,incógnitanorte+1{\displaystyle \mathbf {x} _{1},\ldots ,\mathbf {x} _{n+1}}.

  1. Ordenar según los valores en los vértices:
    F(incógnita1)F(incógnita2)F(incógnitanorte+1).{\displaystyle f(\mathbf {x} _{1})\leq f(\mathbf {x} _{2})\leq \cdots \leq f(\mathbf {x} _{n+1}).}
    Compruebe si el método debe detenerse. Consulte la sección Terminación (a veces denominada "convergencia").
  2. Calcularincógnitao{\displaystyle \mathbf {x} _ {o}}, el centroide de todos los puntos exceptoincógnitanorte+1{\displaystyle \mathbf {x} _ {n+1}}.
  3. Reflexión
    Calcular el punto reflejadoincógnitar=incógnitao+α(incógnitaoincógnitanorte+1){\displaystyle \mathbf {x} _{r}=\mathbf {x} _{o}+\alpha (\mathbf {x} _{o}-\mathbf {x} _{n+1})}conα>0{\displaystyle \alpha >0}.
    Si el punto reflejado es mejor que el segundo peor, pero no mejor que el mejor, es decirF(incógnita1)F(incógnitar)<F(incógnitanorte){\displaystyle f(\mathbf {x} _{1})\leq f(\mathbf {x} _{r})<f(\mathbf {x} _{n})},
    Luego, obtenga un nuevo simplex reemplazando el peor punto.incógnitanorte+1{\displaystyle \mathbf {x} _ {n+1}}con el punto reflejadoincógnitar{\displaystyle \mathbf {x} _{r}}y vaya al paso  1.
  4. Expansión
    Si el punto reflejado es el mejor punto hasta ahora,F(incógnitar)<F(incógnita1){\displaystyle f(\mathbf {x} _{r})<f(\mathbf {x} _{1})},
    luego calcular el punto expandidoincógnitami=incógnitao+γ(incógnitarincógnitao){\displaystyle \mathbf {x} _{e}=\mathbf {x} _{o}+\gamma (\mathbf {x} _{r}-\mathbf {x} _{o})}conγ>1{\displaystyle \gamma >1}.
    Si el punto expandido es mejor que el punto reflejado,F(incógnitami)<F(incógnitar){\displaystyle f(\mathbf {x} _{e})<f(\mathbf {x} _{r})},
    Luego, obtenga un nuevo simplex reemplazando el peor punto.incógnitanorte+1{\displaystyle \mathbf {x} _ {n+1}}con el punto ampliadoincógnitami{\displaystyle \mathbf {x} _ {e}}y vaya al paso  1;
    De lo contrario, obtenga un nuevo simplex reemplazando el peor punto.incógnitanorte+1{\displaystyle \mathbf {x} _ {n+1}}con el punto reflejadoincógnitar{\displaystyle \mathbf {x} _{r}}y vaya al paso  1.
  5. Contracción
    Aquí es seguro queF(incógnitar)F(incógnitanorte){\displaystyle f(\mathbf {x} _{r})\geq f(\mathbf {x} _{n})}. (Tenga en cuenta queincógnitanorte{\displaystyle \mathbf {x} _ {n}}es el segundo o "siguiente" al peor punto.)
    SiF(incógnitar)<F(incógnitanorte+1){\displaystyle f(\mathbf {x} _{r})<f(\mathbf {x} _{n+1})},
    Luego, calcula el punto contraído en el exterior.incógnitado=incógnitao+ρ(incógnitarincógnitao){\displaystyle \mathbf {x} _{c}=\mathbf {x} _{o}+\rho (\mathbf {x} _{r}-\mathbf {x} _{o})}con0<ρ0,5{\displaystyle 0<\rho \leq 0.5}.
    Si el punto contraído es mejor que el punto reflejado, es decirF(incógnitado)<F(incógnitar){\displaystyle f(\mathbf {x} _{c})<f(\mathbf {x} _{r})},
    Luego, obtenga un nuevo simplex reemplazando el peor punto.incógnitanorte+1{\displaystyle \mathbf {x} _ {n+1}}con el punto contratadoincógnitado{\displaystyle \mathbf {x} _{c}}y vaya al paso  1;
    De lo contrario, vaya al paso  6;
    SiF(incógnitar)F(incógnitanorte+1){\displaystyle f(\mathbf {x} _{r})\geq f(\mathbf {x} _{n+1})},
    Luego, calcula el punto contraído en el interior.incógnitado=incógnitao+ρ(incógnitanorte+1incógnitao){\displaystyle \mathbf {x} _{c}=\mathbf {x} _{o}+\rho (\mathbf {x} _{n+1}-\mathbf {x} _{o})}con0<ρ0,5{\displaystyle 0<\rho \leq 0.5}.
    Si el punto contraído es mejor que el peor punto, es decirF(incógnitado)<F(incógnitanorte+1){\displaystyle f(\mathbf {x} _{c})<f(\mathbf {x} _{n+1})},
    Luego, obtenga un nuevo simplex reemplazando el peor punto.incógnitanorte+1{\displaystyle \mathbf {x} _{n+1}}con el punto contratadoincógnitado{\displaystyle \mathbf {x} _{c}}y vaya al paso  1;
    De lo contrario, vaya al paso  6;
  6. Encoger
    Reemplazar todos los puntos excepto el mejor (incógnita1{\displaystyle \mathbf {x} _{1}}) con
    incógnitai=incógnita1+σ(incógnitaiincógnita1){\displaystyle \mathbf {x} _{i}=\mathbf {x} _{1}+\sigma (\mathbf {x} _{i}-\mathbf {x} _{1})}y vaya al paso  1.

Nota :α{\displaystyle \alpha },γ{\displaystyle \gamma },ρ{\displaystyle \rho }yσ{\displaystyle \sigma }son respectivamente los coeficientes de reflexión, expansión, contracción y reducción. Los valores estándar sonα=1{\displaystyle \alpha =1},γ=2{\displaystyle \gamma =2},ρ=1/2{\displaystyle \rho =1/2}yσ=1/2{\displaystyle \sigma =1/2}.

Para la reflexión , ya queincógnitanorte+1{\displaystyle \mathbf {x} _{n+1}}es el vértice con el valor asociado más alto entre los vértices, podemos esperar encontrar un valor más bajo en la reflexión deincógnitanorte+1{\displaystyle \mathbf {x} _{n+1}}en la cara opuesta formada por todos los vérticesincógnitai{\displaystyle \mathbf {x} _{i}}exceptoincógnitanorte+1{\displaystyle \mathbf {x} _{n+1}}.

Para la expansión , si el punto de reflexiónincógnitar{\displaystyle \mathbf {x} _{r}}es el nuevo mínimo a lo largo de los vértices, podemos esperar encontrar valores interesantes a lo largo de la dirección desdeincógnitao{\displaystyle \mathbf {x} _{o}}aincógnitar{\displaystyle \mathbf {x} _{r}}.

En cuanto a la contracción , siF(incógnitar)>F(incógnitanorte){\displaystyle f(\mathbf {x} _{r})>f(\mathbf {x} _{n})}, podemos esperar que un mejor valor estará dentro del simplex formado por todos los vérticesincógnitai{\displaystyle \mathbf {x} _{i}}.

Finalmente, el psiquiatra maneja el caso raro de que la contracción alejándose del punto más grande aumentaF{\displaystyle f}, algo que no puede ocurrir suficientemente cerca de un mínimo no singular. En ese caso, contraemos hacia el punto más bajo con la esperanza de encontrar un paisaje más simple. Sin embargo, Nash señala que la aritmética de precisión finita a veces puede no reducir realmente el simplex, e implementó una verificación de que el tamaño se reduce efectivamente. [ 6 ]

simplex inicial

El simplex inicial es importante. De hecho, un simplex inicial demasiado pequeño puede conducir a una búsqueda local, por lo que el NM puede atascarse más fácilmente. Por lo tanto, este simplex debe depender de la naturaleza del problema. Sin embargo, el artículo original sugirió un simplex donde se da un punto inicial comoincógnita1{\displaystyle \mathbf {x} _{1}}, mientras que los demás se generan con un paso fijo a lo largo de cada dimensión por turno. Por lo tanto, el método es sensible al escalado de las variables que componenincógnita{\displaystyle \mathbf {x} }.

Terminación

Se necesitan criterios para romper el ciclo iterativo. Nelder y Mead utilizaron la desviación estándar muestral de los valores de la función del simplex actual. Si estos caen por debajo de cierta tolerancia, el ciclo se detiene y se devuelve el punto más bajo del simplex como óptimo propuesto. Nótese que una función muy "plana" puede tener valores de función casi iguales en un dominio amplio, por lo que la solución será sensible a la tolerancia. Nash añade la prueba de contracción como otro criterio de terminación. [ 6 ] Nótese que los programas terminan, mientras que las iteraciones pueden converger.

Véase también

Referencias

  1. 1 2
    • Powell, Michael JD (1973). "Sobre las direcciones de búsqueda para algoritmos de minimización". Programación matemática . 4 : 193–201 . doi : 10.1007/bf01584660 . S2CID 45909653 . 
    • McKinnon, KIM (1999). "Convergencia del método simplex de Nelder-Mead a un punto no estacionario". SIAM Journal on Optimization . 9 : 148–158 . CiteSeerX 10.1.1.52.3900 . doi : 10.1137/S1052623496303482 . (Resumen del algoritmo en línea).
  2. 1 2
    • Yu, Wen Ci. 1979. "Bases positivas y una clase de técnicas de búsqueda directa". Scientia Sínica [ Zhongguo Kexue ]: 53—68.
    • Yu, Wen Ci. 1979. "La propiedad convergente de la técnica evolutiva simplex". Scientia Sínica [ Zhongguo Kexue ]: 69–77.
    • Kolda, Tamara G .; Lewis, Robert Michael; Torczon, Virginia (2003). "Optimización mediante búsqueda directa: nuevas perspectivas sobre algunos métodos clásicos y modernos". SIAM Rev. 45 ( 3): 385– 482. CiteSeerX 10.1.1.96.8672 . doi : 10.1137/S003614450242889 . 
    • Lewis, Robert Michael; Shepherd, Anne; Torczon, Virginia (2007). "Implementación de métodos de búsqueda de conjuntos generadores para la minimización con restricciones lineales". SIAM J. Sci. Comput . 29 (6): 2507– 2530. Bibcode : 2007SJSC...29.2507L . CiteSeerX 10.1.1.62.8771 . doi : 10.1137/050635432 . 
  3. Nelder, John A.; R. Mead (1965). "Un método simplex para la minimización de funciones". Computer Journal . 7 (4): 308– 313. doi : 10.1093/comjnl/7.4.308 .
  4. Spendley, W.; Hext, GR; Himsworth, FR (1962). "Aplicación secuencial de diseños simplex en optimización y operación evolutiva". Technometrics . 4 (4): 441– 461. doi : 10.1080/00401706.1962.10490033 .
  5. Press, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007). «Sección 10.5. Método simplex descendente en multidimensiones» . Numerical Recipes: The Art of Scientific Computing (3.ª ed.). Nueva York: Cambridge University Press. ISBN  978-0-521-88068-8.
  6. 1 2 Nash, JC (1979). Métodos numéricos compactos: álgebra lineal y minimización de funciones . Bristol: Adam Hilger. ISBN 978-0-85274-330-0.

Lecturas adicionales

  • Avriel, Mordecai (2003). Programación no lineal: análisis y métodos . Dover Publishing. ISBN 978-0-486-43227-4.
  • Coope, ID; Price, CJ (2002). "Bases positivas en optimización numérica". Optimización computacional y aplicaciones . 21 (2): 169– 176. doi : 10.1023/A:1013760716801 . S2CID 15947440 . 
  • Gill, Philip E.; Murray, Walter; Wright, Margaret H. (1981). «Métodos para funciones no suaves multivariadas». Optimización práctica . Nueva York: Academic Press. págs. 93-96 . ISBN  978-0-12-283950-4.
  • Kowalik, J.; Osborne, MR (1968). Métodos para problemas de optimización sin restricciones . Nueva York: Elsevier. págs. 24–27 . ISBN  0-444-00041-0.
  • Swann, WH (1972). «Métodos de búsqueda directa». En Murray, W. (ed.). Métodos numéricos para la optimización sin restricciones . Nueva York: Academic Press. pp. 13–28 . ISBN  978-0-12-512250-4.
  • Explicación y visualización del algoritmo Nelder-Mead (Simplex descendente) con la función banana de Rosenbrock.
  • John Burkardt: Código Nelder-Mead en Matlab : tenga en cuenta que una variación del método Nelder-Mead también está implementada por la función fminsearch de Matlab.
  • Optimización de Nelder-Mead en Python con la biblioteca SciPy.
  • nelder-mead - Una implementación en Python del método de Nelder-Mead
  • NelderMead() - Una implementación en Go/Golang
  • SOVA 1.0 (software gratuito) Archivado el 6 de junio de 2013 en Wayback Machine - Optimización simplex para diversas aplicaciones
  • - HillStormer, una herramienta práctica para la optimización simplex con restricciones lineales, multivariables y no lineales, desarrollada por Nelder Mead.