¿Puede un motor de reglas ayudarme a generar un horario para una universidad?

Rule Engine definitivamente puede ayudar, pero normalmente no es suficiente.

Por lo general, las “reglas” se utilizan para calcular la función de adecuación de una solución dada, a fin de discriminar entre todas las soluciones posibles, las que son válidas y entre las válidas, las más optimizadas. Por lo general, las reglas son la forma preferida de determinar la validez y el valor de aptitud (o “puntaje”) de una solución porque las reglas pueden ser manejadas fácilmente por analistas de negocios y expertos en el dominio, en lugar de codificarlas con un lenguaje de programación. En su ejemplo, la regla se usaría para declarar que el mismo maestro no puede asignarse a dos cursos simultáneos; La regla también podría usarse para declarar cuánto “pesado” podría ser un horario dado para que los estudiantes lo sigan.

Luego, se utiliza un algoritmo de resolución para determinar las soluciones que deben verificarse para verificar su validez y que la función de aptitud física debe medirlas para encontrar las más optimizadas; El punto clave es que el algoritmo debe iterar a través de esto aprovechando la heurística, simplemente alternar entre todas las posibles soluciones por fuerza bruta normalmente no es factible porque el problema se vuelve NP-duro (es decir, tomaría una eternidad dar la solución más óptima). En su ejemplo, el solucionador intentaría todos los horarios posibles, descartaría los no válidos y trataría de encontrar los “menos pesados”, tratando de caminar a pesar de todo esto con algunas heurísticas porque solo aplicando fuerza bruta tomaría una eternidad calcular .

En resumen:

  • Reglas para discriminar soluciones válidas y determinar la función de aptitud / “puntaje” de una solución válida
  • Algoritmo y marco de trabajo para resolver de manera eficiente entre todas las soluciones para verificar las soluciones válidas y más optimizadas

Le sugiero que consulte OptaPlanner (http://www.optaplanner.org/), que es un marco de software gratuito y de código abierto, alternativamente / también con soporte comercial si lo prefiere RedHat, y es muy bueno porque está integrado con Drools Rule Engine framework, para definir las reglas, y proporciona un algoritmo solucionador con varias heurísticas. En la documentación también puede encontrar dos ejemplos / demostraciones que creo que son muy similares a su caso de uso (calendario del curso, programación del trabajo del proyecto).