La optimización presenta dos tipos de dificultad:
- 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]. - 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.