Como probablemente el lector habrá adivinado estamos
tratando de armar el problema de manera que pueda resolverse usando
redes de transporte y algoritmo de Ford-Fulkerson. Cuando se desea
repartir la primera materia de cada profesor se debe crear una matriz de
preferencias
.
Si el profesor
puede trabajar el día
en la lección
,
hacemos
,
en donde
es la casilla de
correspondiente al día
,
lección
y sección
.
Expliquemos un poco más esto. Las entradas de la matriz
pueden organizarse como si se tratasen de un vector, colocando, por
ejemplo una fila después de la otra, o bien una columna después de la
otra. La segunda opción no es tan recomendable debido a que esto haría
que las lecciones semanales fuesen asignadas casi todas el mismo día, y
esto, por razones pedagógicas, resulta inapropiado. Es mejor la primera
opción. Por supuesto hay otras forma de organizar o bien indexar la
matriz
(para tratarla como si fuese un vector) y esto dependerá del tipo de
distribución que se desee. En
orario,
por ejemplo, se buscó que la repartición quedará gradeada, es decir,
que de la sección o grupo 1-1, un profesor pasará al 1-2, después al
1-3, etc. Un esquema gradeado ayuda al docente en el sentido de que
puede aplicar un mismo examen en varios grupos toda vez que no haya un
receso de por medio. Además algunos estudiantes y el profesores
prefieren un contacto de una lección pues les resulta menos cansado.
Una vez que se ha creado la red de preferencias, el método de
Ford-Fulkerson se encargará de hacer la mayor cantidad de asignaciones
posibles. En este contexto debemos notar que si el flujo entre un
recurso y una necesidad es de 1, significa que ha producido una asignación
entre ambas.
Figura1.7: Pantallas de Inicio y Creación de
secciones.
El modelo de preferencias planteado tiene un defecto.
Puede suceder que al profesor se le asigne en forma múltiple en una
misma lección. Para corregir esto, en
orario
se verifica que el profesor no esté ya asignado antes de efectuar cada
asignación. Por supuesto que esta limitante hace que decrezca la
eficiencia del algoritmo. No obstante, en la práctica
orario
dio resultados entre aceptables y buenos. Dado que resulta difícil
automatizar absolutamente todo el proceso, en
orario
se incluye la posibilidad de realizar una asignación manualmente. Al
dar click derecho en una casilla de la pizarra de asignaciones, el
usuario puede saber cuáles profesores pueden ser asignados ahí,
cuántas materias llevan asignadas, etc. Además de esto en
orario
se pueden hacer asignaciones directamente sobre el horario de cada
profesor brindando así un tratamiento muy puntual. Una vez que todas
las actualizaciones manuales han sido llevadas a cabo, el usuario puede
solicitar la asignación automática y
orario
se encargará del resto. Aún más, una vez concluida dicha asignación,
usando el modo manual, el usuario puede "retocar" el resultado
generado. Hasta aquí se ha explicado en términos generales el
algoritmo de repartición usado por el software
orario.
A continuación se describe rápidamente dicho programa. En la Fig 1.7
se muestran las pantallas inicial (créditos) y la de creación de
grupos o secciones.
|