¿Qué método es el más adecuado para resolver problemas de programación de enfermería, programación dinámica o algoritmos genéticos, y por qué?

Los algoritmos genéticos tienen varias desventajas, en comparación con métodos como la programación dinámica o la programación de enteros mixtos.

El mayor problema es que los algoritmos genéticos no proporcionan una medida precisa de su progreso: es difícil saber si su GA finaliza porque ha encontrado un verdadero óptimo global, o simplemente se ha detenido en un vecindario donde los vecinos que encontró en los últimos pasos cruzados no existen Ya no es una mejora.

Otro problema es que los GA no manejan bien las restricciones: es posible penalizar las violaciones de restricciones en la función de adecuación y restringir el cruce para crear solo soluciones factibles, pero estos enfoques tienen defectos.

No se garantiza que la penalización funcione, y requiere ajuste de parámetros y múltiples ejecuciones, mientras que restringir el cruce aumenta el tiempo necesario para generar nuevos candidatos y reduce el vecindario de un candidato determinado. Esto lleva a la AG a encontrar más óptimos locales.

La principal ventaja de un GA es su tolerancia a las funciones de adecuación no lineales y / o discontinuas, y el hecho de que los GA son capaces de producir una respuesta razonable en conjuntos de datos que son demasiado grandes para que otros métodos sean manejables.

Sin embargo, si puede utilizar un algoritmo exacto que produce una solución demostrablemente óptima, existen razones de peso para hacerlo.