¿Es la optimización un tema difícil?

La optimización presenta dos tipos de dificultad:

  1. Dificultad matematica
    La optimización puede ser tan simple como configurar [math] \ frac {dy} {dx} = 0 [/ math]. La optimización matemática no se considera muy abstracta en comparación con otras ramas de las matemáticas (puras); todo lo que necesita es un buen fondo en cálculo y álgebra lineal. Sin embargo, para comprender los temas de optimización avanzada, necesitaría una sólida formación en análisis real. Si está trabajando en la optimización de sistemas dinámicos (en lugar de en estado estacionario), el nivel de dificultad aumenta significativamente. Los sistemas discretos y no lisos también requieren un fondo adicional [programación de enteros, programación de restricciones]. Si desea optimizar un sistema estocástico, necesitará algunos conocimientos de estadística [optimización robusta, estocástica].
  2. Dificultad practica
    Formular un buen modelo de optimización de un sistema del mundo real puede ser muy difícil (aunque no siempre).

    Si su problema es lineal o convexo, es bueno en su mayor parte (afortunadamente, una gran clase de problemas lo son; en particular, estos son problemas de optimización más pequeños o más simples que son una pieza en un algoritmo más grande; muchos de ellos se encuentran en la estimación y algoritmos de control).

    Si no, puede encontrar muchas dificultades que tendrá que superar (malos puntos de inicio, mala convergencia, inviabilidad de la ruta / punto, mal acondicionamiento, malos óptimos locales y una gran cantidad de fenómenos inexplicables y, a veces, aleatorios). Formular un problema no convexo general (de tamaño no trivial) y resolverlo de manera confiable * es un arte que requiere años de trabajo. Jeffrey Kantor tiene toda la razón sobre la desconcertante variedad de algoritmos y trucos. Cada modelador tiene una bolsa de trucos que funciona para un conjunto particular de problemas, adquiridos a través de años de golpear sus cabezas en las paredes y los teclados. Ningún libro de texto puede enseñarte esto.

Por supuesto, si no te importa nada de esto, en principio puedes usar un algoritmo metaheurístico o de caja negra (GA, Particle Swarm, etc.) y esperar que converja. Puede que no, o puede hacerlo muy lentamente. En muchos casos del mundo real, sin embargo, esto es lo suficientemente bueno.

* “de forma fiable” es un término relativo.

Tu reacción es completamente comprensible. Aunque la optimización es un concepto sencillo en principio (es decir, maximizar una función sujeta a restricciones definidas por otras funciones), en la práctica hay una desconcertante variedad de algoritmos, estrategias para formular problemas y pequeños “trucos” que a menudo son esenciales para obtener soluciones útiles. tiempo razonable. La ventisca de acrónimos no ayuda. Tampoco los nombres tentadores, como ‘redes neuronales’ y ‘algoritmos genéticos’, que no proporcionan mucha orientación sobre cuándo pueden o no ser particularmente útiles.

Si está interesado en las aplicaciones, los antecedentes matemáticos que necesita para comenzar son principalmente álgebra lineal con cierta exposición a hacer cálculos numéricos, cálculos multivariables y, para algunas aplicaciones, ecuaciones diferenciales.

Como mínimo, debe familiarizarse con la formulación y resolución de problemas no restringidos en unas pocas variables, los conceptos básicos de la resolución de ecuaciones lineales, los métodos de búsqueda simple en una dimensión y la programación lineal. Estos temas introducen conocimientos esenciales para formular y resolver problemas más difíciles. No se distraiga con herramientas exóticas hasta que tenga una comprensión sólida de estos fundamentos básicos.

Para un solo libro de texto, es difícil vencer a Nocedal y Wright, la optimización numérica (optimización numérica). Si sus intereses se inclinan más hacia las aplicaciones y la formulación de problemas, la creación de modelos en programación matemática, 5ª edición es una introducción única y muy legible. Desde el punto de vista informático, puede comenzar con excelentes herramientas de código abierto de COIN-OR y otras fuentes.

Además de las excelentes respuestas de Jeffrey Kantor y Quora User, sugiero obtener algunos antecedentes en las matemáticas de la convexidad. (Con frecuencia, esto será un capítulo o apéndice en un texto sobre optimización). Aprendiendo (a) lo que hace que un conjunto o función sea convexo (o cóncavo), (b) cómo se pueden representar los poliedros convexos en términos de desigualdades o puntos extremos y rayos, y (c) por qué esto importa en la optimización puede ayudarlo a comprender qué funciona y qué no, por qué existen las limitaciones, etc. … y posiblemente ahorrarle la vergüenza de publicar una pregunta tonta en un foro técnico (“Por qué ¿Mi intento de minimizar una función cóncava no funciona? “).