es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Fase de Heurística de Construcción más lenta desde la migración de 7.28 a 8.14.

Después de migrar Optaplanner de la versión 7.28.0.FINAL a la versión 8.14.1.FINAL, la fase de heurística de construcción definida en la configuración de la siguiente manera:

<constructionheuristic>
  <constructionheuristictype>STRONGEST_FIT</constructionheuristictype>
</constructionheuristic>

es significativamente más lenta que antes. Cuando se utiliza la versión 7.28, el solucionador es capaz de procesar con una velocidad de cálculo de puntuación de 6446/segs frente a 102/segs (50 veces más lento) con la versión 8.14.

No hubo cambios en constraints.drl, ningún cambio en el modelo excepto que se eliminó el campo movableEntitySelectionFilter de PlanningEntity y se reemplazó por un pinningFilter (que tiene la lógica opuesta implementada). Aparte de eso y la migración de actualización diferente, no puedo explicar ni solucionar la caída de rendimiento en la primera fase. No es crítico, ya que tarda “solo” de 30 a 50 minutos en completar la fase de CH (en lugar de 2-5 minutos antes).

¿Es posible que haya ocurrido algún cambio de rendimiento (que requiera una configuración diferente) desde la versión 7 para la fase de CH? He leído la documentación sobre la escalabilidad de CH, pero no creo que esté relacionada con esta caída de rendimiento.

EDIT, después de perfilar la tarea que ejecuta solver.solve(), aquí hay una captura del tiempo de CPU:

visualvm_planner_profile_cpu_snapshot

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que ha habido una caída significativa en el rendimiento de la fase de heurística de construcción después de migrar de la versión 7.28.0.FINAL de Optaplanner a la versión 8.14.1.FINAL. La configuración para la fase de heurística de construcción sigue siendo la misma, pero la velocidad de cálculo de puntuación del solucionador ha pasado de 6446/sec a 102/sec, lo que es 50 veces más lento. Sin embargo, no ha habido cambios en las restricciones.drl o en el modelo.

    No está claro si ha habido alguna variación en el rendimiento desde la versión 7 para la fase de heurística de construcción que pudiera requerir una configuración diferente. Se ha revisado la documentación sobre la escalabilidad de la fase de heurística de construcción, pero no se ha encontrado nada que parezca estar relacionado con esta caída de rendimiento.

    Después de perfilar la tarea que ejecuta el método solver.solve(), se ha descubierto que el tiempo de CPU es significativamente mayor en la versión 8.14.1.FINAL. Esta información sugiere que el problema podría estar relacionado con una implementación interna de la versión 8 para la fase de heurística de construcción. Es necesaria una investigación adicional para identificar y resolver el problema de rendimiento.

Comments are closed.