Paul es el algoritmo de proyección de demanda e inscripciones del portal Darwin. Su función central es predecir, para un período académico futuro, qué cursos tomará cada estudiante activo —curso por curso, alumno por alumno— y agregar esas predicciones individuales en cifras de demanda por asignatura.
¿Qué es Paul?
Paul es el algoritmo de proyección de demanda e inscripciones del portal Darwin. Su función central es predecir, para un período académico futuro, qué cursos tomará cada estudiante activo —curso por curso, alumno por alumno— y agregar esas predicciones individuales en cifras de demanda por asignatura.
El resultado alimenta directamente la planificación del ciclo: cuántas secciones abrir, con qué cupos, en qué sedes. Sin Paul, esta decisión se toma con datos históricos crudos o intuición. Con Paul, se toma con una proyección individual de toda la población estudiantil.
El Problema que Resuelve
Las universidades enfrentan un dilema recurrente al planificar cada período:
- Si abren pocas secciones, los estudiantes no encuentran cupo y se retrasan.
- Si abren demasiadas, las secciones quedan vacías y se desperdician recursos docentes y de infraestructura.
La causa raíz es la dificultad de proyectar la demanda con precisión: los estudiantes avanzan por mallas curriculares heterogéneas, tienen restricciones de prerequisitos, límites de créditos, patrones de carga variables y equivalencias. Modelar todo eso manualmente es inviable.
Paul lo hace automáticamente, con explicabilidad a nivel de estudiante.
Modos de Ejecución
Paul soporta cuatro tipos de proyección:
| Tipo | Descripción |
|---|---|
Proyección de Inscripciones (recommend_courses) |
Recomienda cursos específicos por alumno simulando su avance curricular, luego agrega la demanda total por asignatura |
Proyección de Actas (forecast_evaluations) |
Predice qué estudiantes de las inscripciones actuales aprobarán o reprobarán cada asignatura |
Regresión de Demanda (demand_regression) |
Usa regresión estadística sobre datos históricos para proyectar demanda en cursos de nivel avanzado |
Proyección de Demanda Directa (forecast_demands) |
Convierte proyecciones de inscripción en cifras de demanda por asignatura |
El flujo más completo es la Proyección de Inscripciones, que ejecuta una cadena de cuatro pasos:
Avance curricular por alumno
↓
Recomendación de cursos por alumno
↓
Agregación en demanda por asignatura
↓
Publicación de resultados en Darwin
Cómo Funciona la Proyección de Inscripciones
1. Cálculo de Avance Curricular
Paul carga el historial académico de cada estudiante activo: cursos aprobados, reprobados, convalidados y en curso actual. Para cada alumno, ejecuta un algoritmo de matching que recorre el árbol curricular (plan de estudios con sus niveles, subplanes, materias obligatorias y electivas) y determina:
- Qué materias ya completó y en cuáles.
- Qué materias están disponibles (requisitos cumplidos).
- Qué carga ya acumuló en el período.
2. Recomendación de Cursos por Alumno
Con el avance calculado, Paul genera una lista de cursos recomendados para cada estudiante respetando:
- Prerequisitos y corequisitos — Solo recomienda materias que el alumno puede tomar legalmente.
- Carga máxima por período — Respeta los límites de créditos y materias configurados.
- Spread de niveles — Evita recomendar materias de niveles muy dispares simultáneamente.
- Reglas institucionales — Cada institución puede configurar reglas adicionales: cursos obligatorios de primer período, restricciones por tipo de asignatura, materias de modalidad especial.
3. Agregación de Demanda
Las recomendaciones individuales se consolidan en una tabla de demanda por curso: cuántos estudiantes tomarán cada asignatura en el período proyectado, desglosado por campus, programa y cohorte.
4. Publicación
Los resultados se publican directamente en Darwin vía API: inscripciones proyectadas, demandas por curso y actas simuladas quedan disponibles en el sistema para que el equipo de planificación los revise y ajuste en el Editor de Demanda.
Reportes Generados
Paul produce reportes descargables en Excel que incluyen:
- Análisis de proyección de demanda: estadísticas por curso —demanda proyectada, comparación con períodos anteriores, nivel de confianza.
- Análisis de proyección de inscripciones: detalle por alumno —cursos recomendados, avance curricular, patrones de carga.
Estos reportes permiten al equipo académico entender por qué se proyecta cierta demanda, no solo cuánta.
Reglas Institucionales
Paul incluye un motor de reglas por institución que permite personalizar el comportamiento del algoritmo de recomendación sin modificar el código:
| Tipo de Regla | Función |
|---|---|
extra_recommender_courses |
Agregar cursos especiales que siempre se recomiendan (ej. semanas de desarrollo) |
convalidate_subject_rules |
Convalidación automática de asignaturas según criterios específicos |
filter_subjects_rules |
Filtrar materias de un plan según condiciones del estudiante |
demand_types |
Clasificar el tipo de demanda por recomendación (obligatoria, electiva, especial) |
cannot_recommend_subject |
Excluir asignaturas específicas de la recomendación |
alternative_priority_inside_plan |
Priorizar materias dentro de un plan electivo |
extra_corequisites |
Agregar corequisitos adicionales no definidos en el catálogo |
Estas reglas permiten modelar las particularidades de mallas curriculares complejas que los motores de recomendación genéricos no pueden capturar.
Propuesta de Valor
| Métrica | Impacto |
|---|---|
| Precisión | Proyección a nivel de estudiante individual, considerando su malla real y avance específico |
| Explicabilidad | Los reportes muestran por qué cada alumno tiene cierta demanda proyectada |
| Velocidad | Procesa toda la población activa de una institución en un solo run automático |
| Integración directa | Los resultados van directo a Darwin; el equipo ajusta, no construye desde cero |
| Iterabilidad | Se pueden ejecutar múltiples escenarios y comparar proyecciones antes de definir la apertura de secciones |
Integración con el Suite
Paul opera dentro del ciclo de planificación de Darwin:
- El equipo académico lanza un proceso de proyección desde Darwin.
- Paul accede a los datos históricos y actuales vía la API de Darwin.
- Calcula el avance curricular de cada estudiante y genera recomendaciones.
- Publica los resultados en Darwin: demandas proyectadas visibles en el módulo de Proyección de Demanda.
- El equipo revisa y ajusta manualmente en el Editor de Demanda.
- La demanda aprobada se asigna al escenario de planificación → alimenta a Viktor para generar el horario.
Paul y Viktor trabajan en secuencia: la proyección de demanda de Paul define el problema de optimización que Viktor resuelve.