Verificando acceso…

Viktor

Optimización de Horarios Académicos

Viktor es el algoritmo propietario de Foris para la generación automatizada de horarios académicos. Opera como el cerebro computacional del portal Darwin: recibe toda la información del ciclo académico —asignaturas, demanda, docentes, aulas, restricciones— y produce una propuesta de horario óptima que cumple simultáneamente con decenas de restricciones institucionales.

¿Qué es Viktor?

Viktor es el algoritmo propietario de Foris para la generación automatizada de horarios académicos. Opera como el cerebro computacional del portal Darwin: recibe toda la información del ciclo académico —asignaturas, demanda, docentes, aulas, restricciones— y produce una propuesta de horario óptima que cumple simultáneamente con decenas de restricciones institucionales.

No es un sistema de reglas simples ni una heurística básica. Viktor implementa un algoritmo evolutivo multi-fase que explora millones de combinaciones posibles en segundos, con capacidad para manejar la complejidad real de una universidad mediana o grande.

El Problema que Resuelve

La programación académica es uno de los problemas de optimización combinatoria más complejos del mundo real:

  • Miles de estudiantes con currículos diferentes y requisitos académicos distintos
  • Docentes con disponibilidades parciales, cargas máximas y asignaturas habilitadas
  • Aulas con capacidades heterogéneas, tipos específicos (laboratorio, auditorio, sala de cómputo) y distancias entre edificios
  • Restricciones de créditos por período, compatibilidad entre asignaturas, crosslists y grupos espejo
  • Sinópticos (paquetes horarios) que deben ser factibles para cada cohorte de estudiantes

Resolver esto manualmente toma semanas y produce resultados subóptimos. Viktor lo hace en minutos, con métricas cuantificables de calidad.

Cómo Funciona

Fases del Algoritmo

Viktor ejecuta un pipeline multi-fase estructurado, donde cada etapa prepara la entrada para la siguiente:

Fase Descripción
Registry Carga y valida todos los datos de entrada: asignaturas, formatos, instructores, aulas, grillas horarias, demandas, cohortes
Cube Creation Construye el "cubo" de scheduling: determina cuántas secciones y subsecciones crear por demanda, aplicando el algoritmo de mincing para distribución óptima
Layerización Divide el cubo en capas según intervalos del ciclo académico (semanas, módulos) para procesamiento eficiente
Cube Merge Fusiona el cubo dinámico recién creado con el cubo estático (horario ya existente con sesiones bloqueadas)
Selección de Sinópticos Etiqueta paquetes horarios por cohorte, verificando que no haya colisiones entre asignaturas obligatorias
Inicialización Crea la población inicial de soluciones candidatas (cromosomas), asignando timeslots, salas e instructores
Loop Genético Itera sobre la población de soluciones aplicando operadores evolutivos y búsqueda local para minimizar conflictos y maximizar calidad
Post-procesamiento Refina la mejor solución: mejora la cardinalidad de instructores, la calidad de sinópticos y la asignación de aulas

Motor Genético

El corazón de Viktor es un algoritmo genético con búsqueda local, donde cada solución candidata (cromosoma) representa una asignación completa de sesiones a bloques horarios. El algoritmo evalúa cada solución con una función de penalización que considera:

  • HCV (Hard Constraint Violations) — Violaciones inaceptables: doble uso de sala, docente asignado en conflicto horario, exceso de capacidad.
  • SCV (Soft Constraint Violations) — Preferencias deseables pero no obligatorias: compacidad horaria, distribución equilibrada de carga docente, minimización de desplazamientos entre edificios.

El algoritmo mantiene una estructura de memoria evolutiva (MEM) que acumula conocimiento de buenas asignaciones parciales entre generaciones, orientando la búsqueda hacia regiones prometedoras del espacio de soluciones.

Moves de Scheduling

Para explorar el espacio de soluciones, Viktor define cuatro tipos de movimientos:

  • Move 0 — Reasignación de bloque horario a una sesión
  • Move 1 — Intercambio de bloques entre dos sesiones
  • Move 2 — Cadena de intercambios para destrabar conflictos
  • Move 3 — Reasignación compuesta con validación de sinópticos

Datos de Entrada

Viktor consume información estructurada proveniente de Darwin:

Tipo de dato Descripción
Asignaturas y formatos Qué se imparte y cómo (Teoría, Práctica, Laboratorio), sesiones y eventos por intervalo, prioridad de aulas
Demandas Cuántos estudiantes necesitan cada asignatura en cada ciclo y sede
Docentes Disponibilidades horarias, asignaturas habilitadas, carga mínima y máxima, docentes clave
Aulas Capacidad, tipo, edificio, distancias entre edificios
Grillas horarias Estructura de días y módulos por sede y jornada
Cohortes Grupos de estudiantes que comparten un conjunto de asignaturas y necesitan paquetes horarios compatibles
Cubo estático Sesiones ya existentes con bloqueos manuales (horario fijo del docente, sala reservada, etc.)

Resultados Generados

Output Visible en Darwin como
Secciones Agrupaciones de sesiones para cada demanda
Sesiones Bloques de clase con día, módulo, sala e instructor asignados
Grupos Grupos de inscripción disponibles para estudiantes
Sinópticos Paquetes horarios compatibles por cohorte
Reportes Métricas del algoritmo: penalizaciones, calidad, estadísticas de ejecución

Configuración

La institución puede ajustar el comportamiento de Viktor mediante:

  • Reglas del algoritmo — Configuradas en el módulo de Reglas de la Plataforma de Procesos. Definen restricciones específicas: qué salas son aptas para ciertos formatos, cómo seleccionar el canon de un crosslist, qué sesiones desbloquear automáticamente, cómo distribuir formatos en sinópticos.
  • Parámetros del algoritmo — Controlan el comportamiento del motor genético: tamaño de población, número de generaciones, tiempos máximos, estrategias de búsqueda local, cobertura mínima de sinópticos.
  • Bloqueos manuales — En el Editor de Horarios de Darwin, los usuarios pueden fijar manualmente sesiones, salas o docentes. Viktor respeta estos bloqueos al ejecutarse, integrando el juicio humano con la optimización automática.

Propuesta de Valor

Métrica Impacto
Tiempo de generación De semanas a minutos para un ciclo académico completo
Calidad del horario Menos conflictos, mejor distribución de carga docente, mayor cobertura de cohortes
Control institucional Las reglas son configurables sin código; el equipo académico puede ajustar restricciones sin intervención técnica
Hybrid scheduling Viktor y el equipo trabajan juntos: el algoritmo genera, el equipo edita, Viktor re-ejecuta respetando los cambios
Escalabilidad Maneja universidades con miles de secciones, cientos de docentes y múltiples sedes

Integración

Viktor opera dentro del ciclo de trabajo de Darwin:

  1. Paul proyecta la demanda del próximo período → informa el número de secciones requeridas.
  2. Darwin prepara los datos del escenario y lanza Viktor como proceso.
  3. Viktor genera el horario optimizado y lo escribe de vuelta en Darwin.
  4. El equipo académico revisa y edita en el Editor de Horarios.
  5. Las ediciones manuales pueden re-alimentar a Viktor en iteraciones sucesivas.