Construcción de horarios. El calendario de exámenes de la facultad

Anuncio
UNIVERSIDAD DE MURCIA
Grado en Matemáticas
TRABAJO DE FIN DE GRADO
Construcción de horarios. El calendario de
exámenes de la facultad.
Lorena González Navarro
Curso 2014-2015
Índice general
Introducción
1
Resumen
2
Extended Abstract
7
1. Conceptos previos
1.1. Introducción sobre la Teorı́a de Grafos . . . . . . . . . . . . . . . . . .
1.2. Emparejamientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.1. El Teorema de Hall . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Planteamiento general del Problema del Transporte . . . . . . . . . . .
1.4. Emparejamientos perfectos en el grafo asociado a un problema de transporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1. Teoremas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
12
13
14
16
2. Construcción de un horario académico
2.1. Definición del problema . . . . . . . . . . . . . . . . .
2.1.1. Variables y parámetros del problema . . . . .
2.1.2. Requisitos exigidos por el problema . . . . . .
2.2. Modelo para resolver P1. Constitución de los bloques
2.2.1. Estudiantes independientes . . . . . . . . . . .
2.2.2. Estudiantes agrupados por programas . . . . .
2.3. Modelos para P1 que minimizan la infactibilidad . . .
2.3.1. Validación de los tres modelos . . . . . . . . .
2.4. Modelo para resolver P2. Programar los bloques . . .
.
.
.
.
.
.
.
.
.
24
25
25
28
30
32
33
35
40
47
.
.
.
.
.
.
49
49
51
53
56
61
66
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3. Una aplicación: El calendario de exámenes de la facultad
3.1. Definición del problema y notación . . . . . . . . . . . . . . . .
3.2. Variables de decisión y restricciones . . . . . . . . . . . . . . . .
3.2.1. Etapa 1: Separar los exámenes del mismo curso . . . . .
3.2.2. Etapa 2: Separar los exámenes del segundo cuatrimestre
3.3. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
18
19
A. Planes de estudios de Matemáticas, Informática y PES
67
Bibliografı́a
70
Introducción
El objetivo principal de este trabajo es modelizar el problema de organizar un calendario u horario académico y con este propósito vamos a desarrollar distintos modelos
de Optimización Lineal Entera que resuelvan el problema.
Como cualquier problema de modelización necesitamos comenzar con un estudio
previo para determinar las circunstancias que lo engloban y que nos sugieran cómo
formular el modelo. Después pasaremos a dar la formulación que, posteriormente, debe
ser validada, es decir, tenemos que probar que la solución que nos ofrece es correcta.
En muchos casos esta validación requiere usar resultados matemáticos que, a priori, no
parecen tener ninguna relación con el problema. En nuestro trabajo abarcaremos todo
este proceso.
Este documento comienza con un resumen en inglés de los temas tratados durante
todo el trabajo, precedido por su traducción al castellano. A continuación, nos dedicamos a estudiar una serie de conceptos y resultados sobre la Teorı́a de Grafos que son
fundamentales para demostrar la validez de los modelos.
Posteriormente, nos centramos en la modelización del problema intentando hacerlo
de la forma más general posible. Para ello se estudiarán las caracterı́sticas a tener en
cuenta y se propondrán varios modelos que serán validados más tarde. En ellos se
deberá de dar las pautas de planificación del horario, lo cual incluye distribuir a los
alumnos y profesores en las distintas clases y decidir cuándo se imparte cada asignatura.
Por último, modelizamos el problema para un caso particular, éste consistirá en
construir el calendario de exámenes de los grados en Matemáticas, Informática y, por
consiguiente, del PES. Este modelo no sólo se dará teóricamente, sino que será implementado en el prgrama de optimización Xpress y analizaremos los resultados que nos
ofrece.
1
Resumen
En esta sección vamos a recopilar los aspectos más importantes tratados en este
documento, con el fin de que su lectura resulte útil y permita tener una idea general
del contenido de éste.
Nuestro trabajo consiste en modelizar el problema de construir un horario o calendario académico y con este objetivo hemos estudiado todas las circunstancias que
engloban el mismo e investigado la manera de resolverlo mediante la formulación de
un modelo de optimización lineal entera.
El profundizar en este problema nos ha llevado a tener que usar un resultado sobre la Teorı́a de Grafos. Por ello, hemos dedicado el Capı́tulo 1 a introducir una serie
de conceptos previos que son necesarios para llegar a este resultado, ya que no serı́a
comprensible si empezásemos directamente enunciándolo. Ası́, comenzamos con una
introducción sobre la Teorı́a de Grafos, dando la definición de grafo, cómo pueden ser
(bipartito, completo, etc.) y algunos conceptos relacionados. Además, dedicamos la
sección 1.2 a hablar sobre emparejamientos en un grafo y en concreto, sobre emparejamientos perfectos y algunas de sus propiedades. De aquı́ el resultado más importante
es el siguiente:
Teorema de Hall. Dado G un grafo bipartito con partición (A, B) se tiene que G
contiene un emparejamiento que satura A si y sólo si |N (R)| ≥ |R|, ∀R ⊆ A.
Para demostrarlo es necesario previamente dar la definición de camino y otros conceptos
que derivan de éste, ası́ como el Teorema de König, cuya demostración también se
incluye.
A continuación dejamos a un lado los emparejamientos y planteamos en la sección
1.3 el Problema del Transporte. Ésta nos servirá en el siguiente apartado, es decir,
en 1.4, para buscar emparejamientos perfectos en el grafo asociado a un problema de
transporte. Supondremos un grafo bipartito G = (A ∪ B, A × B), con |A| = |B| = n.
Los nodos de A serán de oferta y los de B nodos de demanda y cada uno oferta o
demanda η unidades de producto. Una solución factible del problema se denotará con
el vector bidimensional β dado por βij ∈ Z+ , i, j ∈ {1, ..., n}. Este vector cumplirá
X
βij = η
∀j ∈ B,
i∈A
X
∀i ∈ A.
βij = η
j∈B
2
Con esta solución β podemos construir el grafo soporte de β, G(A,B) (β) y demostramos
en la Proposición 1.17 que en este grafo podemos encontrar un emparejamiento perfecto.
Por último, damos el resultado más importante del capı́tulo, cuya demostración
requiere dos corolarios previos. Su enunciado es el siguiente:
Teorema. Dados dos conjuntos A y B de igual cardinal, |A| = |B| = n, ∀η ∈ Z con
η ≥ 1 se cumple la hipótesis H(η) dada por:
Si β ∈ Zn+ × Zn+ satisface
X
βij = η,
∀j ∈ B,
βij = η,
∀i ∈ A,
i∈A
X
j∈B
entonces existe una descomposición ζijk para cada k ∈ {1, ..., η}, i ∈ A, j ∈ B
tal que
X
ζijk = 1,
∀j ∈ B, ∀k ∈ {1, ..., η},
i∈A
X
ζijk = 1,
∀i ∈ A, ∀k ∈ {1, ..., η},
j∈B
η
X
ζijk = βij ,
∀i ∈ A, ∀j ∈ B.
k=1
Este resultado afirma que una solución factible del Problema del Transporte se puede
utilizar para encontrar emparejamientos perfectos, tantos como oferta o demanda tiene
cada nodo. Su relevancia se debe a que se usará para validar el modelo que resuelve el
problema de construir un horario.
Continuamos este documento con el Capı́tulo 2, en el que nos ocupamos de modelizar el problema de establecer un horario dentro de un instituto. Para ello tendremos
que distribuir a los alumnos en las clases, asignar qué profesor dará cada asignatura
y, por último, darle un horario especı́fico a cada clase. Todo esto lo llevaremos a cabo
formulando un modelo de optimización lineal entera que luego puede ser resuelto con
las técnicas estándar para este tipo de problemas.
Con este fin, comenzamos en el primer apartado definiendo formalmente el problema, en el que vamos a suponer que los alumnos se han matriculado antes de que el
horario esté constituido y, por tanto, tienen un programa de asignaturas que cursar.
Introducimos toda la notación necesaria para referirnos a los alumnos, los profesores
y las asignaturas. Igualmente damos todas las circunstancias que van a condicionar el
problema, por ejemplo, que un alumno no dé dos asignaturas que están programadas
a la misma hora o que cada clase tenga un profesor asignado.
Nuestra estrategia será suponer que las clases se pueden agrupar en conjuntos disjuntos llamados bloques y cada bloque tendrá un horario independiente. Por consiguien-
3
te, las clases que estén en el mismo bloque harán actividades al mismo tiempo. Con
este metodo, vamos a dividir el problema inicial en dos subproblemas que se resolverán
por separado. Estos son:
P1. Constituir los bloques: donde se distribuyen los alumnos en las clases y el
profesor que da cada clase y, por otro lado, se decide qué clases están en cada bloque.
P2. Programar los bloques: donde asignamos un horario especı́fico a cada bloque
de manera que en cada hora sólo esté un bloque asignado para dar clase.
En la sección 2.2 damos un modelo para resolver P1. En éste hay definidas tres
tipos de variables de decisión según hagamos referencia a las clases, a los profesores o
a los alumnos. Las variables enteras xsb serán para determinar el número de clases de
la asignatura s asignadas al bloque b. Por otro lado, tendremos variables binarias ztsb
para determinar si el profesor t imparte la asignatura s en el bloque b y por último,
las variables que hacen referencia a los estudiantes. Vamos a dar dos modelos diferentes según se definan estas últimas variables. Una forma será tratar a cada estudiante
de forma independiente, de modo que utilizaremos las variables binarias vnsb para determinar si el estudiante n da la asignatura s en el bloque b. La otra será agrupar a
los estudiantes que van a cursar las mismas asignaturas con variables enteras ypsb que
cuentan el número de alumnos con el programa de asignaturas p que dan la asignatura
s en el bloque b.
Para limitar estas variables y que el problema tenga sentido daremos una serie de
restricciones:
Cada clase está en un bloque y tiene un profesor asignado.
Un profesor no está en dos clases de mismo bloque (programadas al mismo tiempo).
Cada estudiante da cada asignatura en la que se ha matriculado en un solo bloque.
Un estudiante se mantiene ocupado en cada hora del calendario.
El número de estudiantes no supera la capacidad de las aulas.
Estas dos formulaciones serán modelos de verificación de restricciones, sin una función
objetivo y una solución de cualquiera de ellos nos dará una forma de distribuir las
clases entre los bloques y “poblarlas” con los alumnos y el profesor. Al usar variables
que agrupan a los estudiantes no es evidente que se pueda dar una asignación a cada
alumno de forma individual de manera que se verifiquen las circunstancias anteriores.
Es por ello que demostramos la validez de la solución ofrecida en el Teorema 2.1 que se
encuentra al final de la sección 2.2. En él se prueba, utilizando el resultado que hemos
dado del Capı́tulo 1, que podemos pasar de usar las variables ypsb a las vnsb , que trata
a los estudiantes de forma individual.
Por otro lado, para evitar la infactibilidad que se puede producir en estos modelos,
en la sección 2.3 desarrollamos tres formulaciones alternativas donde usamos las variables ypsb que agrupan a los estudiantes. En ellos algunas restricciones se relajan, por
4
ejemplo las que hacen referencia a los profesores, de manera que alguna clase pueda
quedar sin profesor asignado. En particular, en los modelos 1 y 2 permitimos que algún
alumno quede sin distribuir completamente en las clases mientras que en el modelo 3
dejamos que la capacidad del aula sea superada. A cambio, para maximizar el número
de asignaciones o minimizar el número de estudiantes que exceden la capacidad máxima usamos la función objetivo. Con estas formulaciones no queda claro, a partir de
la solución que nos dé el modelo, cómo distribuir a los estudiantes y cuáles de ellos
tendrán clase asignada para todas las asignaturas y cuáles no. Por ello, en el apartado
2.3.1 nos dedicamos a validar cada modelo con un teorema, es decir, a partir de la
solución que nos da, verificar que cada estudiante se puede distribuir individualmente
en la clases de manera que se cumplan todos los requisitos impuestos, tales como que
no dé dos asignaturas programadas en conjunto. Además, estos teoremas nos muestran
qué estudiantes no quedan completamente distribuidos.
Cerramos el Capı́tulo 2 con la sección 2.4 en la que nos ocupamos de dar un modelo
para resolver P2 en el que se programan los bloques. Éste no tendrá una función
objetivo, tan sólo se buscará que se verifiquen ciertas condiciones. Aquı́ tendremos
variables de decisión de la forma uba que determinan si el bloque b da clase en la hora
a y las restricciones se usarán para que a cada hora solo haya un bloque que dé clase
y para que todos los bloques tengan el mismo número de horas, entre otras.
A continuación encontramos el Capı́tulo 3, en el cual vamos a desarrollar un modelo
de optimización lineal entera para organizar el calendario de exámenes de las facultades
de Matemáticas e Informática, en concreto para la convocatoria de junio del curso 20142015, en el que el objetivo principal será separar al máximo los exámenes. A diferencia
del capı́tulo anterior, donde sólo dábamos la formulación, este modelo será llevado a la
práctica y analizaremos los resultados obtenidos.
Con este propósito, dedicamos la sección 3.1 a extraer toda la información que
sea relevante para hacer la formulación, esto es, qué asignaturas hay en cada curso,
de qué cuatrimestre son, cuántos dı́as hay disponibles para poner los exámenes, etc.
Además, para trabajar con estos datos introducimos la notación necesaria.
Acto seguido pasamos a definir las variables de decisión en el apartado 3.2. Definimos tres grupos de variables, xij para el grado de Matemáticas, yij para el grado en
Informática y xyij para el PES. Estas variables serán binarias y toman el valor 1 si el
examen de la asignatura i se hace en el turno j. A continuación, damos las primeras
restricciones que están enfocadas a darle sentido al problema, como por ejemplo, que
cada asignatura tiene su examen programado para un solo dı́a o que cada asignatura
del PES tiene el examen al mismo tiempo que su correspondiente asignatura en Matemáticas o Informática. En lo que sigue añadimos las restricciones que sirven para
separar los exámenes, pero lo haremos en dos etapas independientes. En la Etapa 1
buscamos maximizar la distancia entre los exámenes que están en un mismo curso,
para eso utilizamos una nueva variable de decisión z que hará referencia a la distancia
mı́nima entre los exámenes e irá a la función objetivo. En esta etapa impondremos
como restricción, además de las iniciales, que no haya dos exámenes del mismo curso
en el mismo dı́a.
5
A continuación, partiendo de la solución del primer modelo, es decir, del valor óptimo para z, nos centramos en la Etapa 2 en maximizar la distancia entre los exámenes
que están en el segundo cuatrimestre (y son del mismo curso). Como la Etapa 1 nos
dice que la distancia mı́nima entre los exámenes del mismo curso es z, tomamos esta
variable como un parámetro y añadimos una restricción para que esto se cumpla, ya
que el problema seguirá siendo factible. Ahora definimos otras z’s que se refieren a la
distancia mı́nima entre exámenes del segundo cuatrimestre. Esta vez hay varias ya que
dependiendo del grado y el curso con el que estemos tratando hay más o menos asignaturas por cuatrimestre. Estas variables van a la función objetivo y se maximizará su
valor.
Además, en esta segunda etapa agrupamos las asignaturas cuyos exámenes se pueden intercambiar e imponemos un orden a la hora de organizarse los exámenes de
asignaturas que estén en el mismo grupo. De esta manera conseguimos, por un lado,
acabar con la simetrı́a del problema y, por otro lado, tener distintas posibilidades para
establecer el calendario.
Ahora que tenemos el modelo formulado, en la sección 3.3 vemos los resultados que
nos ha dado el modelo al implementarlo y resolverlo con el programa Xpress. De la
Etapa 1 nos interesa saber cuál es la distancia mı́nima entre los exámenes de un mismo
curso. Por otro lado, la Etapa 2 sirve para conocer en cada curso cuánto se han podido
separar los exámenes del segundo cuatrimestre y, además, se describe cómo queda el
calendario de exámenes de los tres grados.
Por último, en el apartado 3.4 extraemos conclusiones acerca del calendario resultante, valorando si el modelo formulado es eficiente y si es ajustable cambiando los
datos para otras convocatorias. También hacemos una comparación con el calendario
de exámenes establecido por las facultades para esa convocatoria.
Concluimos este trabajo con el Apéndice A, donde se muestran los planes de estudios
de los grados de Matemáticas, Informática y PES, que hemos utilizado para extraer
los datos necesarios para construir el calendario.
6
Extended Abstract
In this section we will summarize the most important issues addressed in this document.
In our work we modelize the problem of constructing an academic timetable or
calendar and to this end we have studied all the circumstances that it includes and
researched how to solve it through the formulation of an integer linear optimization
model.
When solving the problem, we have needed to use a result about Graph Theory.
Therefore, we have devoted Chapter 1 to introduce several previous concepts that
are necessary to achieve this result, because if we enunciate it directly it would be
understandable. So, we begin with a introduction about Graph Theory, giving the
definition of graph, how it can be (bipartite, complete, etc.) and some related concepts.
In addition, section 1.2 talks about matchings in a graph and, in particular, about
perfect matchings and some of their properties. Here the most important result is the
following:
Hall’s Theorem. Let G be a bipartite graph with partition (A, B), then G contains
a mathing that saturates A if and only if |N (R)| ≥ |R|, ∀R ⊆ A.
To prove this result it is necessary to give previously the definition of path and other
concepts derived from it, and also König theorem, whose proof is also included.
Then we put aside the matchings and propose in section 1.3 the transportion
problem. This will help us in the next section, i.e. in 1.4, to find perfect matchings
on the graph associated with a transport problem. Assume a bipartite graph G =
(A ∪ B, A × B), with |A| = |B| = n. Nodes of A are called supply nodes and those of B
are demand nodes. Each node either offers or demands η units of product. A feasible
solution to the problem will be denoted with the two-dimensional vector β given by
βij ∈ Z+ , i, j ∈ {1, ..., n}. This vector will verify
X
βij = η
∀j ∈ B,
i∈A
X
∀i ∈ A.
βij = η
j∈B
With this solution β we can build the support graph of β, G(A,B) (β) and prove in the
proposition 1.17 that we can find a perfect matching in this graph.
7
Finally, we give the most important result of this chapter, whose proof requires two
previous corollaries. Its statement is given below.
Theorem. Given two sets A and B with the same cardinality, |A| = |B| = n, the
hypothesis H(η) holds ∀η ∈ Z with η ≥ 1, where H(η) is as follows.
If β ∈ Zn+ × Zn+ satisfies
X
βij = η,
∀j ∈ B,
(1)
βij = η,
∀i ∈ A,
(2)
i∈A
X
j∈B
then there exists a decomposition ζijk for each k ∈ {1, ..., η}, i ∈ A, j ∈ B
satisfying
X
ζijk = 1,
∀j ∈ B, ∀k ∈ {1, ..., η},
(3)
i∈A
X
ζijk = 1,
∀i ∈ A, ∀k ∈ {1, ..., η},
(4)
∀i ∈ A, ∀j ∈ B.
(5)
j∈B
η
X
ζijk = βij ,
k=1
This result states that a feasible solution to the Transport Problem can be used to
find perfect matchings, as many as the amount of supply or demand of each node.
It is important since it will be used to validate the model that solves the academic
timetabling problem.
We continued this document with Chapter 2, in which we deal with modeling the
problem of establishing a timetable at a high school. To this end, we will have to
distribute all the students among the classes, to decide which teacher will teach each
subject and, finally, to give a specific timetable to each class. In order to do that we
will formulate an integer linear optimization model that can be resolved with standard
techniques.
For that purpose, we begin the first section defining the problem formally. We will
suppose that students have sung up before the timetable is constituted and therefore
they have a particular program of subjects. We introduce all notation that we need to
refer to students, teachers and subjects. Similarly we describe any circumstances that
will affect the problem, for example, that a student mustn’t be allocated to two classes
which have the same time period or that there must be a teacher allocated to each
class and subject.
Our approach is to assume that the set of classes can be partitioned into disjoint
subsets called blocks and each block have a specific timetable. Therefore, the classes
are in the same block timetabled in parallel. With this method, we descompose the
initial problem into two subproblems that are solved separately. These are:
8
P1. Constitute the blocks: where the students are allocated to classes and decide
what teacher teachs each subject and, on the other hand, it is decided what classes are
in each block.
P2. Programming the blocks: where we assign a specific timetable to each block
so that no more than one block may be allocated to a time period.
In section 2.2 we make a model for solving P1. Here, three types of decision variables
are defined depending whether we talk about classes, teachers or students. The integer
variables xsb measure the number of classes of subject s assigned to block b. On the other
hand, we have binary variables ztsb to determine whether teacher t teaches subject s in
block b and finally, we have variables that refer to students. We generate two different
models depending on the way the last variables are defined. One way will be to consider
each student independently, so that we use binary variables vnsb to determine if the
student n takes subject s in block b. The other way is to group students who take the
same program of subjects with integer variables ypsb that tell us how many students
take the program p and take subject s in block b.
To limit these variables and the problem makes sense we need several constraints.
They seek to verify the following conditions:
Every class is allocated to a block and has a teacher.
A teacher mustn’t be allocated to two classes of the same block (timetabled at
the same time).
Each student take each subject of his program only in one block.
All the students must be occupied at every hour of the timetable.
The capacity of the classes cannot be exceeded.
These two formulations don’t have an objective function and a solution of any of
them will give us a way to partition the classes into the blocks and “populate”with
the students and the teacher. It is not obvious that variables that group students can
be tranformed into individual assignations which verify all contraints. For that reason
we prove the validity of the solution offered in Theorem 2.1 which is at the end of the
section 2.2. Using the result of the Chapter 1 that we have stated, we demonstrate we
can change variables ypsb to variables vnsb that consider students indepently.
On the other hand, to avoid infeasibility that may occur in these models, in section
2.3 we develop three alternative fomulations where we use the ypsb variables. In all of
them some constraints are relaxed, such as those that enforce teachers are assigned to
class. In models 1 and 2 we do not requires a student to be completely allocated to
classes, while in model 3 we allow class capacities to be exceeded. To reduce the number
of violated constraints, an adequate objetive function is added to the model. From the
optimal solutions obtained when solving these formulations it could be unclear how
to distribute to students and which of them have class assigned to all subjects and
which have not. Therefore, in section 2.3.1 we validate each model using a theorem,
9
that is, from the solution that is given, we verify that each student can be allocated
individually in classes so that all requisites are satisfied. In addition, these theorems
show which students are not completely allocated.
We close Chapter 2 with the section 2.4 in which we go about giving a model for
solving P2 where blocks are timetabled. Here there is no an objective fuction, we will
just seek certain conditions are verified. The decision variables we have are uba that
determine if block b have lessons at time a. Also, constraints will be used so that in
each time only a block is allocated and all blocks have the same number of hours,
among other things.
Then we find Chapter 3, in which we will develop an integer linear optimization
model to organize the calendar of exams in the faculties of Mathematics and Computer
Science, particularly for June of course 2014-2015, in which the main objetive will be
to separate the exams as much as possible. Unlike the previous chapter, where we
give only the formulation, this model is implemented in a software and we discuss the
results.
To this end, we dedicate section 3.1 to extract all the information that is relevant
to the formulation, that is, which subjects are in each course, which four-month period
they are, how many days are available to put exams, etc. Also, to work on this data
we introduce the necessary notation.
Immediately afterwards, we define the decision variables in section 3.2. There are
three groups of variables, xij for the degree of Mathematics, yij for the degree of
Computer Science and xyij for the PES. These variables are binary and take value 1
if the exam of the subject i is allocated to shift j. Then we put the initial contraints
that are focused to make sense of the problem, for example, that each subject takes
the exam only one time or every subject of the PES take the exam at the same time
than the corresponding subject in Maths or Computing. We add constraints that serve
to separate the exams, but we do that in two separate stages. In Stage 1 we seek to
maximize the distance between the exams corresponding whit the same level, for that
we use a new decision variable z that will refer to the minimum distance between exams
and put it in the objetive function. We also impose that there cannot be two exams of
the same level in the same day.
Then, based on the solution of the first model, i.e. the optimal value for z, in Stage
2 we focus on maximizing the distance between the exams that are in the second fourmonth period (and in the same level). As Stage 1 tells us that the minimum distance
between exams of the same course is z, we take this variable as a parameter and add
a constraint to guarantee that this minimal separation is satisfied. Now we introduce
other z’s that refer to the minimum distance between exams that are in the second
four-month period. This time there are several variables depending on the degree and
the level because there isn’t the same number of subjects in all the level. These variables
will be in the objetive function and the model maximizes their value.
Futhermore, in this second stage we group the subjects whose exams are interchangeable and impose an orden when exams are allocated to a turn if they are in the same
10
group. Thus we get, on the one hand, remove the symmetry of the problem and, on
other hand, have several possibilities to organize the timetable.
Now that we have formulated the model, we implement it in Xpress and in section
3.3 we see the result given by the model. From Stage 1 we know what the minimum
distance between exams of the same course is. On the other hand, Stage 2 is used
to know how long the exams in second four-month period are separated, and also we
describe how the exams timetable is in the three degrees.
Finnally, in section 3.4 we extract the conclusion about the resulting calendar,
disscusing if the formulation is efficient and if it can be used for other courses changing
the data. Also we compare with the exams timetable established by the faculties.
We close the document with the details about the studies of Maths, CS and PES
summarized in Appendix A.
11
Capı́tulo 1
Conceptos previos
Para llegar a modelizar correctamente el problema de construir un calendario u
horario académico, que es el objetivo principal de este trabajo, necesitamos no sólo dar
una formulación, sino demostrar su validez. Esto nos ha llevado a tener que hablar de
grafos, emparejamientos y algunas de sus propiedades. Por ello, dedicamos este capı́tulo
a un estudio teórico previo a la formulación del modelo matemático.
1.1.
Introducción sobre la Teorı́a de Grafos
Comenzamos viendo qué es un grafo y algunas definiciones relacionadas, la mayorı́a
dadas durante el Grado de Matemáticas en la asignatura de Grafos y Optimización
Discreta, de donde han sido extraı́das [1]. Estos conceptos resultan básicos para la
compresión de las secciones que siguen.
Definición 1.1. Un grafo (simple no dirigido) es un par (V, E) formado por un conjunto finito V 6= ∅ a cuyos elementos denominaremos vértices o nodos y E será un
conjunto de pares, no ordenados y formados por vértices distintos de V , que llamaremos aristas.
A los nodos v1 y v2 que forman una arista e = (v1 , v2 ) se les llamará extremos
de e. Se dirá que v1 y v2 son adyacentes o vecinos.
Que una arista sea incidente con un nodo v significará que éste es uno de sus
extremos. Análogamente, diremos que v incide en la arista.
Definición 1.2. Dado G = (V, E) llamaremos vecindario o entorno de un nodo v
al conjunto N (v) = {u ∈ V : (u, v) ∈ E}, es decir, a todos los vértices que son vecinos
de v.
Análogamente, dado un subconjunto R ⊆ V , se llama vecindario de R al conjunto
N (R) = {u ∈ V : (u, v) ∈ E para algún v ∈ R}.
Definición 1.3. Dado un grafo G = (V, E), se dice que otro grafo G0 = (V 0 , E 0 ) es
subgrafo de G si V 0 ⊆ V y E 0 ⊆ E.
Definición 1.4. Dado B ⊆ V , se llama subgrafo inducido por B al grafo GB =
(B, EB ) con EB = {(v1 , v2 ) ∈ E : v1 ∈ B, v2 ∈ B}
12
Definición 1.5. Un grafo G = (V, E)
se dice que es completo si ∀v1 , v2 ∈ V con v1 6= v2 , se cumple que (v1 , v2 ) ∈ E.
se dice que es bipartito si V = A ∪ B, con A 6= ∅, B 6= ∅, A ∩ B = ∅ y
∀(a, b) ∈ E ⇒ a ∈ A, b ∈ B o bien a ∈ B, b ∈ A.
Por último diremos que es bipartito completo si G es bipartito con E = A × B,
es decir, si contiene a todas las aristas posibles con un extremo en A y otro en B.
Definición 1.6. Dado un grafo G = (V, E) y un vector v ≥ 0 con una componente
por cada arista de G, definimos el grafo soporte de v en G como el subgrafo dado
por G(v) := (V, E 0 ) donde E 0 está formada por aquellas aristas de E cuya componente
en v es distinta de cero.
1.2.
Emparejamientos
En esta sección nos ocuparemos de definir qué es un emparejamiento en un grafo.
Este es un concepto nuevo para un estudiante de grado, por lo que nos hemos documentado en el libro indicado en [4]. Además, estudiaremos los emparejamientos en el
caso de grafos bipartitos, lo que nos llevará, después de varios resultados y definiciones,
al Teorema de Hall.
Definición 1.7. Un emparejamiento (matching en inglés) en un grafo G = (V, E)
es un subconjunto M de aristas de E independientes entre sı́, es decir, sin vértices en
común.
Se dirá que el emparejamiento es máximo si contiene el mayor número posible
de aristas.
Un emparejamiento será maximal si al añadir una arista cualquiera deja de ser
un emparejamiento.
Nótese que un emparejamiento máximo es siempre maximal pero, en general, el recı́proco no es cierto.
Otros conceptos que usaremos serán los que siguen:
Definición 1.8. Dado un grafo G = (V, E) y un emparejamiento M de éste, diremos
que un nodo v ∈ V está saturado si ∃e ∈ M tal que v es uno de los extremos de e.
En caso contrario diremos que v es no saturado.
Dado un emparejamiento M en un grafo bipartito G = (A ∪ B, E) se dice que
el emparejamiento satura A si se cumple: ∀i ∈ A ∃(i, j) ∈ M , para algún j ∈ B.
Análogamente tendrı́amos la definición de que el emparejamiento satura B.
Si (i, j) ∈ M se dirá que el nodo i está emparejado con el nodo j.
13
Definición 1.9. Un emparejamiento perfecto en un grafo G es un emparejamiento
en el que cada vértice del grafo está saturado.
En el caso de un grafo bipartito, un emparejamiento será perfecto si satura a A
y a B.
Es obvio que un emparejamiento perfecto es máximo y, por consiguiente, maximal.
1.2.1.
El Teorema de Hall
Philip Hall (1904-1982) fue un matemático inglés, que centró su trabajo en la Teorı́a
de Grupos, principalmente en grupos finitos. En 1935 demostró el teorema que vamos
a presentar, también conocido como Teorema del Matrimonio. Estos datos y las causas
que motivan el nombre del teorema han sido extraı́dos de [6].
Este curioso nombre tiene su origen en el siguiente problema: supongamos que tenemos
un grupo de mujeres y hombres, donde cada hombre conoce a algunas mujeres, y
viceversa. No tengamos en cuenta si las mujeres u hombres se conocen entre sı́. Nos
preguntamos si podrı́amos emparejar cada hombre con una mujer que conozca.
Este problema se puede formular sobre un grafo, donde cada persona representa un
nodo y la acción de conocerse una arista, de manera que se obtiene un grafo bipartito.
Ahora nos preguntarı́amos bajo qué hipótesis podemos encontrar un emparejamiento
perfecto.
La respuesta nos la va a dar el Teorema de Hall, aunque necesitamos algunas definiciones y resultados previos para llegar a él. El contenido de este apartado se encuentra
en el segundo capı́tulo de [3].
Definición 1.10. Dado un grafo G = (V, E), un conjunto U ⊆ V se denomina un
cubrimiento por vértices de G si cada arista de G es incidente en un vértice de U .
Definición 1.11. Un camino es un grafo P = (V, E) definido por V = {v1 , ..., vn }
y E = {(v1 , v2 ), (v2 , v3 ), ..., (vn−1 , vn )}, es decir, una sucesión alternante de aristas y
vértices distintos, que comienza en un vértice y termina en otro, tal que cada arista
incide en el nodo anterior y posterior de la sucesión.
Un subgrafo de G que sea un camino se denominará camino en el grafo.
Definición 1.12. En lo que sigue supondremos que G es un grafo bipartito con partición (A, B) y M denotará un emparejamiento en el grafo.
Un camino en G que empieza en un vértice no saturado de A y contiene alternativamente aristas de E\M y M , se dice que es un camino alternante respecto
a M.
Un camino alternante P que termina en un vértice no saturado de B se llama un
camino de aumento pues se puede usar para construir un emparejamiento M 0
con más aristas a partir de M y P . Podemos ver un ejemplo de cómo se harı́a en
la siguiente figura, en la que los emparejamientos están indicados por las aristas
más gruesas.
14
Figura 1.1: Emparejamiento M 0 con más aristas que M a partir de un camino alternante
P.
Con estos conceptos y con el Teorema de König podemos saber el número máximo
de aristas que puede tener un emparejamiento.
Teorema 1.13. (König 1931) Sea M un emparejamiento máximo de un grafo bipartito G con partición (A, B). Existe un cubrimiento por vértices U de G con cardinal
mı́nimo tal que |M | = |U |.
Demostración. Para cada arista (a, b) ∈ M con a ∈ A y b ∈ B elegimos uno de sus
extremos con el siguiente criterio: elegimos b si algún camino alternante termina en b
y, en otro caso, elegimos a.
Sea U el conjunto formado por los vértices seleccionados, es obvio que |M | = |U |. Por
tanto, si demostramos que U es un cubrimiento por vértices de G, habremos terminado
ya que U tiene cardinal mı́nimo. Esto se debe a que si U cubre G, como las aristas de
M no tienen vértices en común, no se puede cubrir con menos de |M | vértices.
Figura 1.2: Cubrimiento por vértices U .
Veamos que U cubre G. Dado (a, b) ∈ E, tenemos que probar que a ∈ U o b ∈ U . Si
(a, b) ∈ M , no hay nada que probar por la propia definición de U , luego supongamos
que (a, b) ∈
/ M . Entonces existirá una arista (a0 , b0 ) ∈ M con a = a0 o b = b0 ya que si
esto no sucediera podrı́amos añadir (a, b) a M y seguirı́a siendo un emparejamiento, lo
cual contradice la maximalidad de M .
15
Si suponemos que b = b0 entonces, por la selección de vértices de U , (a, b) serı́a un
camino alternante que termina en b y en (a0 , b0 ) ∈ M habrı́amos elegido a b0 = b como
el extremo para estar en U , es decir, b ∈ U .
Si por el contrario, a = a0 y suponemos que a ∈
/ U , entonces b0 ∈ U y existe algún
camino alternante P que termina en b0 , pero entonces podemos construir un camino
alternante P 0 que termina en b de la siguiente forma: si b ∈ P definimos P 0 como la
sucesión de aristas de P hasta llegar a b; si b ∈
/ P entonces P 0 será el camino P junto
con las aristas (b0 , a0 ) y (a0 , b).
Por la maximalidad de M , P 0 no puede ser un camino de aumento, ası́ que b debe estar
saturado por alguna arista de M y, por tanto, estaba elegido para estar en U .
Teorema 1.14. (Hall 1935) Dado G un grafo bipartito con partición (A, B) se tiene
que G contiene un emparejamiento que satura A si y sólo si |N (R)| ≥ |R|, ∀R ⊆ A.
Demostración. La implicación hacia la derecha es obvia pues si existe un emparejamiento M que satura A, entonces |M | = |A| y para cada vértice de A existe al menos
un vecino en B, luego |N (R)| ≥ |R|, ∀R ⊆ A.
Veamos la implicación contraria. Sea M un emparejamiento máximo de G. Observemos que para que sature A tiene que ser máximo por ser G bipartito. Supongamos que
M no satura A, entonces |M | < |A| y por el Teorema 1.13 existirá un cubrimiento por
vértices U con menos de |A| vértices. Supongamos que U viene dado por U = A0 ∪ B 0
con A0 ⊆ A y B 0 ⊆ B. Entonces
|A0 | + |B 0 | = |U | < |A|
y, por consiguiente
|B 0 | < |A| − |A0 | = |A\A0 |.
Por la definición de U , G no tiene aristas que unan nodos de A\A0 y de B\B 0 pues
cualquier arista de G tiene uno de sus extremos en U . Por tanto, el vecindario de A\A0
está contenido en B 0 y tenemos
|N (A\A0 )| ≤ |B 0 | < |A\A0 |.
Tomando R := A\A0 llegamos a una contradicción.
Observación 1.15. Si suponemos en el teorema anterior que |A| = |B|, podemos
cambiar obviamente la condición de que exista un emparejamiento que satura A por
la de que G contenga un emparejamiento perfecto.
1.3.
Planteamiento general del Problema del Transporte
Dejamos a un lado los emparejamientos y ahora vamos a introducir el Problema del
Transporte. El contenido de esta sección se puede encontrar en el último capı́tulo del
libro [5].
16
Consideramos el problema de transportar un determinado producto desde m orı́genes a n destinos. Los m orı́genes disponen respectivamente de a1 , a2 , ..., am unidades
del producto y los destinos demandan b1 , b2 , ..., bn unidades respectivamente.
Se supone, para que el problema tenga sentido, que ai , ∀i ∈ {1, ..., m} y bj , ∀j ∈
{1, ..., n} son enteros mayores que cero.
También supondremos que la oferta total es igual a la demanda total, es decir,
m
X
ai =
i=1
n
X
bj = T
j=1
donde T es la cantidad total de producto que se oferta (o se demanda).
Se define xij como el número de unidades transportadas desde el origen i al destino j y
cij el coste que conlleva transportar una unidad de i a j. Puesto que un envı́o negativo
no tiene sentido, tendremos que xij ≥ 0. Además, supondremos que xij ∈ Z+ , es decir,
no podemos transportar partes de una unidad del producto.
El problema será determinar las cantidades xij a transportar para minimizar el coste
del transporte, y se puede formular con el siguiente modelo de Optimización Entera:
mı́n
m X
n
X
cij xij
i=1 j=1
sujeto a:
n
X
xij = ai ,
∀i = 1, ..., m
xij = bj ,
∀j = 1, ..., n
j=1
m
X
i=1
xij ∈ Z+ ,
∀i = 1, ..., m, ∀j = 1, ..., n.
Veamos la factibilidad de este problema. Para ello, prescindimos por el momento
de que xij ∈ Z, y escribimos el problema en forma matricial:
mı́n cx
s.a Ax = b
x≥0
siendo
x = (x11 , x12 , ..., x1n , x21 , ..., x2n , ..., xmn )t
c = (c11 , c12 , ..., c1n , c21 , ..., c2n , ..., cmn )
b = (a1 , ..., am , b1 , ..., bn )t


1 0 ··· 0
 0 1 ··· 0 



.. 
A=  ... ...
. 


 0 0 ··· 1 
I I ··· I
17
en donde 1 y 0 son vectores fila n-dimensionales con todas sus componentes iguales a
1 y 0, respectivamente, e I es la matriz identidad n × n.
Esta relajación del problema original en la que las variables pueden tomar valores no
ab
enteros siempre tiene una solución factible puesto que, tomando xij = iT j es fácil
comprobar que se verifican todas las restricciones. Además, está acotado ya que obviamente se cumple que 0 ≤ xij ≤ mı́n{ai , bj } ∀i, j. Por tanto, podemos asegurar que
existirá una solución óptima.
Por otro lado, se puede comprobar que la matriz A es totalmente unimodular, esto es
que el determinante de cualquier submatriz cuadrada de A vale -1, 0 ó 1. Esto unido a
que el vector b∈ Zn+ , nos permite afirmar (véase la página 345 de [7]) que al menos una
solución óptima x del problema va a ser entera. Por tanto, concluimos que el Problema
del Transporte siempre es factible.
1.4.
Emparejamientos perfectos en el grafo asociado a un problema de transporte
A continuación vamos a relacionar la teorı́a sobre grafos con emparejamientos perfectos dada anteriormente con el problema del transporte.
Comenzamos limitando el problema anterior a un caso concreto. En lo que sigue, supondremos que hay los mismos orı́genes que destinos, es decir, m = n y, por tanto, usaremos
sólo n. Además, exigiremos que se cumpla que a1 = a2 = ... = an = b1 = b2 = ... = bn ,
lo que significará que cada origen o destino oferta o demanda la misma cantidad del
producto. Esta cantidad vendrá dada por el parámetro η.
Por último, se supondrá que el coste es el mismo en todos los casos, con lo que la
función objetivo no será de interés.
Este particular problema del transporte se puede interpretar como un grafo completo bipartito G = (A ∪ B, A × B) donde A son los orı́genes, a partir de ahora llamados
nodos de oferta y B son destinos, que pasarán a llamarse nodos de demanda y tal que
|A| = |B| = n.
Una solución factible del problema se denotará con el vector bidimensional β dado
por βij ∈ Z+ con i, j ∈ {1, ..., n} (una componente por cada arista del grafo bipartito
completo). De forma abreviada lo escribiremos como β ∈ Zn+ × Zn+ . Este vector β
cumplirá, por ser solución, las siguientes restricciones:
X
βij = η
∀j ∈ B,
i∈A
X
∀i ∈ A.
βij = η
j∈B
18
1.4.1.
Teoremas
Nuestro objetivo será demostrar que en el grafo G que surge de este problema
de transporte se pueden encontrar emparejamientos perfectos, a partir de cualquier
solución factible β del problema y que el número de emparejamientos coincidirá con la
oferta (o demanda) de cada nodo η.
Para probar esto necesitamos varios resultados previos. A continuación vamos a enunciar y demostrar cada uno de ellos. Todos han sido extraidos de [2] aunque en dicho
documento de algunos sólo aparece el enunciado o una demostración escueta. En cualquier caso, en este trabajo los estudiamos todos con detenimiento.
Recuérdese que con este vector β se puede construir el grafo soporte de β definido en
1.6 y se denotará por G(A,B) (β).
Comenzamos con la siguiente proposición que demuestra que el vecindario de cualquier
subconjunto de nodos-oferta en el grafo soporte de β tiene cardinal al menos tan grande
como elementos tiene el subconjunto.
Proposición 1.16. Sean A y B dos conjuntos con el mismo cardinal |A| = |B| = n,
sea η ∈ Z, con η ≥ 1 y sea β ∈ Zn+ × Zn+ satisfaciendo
X
βij = η,
∀j ∈ B,
(1.1)
i∈A
X
∀i ∈ A.
βij = η,
(1.2)
j∈B
Sea G(A,B) (β) el grafo soporte de β en el grafo bipartito completo G = (A ∪ B, A × B).
Se verifica
|N 0 (R)| ≥ |R| ∀R ⊆ A,
(1.3)
donde N 0 (R) denota el vecindario de R en el grafo G(A,B) (β).
Demostración. Sea R un subconjunto de A. Sumando (1.2) en i ∈ R se obtiene
XX
X
βij =
η = |R|η.
i∈R j∈B
i∈R
Recuérdese que el conjunto N 0 (R) de R representa los nodos de j ∈ B donde βij > 0
para i ∈ R y, por tanto, tenemos
X X
XX
βij =
βij = |R|η.
(1.4)
i∈R j∈N 0 (R)
i∈R j∈B
Por (1.1), como R ⊆ A y β ≥ 0, entonces
X
X
βij ≤
βij = η
i∈R
i∈A
Sumando en j ∈ N 0 (R) tenemos
X X
j∈N 0 (R)
∀j ∈ B.
i∈R
βij ≤
X
j∈N 0 (R)
19
η = |N 0 (R)|η.
(1.5)
De (1.4) y (1.5) cambiando el orden de los sumatorios se tiene
|R|η ≤ |N 0 (R)|η
y como η ≥ 1 se deduce |R| ≤ |N 0 (R)| como queriamos probar.
Ahora demostraremos que debe existir un emparejamiento perfecto en el grafo soporte de β, siendo β una solución factible del problema del transporte ya definido.
Proposición 1.17. Dados A y B dos conjuntos con el mismo cardinal |A| = |B| = n,
sea η ∈ Z, con η ≥ 1 y sea β ∈ Zn+ × Zn+ satisfaciendo
X
βij = η
∀j ∈ B,
(1.6)
i∈A
X
∀i ∈ A.
βij = η
(1.7)
j∈B
Entonces existe un emparejamiento perfecto en el grafo soporte G(A,B) (β) de β.
Demostración. Obsevemos que G(A,B) (β) es un grafo bipartito con partición (A, B),
aunque en general, no completo. Con las hipótesis que tenemos, podemos aplicar la
Proposición 1.3 y tendremos
|N 0 (R)| ≥ |R|
∀R ⊆ A,
donde N 0 (R) denota el vecindario de R en el grafo G(A,B) (β). Ası́, por el Teorema de
Hall, G(A,B) (β) contendrá un emparejamiento M que satura A.
Como hay n nodos en A, se tiene que |M | = |A| = n, pero además, |B| = n. Luego, necesariamente, cada nodo de B está saturado por el emparejamiento. Por tanto,
concluimos que el emparejamiento es perfecto.
Una vez que hemos obtenido cuál es el emparejamiento perfecto para nuestro Problema del Transporte, podemos transformar el problema en otro, que cumpla las mismas
condiciones pero cuya oferta de cada nodo se haya reducido en una unidad. Esto se
formaliza en los dos corolarios siguientes.
Corolario 1.18. Sean A y B dos conjuntos con el mismo cardinal |A| = |B| = n, sea
η ∈ Z, con η ≥ 1 y sea β ∈ Zn+ × Zn+ satisfaciendo
X
βij = η
∀j ∈ B,
(1.8)
i∈A
X
∀i ∈ A.
βij = η
(1.9)
j∈B
Entonces existe un vector binario ξ ∈ {0, 1}n × {0, 1}n que cumple las siguientes propiedades:
(a) ξij > 0 sólo si βij > 0,
20
(b)
P
ξij = 1 ∀j ∈ B,
i∈A
(c)
P
ξij = 1 ∀i ∈ A.
j∈B
Demostración. Sea M el emparejamiento perfecto de G(A,B) (β) obtenido a partir de la
Proposición 1.17. Definimos el vector bidimensional ξ como
(
1 si (i, j) ∈ M
ξij =
con i, j ∈ {1, ..., n}.
0 otro caso
Por lo tanto, ξ ∈ {0, 1}n × {0, 1}n .
Por otro lado, como G(A,B) (β) contiene sólo las aristas (i, j) tales que βij > 0 y M es
un subconjunto de aristas de este grafo, tenemos (a).
Puesto que M es un emparejamiento perfecto, M satura tanto A como B. Como satura
B, hay exactamente una arista en M incidente para cada nodo de B con lo que se
cumple (b). Análogamente, como M satura A, existe una única arista en M incidente
en cada nodo de A, luego se verifica (c).
Corolario 1.19. Sean A y B dos conjuntos con el mismo cardinal |A| = |B| = n, sea
η ∈ Z, con η ≥ 1 y sea β ∈ Zn+ × Zn+ satisfaciendo
X
βij = η
∀j ∈ B,
i∈A
X
∀i ∈ A.
βij = η
j∈B
Entonces el vector β 0 definido por
0
βij = βij − ξij
∀i ∈ A, ∀j ∈ B,
donde ξ ∈ {0, 1}n × {0, 1}n es el vector que se obtiene en el Corolario 1.18, cumple que
0
0
β ∈ Zn+ × Zn+ . Además, β satisface las ecuaciones:
X 0
βij = η − 1
∀j ∈ B,
(1.10)
i∈A
X
0
βij = η − 1
∀i ∈ A.
(1.11)
j∈B
Demostración. Como β es entero y ξ es binario cumpliendo la propiedad (a) del Coro0
lario 1.18, tenemos que β ∈ Zn+ × Zn+ . También, a partir de (b), obtenemos (1.10):
X 0
X
X
X
βij =
(βij − ξij ) =
βij −
ξij = η − 1.
i∈A
i∈A
i∈A
i∈A
Por último, veamos que se cumple (1.11) utilizando (c):
X 0
X
X
X
βij =
(βij − ξij ) =
βij −
ξij = η − 1.
j∈B
j∈B
j∈B
Luego el corolario queda probado.
21
j∈B
Ahora ya estamos preparados para demostrar el resultado principal de esta sección,
que era nuestro fin. Éste muestra que una solución factible del Problema de Transporte se puede utilizar para encontrar emparejamientos perfectos, tantos como oferta o
demanda tiene cada nodo.
Teorema 1.20. Dados dos conjuntos A y B de igual cardinal, |A| = |B| = n, ∀η ∈ Z
con η ≥ 1 se cumple la hipótesis H(η) dada por:
Si β ∈ Zn+ × Zn+ satisface
X
βij = η,
∀j ∈ B,
(1.12)
βij = η,
∀i ∈ A,
(1.13)
i∈A
X
j∈B
entonces existe una descomposición ζijk para cada k ∈ {1, ..., η}, i ∈ A, j ∈ B
tal que
X
ζijk = 1,
∀j ∈ B, ∀k ∈ {1, ..., η},
(1.14)
i∈A
X
ζijk = 1,
∀i ∈ A, ∀k ∈ {1, ..., η},
(1.15)
∀i ∈ A, ∀j ∈ B.
(1.16)
j∈B
η
X
ζijk = βij ,
k=1
Demostración. Probaremos el resultado por inducción sobre η. Observemos que estamos bajo las hipótesis de los Corolarios 1.18 y 1.19.
Para η = 1 resulta sencillo. Si β satisface las condiciones de H(1), basta definir ζij1 = βij
∀i ∈ A y ∀j ∈ B. Entonces H(1) se cumple trivialmente.
Supongamos que para η ∈ Z con η ≥ 1 H(η − 1) se cumple y veamos que también
lo hace H(η). Para eso, supongamos β satisface las condiciones de la hipótesis H(η).
Entonces por el Corolario 1.18 existe un vector ξ ∈ {0, 1}n × {0, 1}n cumpliendo:
(a) ξij > 0 sólo si βij > 0,
P
(b)
ξij = 1 ∀j ∈ B,
i∈A
(c)
P
ξij = 1 ∀i ∈ A.
j∈B
Sea ζijη = ξij ∀i ∈ A, ∀j ∈ B, con (b) y (c) aseguramos que se verifiquen (1.14) y
(1.15) para ζijk con k = η:
X
X
ζijη =
ξij = 1
∀j ∈ B,
i∈A
i∈A
22
X
ζijη =
j∈B
X
∀i ∈ A.
ξij = 1
j∈B
0
0
Sea βij = βij − ξij ∀i ∈ A, ∀j ∈ B. Este vector β se ha construido de manera que
cumple las hipótesis del Corolario 1.19. Por tanto, verifica las condiciones de H(η − 1),
es decir,
X
βij0 = η − 1
∀j ∈ B,
i∈A
X
βij0 = η − 1
∀i ∈ A.
j∈B
Aplicando la hipótesis de indución, existirá ζijk , ∀i ∈ A, ∀j ∈ B, ∀k = {1, ..., η − 1}
satisfaciendo
X
ζijk = 1
∀j ∈ B, ∀k = {1, ..., η − 1},
i∈A
X
∀i ∈ A, ∀k = {1, ..., η − 1}.
ζijk = 1
j∈B
Como para k = η también se cumplen, concluimos que ζ satisface (1.14) y (1.15).
Ahora, por la hipótesis de inducción,
η−1
X
0
∀i ∈ A, ∀j ∈ B.
ζijk = βij
k=1
Por tanto,
η
X
k=1
ζijk =
η−1
X
0
ζijk + ζijη = βij + ξij = βij ,
∀i ∈ A, ∀j ∈ B,
k=1
por lo que (1.16) también se cumple. Hemos demostrado, finalmente, que H(η) se
verifica.
Nuestro interés por llegar a este último resultado se debe a que este teorema se
usará en las próximas páginas para probar que el modelo formulado para la construcción
de un calendario académico es válido.
23
Capı́tulo 2
Construcción de un horario
académico
En este capı́tulo vamos a estudiar el problema de construir un horario académico,
un reto que se plantean cada año las distintas instituciones educativas, ya sean colegios,
institutos o universidades.
Cada centro de enseñanza, según el número de alumnos que tiene, la disponibilidad de
cada profesor y la capacidad de las aulas, se enfrenta a un problema diferente a la hora
de establecer un horario, que en la mayorı́a de los casos resulta difı́cil de resolver.
La complejidad de este problema reside en la cantidad de circunstancias que se han
de tener en cuenta. Entre ellas está el determinar la franja horaria en la que se da
cada asignatura, distribuir a los alumnos según las asignaturas en las cuales se hayan
matriculado y asignar los profesores que imparten cada asignatura.
En las siguientes páginas abordaremos, desde un punto de vista matemático, cómo
construir un horario académico, enfocándolo como un problema de optimización lineal
entera, es decir, con una formulación de la forma

 mı́nx cx
s.a
Ax ≤ b

x ∈ Zn+
con c ∈ Rn , Am×n = (aij ), aij ∈ R ∀i, j y b ∈ Rm .
Nuestro modelo va a considerar las asignaturas en las que se ha matriculado cada
estudiante a la hora de organizar el horario. Por ello, se ajusta mejor a un instituto, ya
que en éste hay optativas, modalidades de bachillerato, etc. En un colegio, sin embargo,
los alumnos tienen menos posibilidad de elección. Por otro lado, en la universidad el
horario se suele establecer antes de que los estudiantes se hayan matriculado. Aún ası́,
con pequeñas modificaciones podrı́amos adaptar el modelo si se tratara de cualquiera
de estos dos centros.
Para poder llevarlo a cabo, debemos comenzar definiendo formalmente el problema,
es decir, viendo qué datos tenemos y qué requisitos se tienen que cumplir. Todo esto
servirá para formular el modelo que, posteriormente, será validado. Esto supone que
24
el modelo nos debe dar una forma de organizar el horario de manera que se verifiquen
todas las condiciones impuestas. La forma de proceder se ha extraı́do del texto [2] en
el cual se basa nuestra formulación.
2.1.
2.1.1.
Definición del problema
Variables y parámetros del problema
A lo largo del capı́tulo vamos a nombrar conceptos como clases, sesiones, bloques,
etc. que deben ser definidos formalmente para no confundir al lector con el significado
que se le da en el lenguaje común. De esto nos ocuparemos en esta sección, además de
introducir toda la notación necesaria para poder formular el modelo.
En adelante, la variedad de asignaturas que el centro oferta estará representada con el
conjunto S = {1, 2, ..., S}. Hemos de tener en cuenta que una asignatura está definida
tanto por su contenido como por el año en que se cursa. Por ejemplo, se considerarán
asignaturas diferentes Matemáticas de 1o y Matemáticas de 2o .
Además, una asignatura s ∈ S se impartirá en una o más aulas, dependiendo del número
de alumnos que se matriculen en ella. Para tener en cuenta estos datos definimos los
siguientes parámetros:
γs = capacidad máxima de un aula donde se imparte la asignatura s.
µs = número de aulas de la asignatura s.
Supondremos que los alumnos se han matriculado antes de que el horario académico
esté constituido, por tanto estos valores serán conocidos.
Definimos el conjunto
C = {(s, i) : s ∈ S, 1 ≤ i ≤ µs }
donde el par (s, i) se refiere al aula i-ésima de la asignatura s. A cada elemento de este
conjunto lo llamaremos clase.
Otros conjuntos notables serán N = {1, 2, ..., N } y T = {1, 2, ..., T } que representan a
los estudiantes y a los profesores, respectivamente.
Cada alumno, a la hora de matricularse, hizo una selección de asignaturas, que llamaremos programa, luego es recomendable definir un conjunto P = {1, 2, ..., P } que recoja
los distintos programas formados según las elecciones de los estudiantes. Nósete que no
tiene por qué haber un programa por cada estudiante, pues varios pueden matricularse
en las mismas asignaturas y esto se considerará como un solo programa p ∈ P.
Introducimos los siguientes parámetros que hacen referencia a los alumnos y su programa escogido. Obviamente, son todos valores conocidos.
νp = número de alumnos que eligieron el programa p;
ωn = conjunto de asignaturas que eligió el estudiante n;
πp = conjunto de asignaturas del programa p;
Ns = conjunto de estudiantes que cursan la asignatura s;
25
Np = conjunto de estudiantes con el programa p elegido;
Ps = conjunto de programas que incluyen la asignatura s.
Obsérvese que {πp : p ∈ P} = {ωn : n ∈ N} y que {Np : p ∈ P} forma una partición
de N en subconjuntos disjuntos. Nótese también que si n ∈ Np , entonces ωn = πp .
Por otro lado, en referencia a los profesores, cada asignatura debe ser impartida por
uno o varios, dependiendo del número de alumnos matriculados. Por ello necesitamos
definir las variables que siguen:
Ts = conjunto de profesores que imparten la asignatura s;
τt = conjunto de asignaturas que enseña el profesor t;
θts = número de clases (s, i) donde el profesor t da la asignatura s ∈ τt .
Supondremos, sin pérdida de generalidad, que todas ellas están determinadas a priori.
Ası́, θts nos dará una cota superior del número de clases donde un profesor enseña.
Además, el profesor y los estudiantes que estén asignados a una clase (s, i) ∈ C se
reunirán λs veces a la semana para continuar con la materia; esto será una lección.
Como es de esperar (por ello sólo depende de s) todas las clases de una asignatura s
darán el mismo número de lecciones.
Aunque cada lección tiene lugar en un aula concreta, bien sea un laboratorio, una sala
de ordenadores, un aula genérica, etc., en este trabajo no abarcaremos la parte de
asignar el lugar donde se lleva a cabo cada lección.
Por último, tengamos en cuenta que el horario estará dividido en intervalos de tiempo,
cada uno llamado sesión. Ejemplos de sesiones podrı́an ser: Martes de 9:30 a 10:00,
Jueves de 12:00 a 14:00, etc.
Enfocado como un modelo matemático, es irrelevante saber la franja horaria que engloba cada sesión; por ello representamos de forma simplificada las sesiones con el conjunto
A = {1, 2, ..., A}. Cada lección ocupará una sesión dentro del horario.
La construccion del horario también incluye el asignar qué estudiantes y qué profesor
constituyen cada clase. Esto lo determinaremos con las dos siguientes variables:
Qis = conjunto de estudiantes asignados a la clase (s, i),
tis = profesor asignado a la clase (s, i),
para cada s ∈ S, i ∈ {1, ..., µs }.
Por otro lado, cada lección j ∈ {1, ..., λs } que dé una clase (s, i) ∈ C ocupará una
sesión dentro del horario. Esa sesión vendrá dada por `ij
s ∈ A. Además, guardaremos
las sesiones de cada clase (s, i) con el conjunto Lis , es decir, Lis = {`ij
s : j = 1, ..., λs }.
Ahora que las variables han sido definidas vamos a simplificar el problema usando el
método conocido como blocking. Esta simplificación es comúnmente usada en la práctica
y consiste en suponer que las clases (pares (s, i) ∈ C) se pueden agrupar en conjuntos
disjuntos llamados bloques. Además, a cada bloque le asignaremos unas sesiones dentro
del horario, de manera que en cada sesión sólo estará un bloque y, por consiguiente, dos
26
clases que estén en diferentes bloques no tendrán actividades programadas al mismo
tiempo.
Esto nos lleva a considerar un problema con dos partes que se podrán resolver de forma
independiente:
P1. Constituir los Bloques: donde se abarca, por un lado, decidir qué clases (s, i)
están en cada bloque y, por otro, el ”poblar” las clases, o lo que es equivalente,
asignar los estudiantes y el profesor que van en cada clase.
P2. Programar los Bloques: que se encarga de determinar las sesiones que tiene
cada bloque, de manera que las clases de un mismo bloque tendrán un horario
común.
Esta simplificación nos lleva a definir un nuevo conjunto B = {1, ..., B} para los bloques
y para cada b ∈ B, se representará con la variable Cb las clases que lo componen. Por
tanto, {Cb }b∈B forma una partición del conjunto de clases C.
Como dentro de un bloque b ∈ B, todas las clases tienen las mismas sesiones asignadas
en el horario, se tendrá que
Lis11 = Lis22 ,
∀(s1 , i1 ), (s2 , i2 ) ∈ Cb .
Por ello, simplificamos la notación definiendo Lb = sesiones de las clases del bloque b.
En el Cuadro 2.1 se recogen los parámetros y conjuntos más significativos definidos
durante toda la sección. Éste resultará de utilidad para recordar qué significa cada
término cuando lo usemos en las siguientes páginas.
27
Parámetro/Conjunto
S = {1, ..., S}
B = {1, ..., B}
N = {1, ..., N }
P = {1, ..., P }
T = {1, ..., T }
A = {1, ..., A}
C = {(s, i) : s ∈ S, 1 ≤ i ≤ µs }
µs ∈ Z+
λs ∈ Z+
γs ∈ Z+
ωn ⊂ S
τt ⊂ S
θts ∈ Z+
πp ⊂ S
νp ∈ Z+
Ns = {n ∈ N : s ∈ ωn }
Ts = {t ∈ T : s ∈ τt }
Np = {n ∈ N : ωn = πp }
Ps = {p ∈ P : s ∈ πp }
Qis
tis
Cb
Lb
Descripción
conjunto de asignaturas (con elementos s)
conjunto de bloques (con elementos b)
conjunto de estudiantes (con elementos n)
conjunto de programas (con elementos p)
conjunto de profesores (con elementos t)
conjunto de sesiones (con elementos a)
conjunto de clases
número de clases de la asignatura s
número de lecciones de la asignatura s
capacidad máxima de una clase de la asignatura s
conjunto de asignaturas elegidas por el estudiante n
conjunto asignaturas que imparte el profesor t
número de clases donde el profesor t da la asignatura s
conjunto de asignaturas del programa p
número de estudiantes con el programa p
conjunto de estudiantes que eligieron la asignatura s
conjunto de profesores que imparten la asignatura s
conjunto de estudiantes con el programa p
conjunto de programas que incluyen la asignatura s
conjunto de estudiantes asignados a la clase (s, i) ∈ C
profesor asignado a la clase (s, i) ∈ C
conjunto de clases asignadas al bloque b
conjunto de sesiones asignadas al bloque b
Cuadro 2.1: Descripción de parámetros y conjuntos.
2.1.2.
Requisitos exigidos por el problema
Por sı́ solas, las variables que hemos definido no aportan información a la hora de
plantear el problema. Necesitamos imponer condiciones que las relacionen entre sı́ para
darle sentido. Por ejemplo, para que cada clase tenga un profesor asignado o cada
estudiante no esté asignado a dos clases que hacen actividades al mismo tiempo.
Para ello se limitarán las variables con las siguientes condiciones:
1. Cada clase está solamente en un bloque:
|{b : (s, i) ∈ Cb }| = 1,
∀(s, i) ∈ C.
2. Cada profesor debe estar asignado al número de clases que a priori se decidió que
enseñarı́a:
|{i : (s, i) ∈ C, t = tis }| = θts ,
∀s ∈ τt , ∀t ∈ T.
3. Un profesor puede impartir materia, como máximo, en una clase de entre las del
mismo bloque:
28
|{(s, i) ∈ Cb : tis = t}| ≤ 1,
∀b ∈ B, ∀t ∈ T.
4. En cada clase debe haber un profesor que enseñe:
tis ∈ T,
∀(s, i) ∈ C.
5. Cada estudiante cursa cada asignatura de su programa en una sola clase:
|{i : (s, i) ∈ C, n ∈ Qis }| = 1,
∀s ∈ ωn , ∀n ∈ N.
6. Un estudiante puede estar, como mucho, en una clase de entre las del mismo
bloque:
|{(s, i) ∈ Cb : n ∈ Qis }| ≤ 1,
∀b ∈ B, ∀n ∈ N.
7. El número de estudiantes de una clase no puede exceder la capacidad de dicha
clase:
{Qis ≤ γs },
∀(s, i) ∈ C.
Las condiciones 3 y 6 se deben a que las clases que están en un mismo bloque se
programan en conjunto.
Estas son las restricciones que engloba el problema P1 de formación de los bloques.
Para resolver P2, es decir, asignar a cada bloque unas sesiones dentro del horario
añadiremos algunas hipótesis.
Supondremos que para todas las asignaturas s ∈ S se da el mismo número de lecciones;
este número estará determinado por el parámetro λ = λs , ∀s ∈ S.
Esta hipótesis simplifica el problema a la hora de darle un horario a un bloque. De
esta manera no habrá clases en un bloque con distinto número de lecciones y, por
consiguiente, todos los bloques tendrán el mismo número de sesiones. Ası́, cualquier
clase puede asignarse a cualquier bloque.
Las restricciones definidas para este segundo problema serı́an las siguientes:
8. Todas las clases de cada bloque tienen el mismo número de lecciones y, por
consiguiente, el mismo número de sesiones:
|Lb | = λ,
∀b ∈ B.
9. En una sesión no puede haber más de un bloque asignado:
|{b ∈ B : a ∈ Lb }| ≤ 1,
29
∀a ∈ A.
Aunque, de forma general, éstas son las restricciones que se consideran a la hora de
formular el modelo, en la práctica suelen surgir otras restricciones que se pueden tener
en cuenta si se saben con antelación.
Dados los datos del conjunto S de asignaturas, el programa de cada estudiante
{ωn : n ∈ N} y de cada profesor {τt : t ∈ T}, ası́ como los parámetros µs , λs , γs
y θts ya definidos, para resolver P1 necesitamos un modelo que nos devuelva unos
valores para el conjunto {(tis , Qis ) : i ∈ {1, ..., µs }, s ∈ S}, que nos dice qué alumnos
y qué profesor van en cada clase, y también unos valores para {Cb : b ∈ B}, que nos
muestren las clases incluidas en cada bloque.
Por otro lado, para resolver P2 tendremos como datos de entrada el conjunto A de
sesiones y el parámetro λ y una solución vendrá dada por el conjunto {Lb : b ∈ B} que
indica el horario de cada bloque.
En los siguientes apartados nos ocuparemos de formular un modelo para cada uno
de los problemas, es decir, para P1 y P2.
2.2.
Modelo para resolver P1. Constitución de los
bloques
Una vez que hemos introducido todas las variables y descrito las condiciones que
se van a tener en cuenta, podemos formular el modelo. Obsérvese que las restricciones dadas anteriormente no son lineales, luego no nos sirven para dar un modelo de
optimización lineal entera que es lo que queremos.
Además de las hipótesis consideradas hasta ahora, supondremos que todos los estudiantes tienen el mismo número de asignaturas |ωn |. De esta forma, todos los programas
p ∈ P tienen el mismo cardinal y se puede tomar ese valor como el número total de
bloques que hay (|B| = |ωn |). Esto es algo lógico si se pretende que los estudiantes
estén ocupados en cada sesión del horario pues en cada bloque darán una asignatura.
Estas condiciones simplifican el problema aunque, en la práctica, esta hipótesis o alguna de las descritas anteriormente podrı́an no ser ciertas. Por ello, el modelo que se
formulará a continuación no resuelve el problema completo de construir un horario
académico, aunque da la base de cómo hacerlo.
En este apartado definimos las variables de decisión y las restricciones a las que están
sujetas. El modelo planteado no tendrá una función objetivo, por lo que nos valdrá cualquier solución que verifique todas las condiciones impuestas.
La primera variable de decisión que definiremos será para formar los bloques y la
representaremos como sigue
xsb = número de clases de la asignatura s asignadas al bloque b,
para cada s ∈ S, b ∈ B.
30
El hecho de que esta variable sea entera en vez de binaria permite que más de una clase
de la misma asignatura esté en un bloque. Para que esto se cumpla debemos añadir la
restricción:
xsb ∈ Z+ , ∀s ∈ S, ∀b ∈ B.
(2.1)
Además, para que cada clase (s, i) con i ∈ {1, ..., µs }, s ∈ S esté en un bloque utilizamos
la siguiente restricción lineal:
X
xsb = µs , ∀s ∈ S.
(2.2)
b∈B
Para los profesores utilizaremos las siguientes variables binarias, definidas para cada
t ∈ T, s ∈ τt , b ∈ B.
(
1 si el profesor t imparte s ∈ τt en el bloque b,
ztsb =
0 otro caso.
Recuérdese que cada profesor tiene determinadas las asignaturas que va a dar con el
parámetro τt .
Definimos las restricciones relacionadas con estas variables.
Para que las variables sean binarias:
ztsb ∈ {0, 1},
∀t ∈ T, ∀s ∈ S, ∀b ∈ B.
(2.3)
Cada profesor impartirá cada asignatura en tantos bloques como número de clases
de esa asignatura estaba establecido que diera:
X
ztsb = θts ∀t ∈ T, ∀s ∈ τt .
(2.4)
b∈B
Como las clases de un bloque tienen el mismo horario, un profesor sólo puede
impartir una asignatura en cada bloque:
X
ztsb ≤ 1, ∀t ∈ T, ∀b ∈ B.
(2.5)
s∈τt
Cada clase tiene que tener un profesor asignado:
X
ztsb = xsb , ∀s ∈ S, ∀b ∈ B,
(2.6)
t∈Ts
donde Ts = {t ∈ T : s ∈ τt } ya estaba definido.
Observemos que con la restricción (2.2) se cumple la condición 1 del apartado 2.1.2.
Además, por (2.4), (2.5) y (2.6) conseguimos que se cumplan, respectivamente, las
condiciones 2, 3 y 4.
A partir de aquı́, continuaremos por dos caminos distintos, dependiendo de cómo se
defina la variable de decisión que hace referencia a los estudiantes. La primera opción
se hace considerando variables binarias, de manera que cada estudiante será tratado
de forma independiente, y en la segunda se agrupa a los alumnos que tengan un mismo
programa de asignaturas utilizando una variable entera que los englobe a todos.
31
2.2.1.
Estudiantes independientes
La variable de decisión vendrá dada por:
(
1 si el estudiante n da la asignatura s en el bloque b,
vnsb =
0 otro caso,
para cada n ∈ N, s ∈ ωn , b ∈ B.
Además, estará sujeta a las siguientes restricciones:
Para que las variables sean binarias:
vnsb ∈ {0, 1},
∀n ∈ N, ∀s ∈ ωn , ∀b ∈ B.
Cada estudiante da cada asignatura de su programa en un solo bloque:
X
vnsb = 1, ∀s ∈ ωn , ∀n ∈ N.
(2.7)
(2.8)
b∈B
Cada estudiante en cada bloque debe dar una asignatura, para que el alumno no
tenga “huecos” dentro del horario y esté siempre ocupado:
X
vnsb = 1, ∀b ∈ B, ∀n ∈ N.
(2.9)
s∈ωn
El número de estudiantes que dan una asignatura en un bloque no debe pasar la
capacidad total de las clases de esa asignatura asignadas a ese bloque:
X
vnsb ≤ γs xsb , ∀b ∈ B, ∀s ∈ S.
(2.10)
n∈Ns
Observemos que si varias clases de la misma asignatura s están en un bloque b, entonces
los estudiantes que la dan en ese bloque se pueden asignar de forma arbitraria en las
xsb clases.
Con estas variables de decisión y las restricciones consideradas garantizamos que se
cumplen el resto de los requisitos impuestos para la constitución de los bloques; esto
es, se verifican 5, 6 y 7 del apartado 2.1.2.
Con estas restricciones, las definidas anteriormente (2.1-2.6) y las variables xsb , ztsb ,
vnsb tendrı́amos el modelo formulado. Obsérvese que ası́ planteado el problema no necesitamos una función objetivo. Por lo tanto, formulamos el modelo como un problema
de factibilidad, es decir, en el que las variables tienen que verificar unas condiciones,
no como un modelo de Optimización Lineal donde utilizamos una función objetivo
concreta.
A partir de una solución de este modelo podemos formar los bloques y constituir las
clases. Recuérdese que las clases que van en cada bloque estaban determinadas por la
32
variable Cb . Dado b ∈ B, xsb es el número de clases de la asignatura s que van en el
bloque b, luego Cb estará formado por xsb clases de la asignatura s, para cada s ∈ S.
Para ver qué profesor va en cada clase (s, i) con s ∈ S, i = 1, ..., µs tenı́amos la variable
tis . En el modelo, si un profesor t da una asignatura s en un bloque b, entonces ztsb = 1.
Por tanto, tis = t si (s, i) está en el bloque b y ztsb = 1. Por la restricción (2.6) tenemos
tantos profesores de s en b como clases de esa asignatura hay en ese bloque. Por tanto,
podemos asignarle arbitrariamente un profesor a cada clase.
Por último, para los estudiantes de una clase sabemos que un alumno n da una asignatura s en b solamente si vnsb = 1. Además, si varias clases de esa asignatura están en
el bloque b el número total de alumnos no supera la capacidad de las clases por (2.10).
Por tanto, podemos distribuir los alumnos que dan s en b en las xsb clases de forma
arbitraria.
Este modelo presenta el incoveniente de utilizar muchas variables ya que necesita
una distinta para referirse a cada estudiante. Sin embargo, si varios estudiantes tienen
el mismo programa de asignaturas esas variables juegan un papel simétrico. Por tanto,
¿por qué no tratarlos en conjunto con una variable que los englobe a todos?
Con esta alternativa conseguimos reducir considerablemente el número de variables, lo
cual supone una ventaja a la hora de implementar el modelo en cualquier programa de
optimización. A continuación, estudiamos esta nueva forma de resolver el problema de
constituir los bloques.
2.2.2.
Estudiantes agrupados por programas
En esta variante agruparemos a los estudiantes que tienen el mismo programa p ∈ P
con la variable entera
ypsb = número de alumnos del programa p que dan la asignatura s en el bloque b,
para cada p ∈ P, s ∈ πp y b ∈ B.
De esta forma, no se considera la selección de asignaturas que cada estudiante hizo
individualmente, sino el número total de alumnos de cada programa.
El modelo se formulará, por tanto, con las variables xsb , ztsb , las restricciones (2.2),
(2.4), (2.5), (2.6) y añadiendo las variables ypsb junto con las cuatro restricciones definidas en las siguientes lı́neas.
Para que las variables sean enteras:
ypsb ∈ Z+ ,
∀p ∈ P, ∀b ∈ B, ∀s ∈ πp .
(2.11)
Todos los estudiantes de un programa p tienen que dar cada asignatura del programa distribuidos en los bloques:
X
ypsb = νp , ∀p ∈ P, ∀s ∈ πp .
(2.12)
b∈B
33
Todos los estudiantes de un programa p deben dar alguna asignatura en cada
bloque b, para estar siempre ocupados:
X
ypsb = νp , ∀p ∈ P, ∀b ∈ B.
(2.13)
s∈πp
El número total de estudiantes que dan una asignatura en un bloque no puede
exceder la capacidad total de las clases donde se imparte:
X
ypsb ≤ γs xsb , ∀s ∈ S, ∀b ∈ B.
(2.14)
p∈Ps
Estas variables de decisión (ypsb ) nos dicen el número total de alumnos de cada
programa que van en cada bloque para cada asignatura, pero no nos da información
sobre qué estudiantes son en concreto. Por tanto, no es obvio que una solución factible
de este problema garantice que cada estudiante da cada asignatura en una sola clase
y, por otro lado, que cada estudiante no está en dos clases que coinciden en horario, es
decir, del mismo bloque. Estas eran las condiciones 5, 6 de la sección 2.1.2 que tenı́a
que cumplir nuestro modelo.
Vamos a demostrar en el siguiente teorema que podemos descomponer a cada grupo de
estudiantes que dan una asignatura en un bloque y asignarlos individualemente a las
clases de cada bloque, de manera que se cumplan todas las condiciones. Este resultado
no aparece en [2].
Teorema 2.1. Supongamos que existen ypsb para cada p ∈ P, s ∈ πp y b ∈ B satisfaciendo (2.11), (2.12), (2.13) y (2.14). Entonces, para cada programa p ∈ P existen
valores para las variables vnsb para cada n ∈ Np , s ∈ ωn = πp , b ∈ B tales que
X
vnsb = ypsb , ∀b ∈ B, ∀s ∈ πp ,
(2.15)
n∈Np
X
vnsb = 1,
∀b ∈ B, ∀n ∈ Np ,
(2.16)
vnsb = 1,
∀n ∈ Np , ∀s ∈ πp .
(2.17)
s∈ωn
X
b∈B
Demostración. Dado p ∈ P un programa, definimos el vector bidimensional β como
|π |
|B|
βsb = ypsb para cada s ∈ πp y b ∈ B. Entonces, por (2.11) tenemos que β ∈ Z+ p × Z+ .
Además, por (2.12) y (2.13) β satisface las condiciones de la hipótesis H(η) para η = νp
del Teorema 1.20; recuérdese que |πp | = |B|.
Aplicando el Teorema 1.20 existirá ζsbk ∈ {0, 1} para cada s ∈ πp , b ∈ B y k ∈ {1, ..., νp }
tal que
X
ζsbk = 1, ∀b ∈ B, ∀k ∈ {1, ..., νp },
(2.18)
s∈πp
X
ζsbk = 1,
∀s ∈ πp , ∀k ∈ {1, ..., νp },
b∈B
34
(2.19)
νp
X
ζsbk = βsb ,
∀b ∈ B, ∀s ∈ πp .
(2.20)
k=1
A cada estudiante n ∈ Np le asociamos σ(n) (recuérdese que |Np | = νp ), un único
entero en {1, ..., νp } y definimos la variable vnsb = ζsbσ(n) para cada n ∈ Np , s ∈ πp ,
b ∈ B.
De la definición de β y v junto con (2.20), se sigue la ecuación (2.15):
X
vnsb =
n∈Np
X
ζsbσ(n) =
n∈Np
νp
X
ζsbk = βsb = ypsb ,
∀b ∈ B, ∀s ∈ πp .
k=1
Por último, nos queda demostrar que se cumple (2.16) y (2.17). La primera se sigue de
(2.18) teniendo en cuenta que ωn = πp si n ∈ Np :
X
X
X
vnsb =
vnsb =
ζsbσ(n) = 1, ∀b ∈ B, ∀n ∈ Np .
s∈ωp
s∈πp
s∈πp
La siguiente es consecuencia de (2.19):
X
X
ζsbσ(n) = 1,
vnsb =
b∈B
∀n ∈ Np , ∀s ∈ πp .
b∈B
Como p ∈ P ha sido elegido arbitrariamente, tenemos probado el teorema.
El Teorema 2.1 nos muestra qué alumnos en concreto dan cada asignatura en cada
bloque pues, como hemos dicho anteriormente, {Np : p ∈ P} es una partición de N en
subconjuntos disjuntos.
También hemos demostrado con (2.16) que en cada bloque un estudiante da una asignatura (para no tener ”huecos”) y con (2.17) que cada alumno da cada asignatura de
su programa en un solo bloque. Por consiguiente, hemos probado que este segundo
modelo es válido.
En este caso, con las variables xsb , ztsb , ypsb y las restricciones (2.3), (2.4), (2.5), (2.6),
(2.11), (2.12), (2.13) y (2.14) tenemos formulado el modelo.
Por último, observemos que este modelo organiza las clases y el profesor ubicado en
ella al igual que lo hacı́a el modelo anterior. Con respecto a los estudiantes, el Teorema 2.1 nos permite transformar estas variables en las del primer modelo (estudiantes
independientes), y para éste hemos visto cómo distribuir los alumnos en las clases. Por
tanto, tenemos dos modelos para resolver el problema de constitución de los bloques.
2.3.
Modelos para P1 que minimizan la infactibilidad
En la prática, es problable que no podamos encontrar una solución factible del
problema anterior. Por ejemplo, podrı́a ocurrir que los profesores no estén disponibles
35
a todas las horas o que para poder organizar los alumnos en las clases se necesite superar
la capacidad de las aulas. También podrı́a pasar que algunos estudiantes hiciesen una
selección de asignaturas de manera que no sea posible asignarle clase y bloque para
cada asignatura de su programa.
Como alternativa se puede plantear un modelo en el que algunas restricciones se relajen
y a cambio la función objetivo se utilice para maximizar la factibilidad del problema
por medio de penalizaciones o recompensas. En esta sección se muestran tres formas
diferentes de hacerlo para la variante de los estudiantes agrupados según su programa.
Veamos primero los aspectos que los tres modelos tienen en común. En todos se van a
mantener las restricciones (2.2) y (2.5) y por el contrario, se van a relajar (2.4) y (2.6)
que hacen referencia a la asignación de profesores a las clases. Estas dos restricciones
se sustituyen por las siguientes:
X
ztsb ≤ θts , ∀t ∈ T, ∀s ∈ τt ,
(2.21)
b∈B
X
ztsb ≤ xsb ,
∀s ∈ S, ∀b ∈ B.
(2.22)
t∈Ts
Haciendo esto alguna clase podrı́a quedar sin profesor asignado. Para garantizar que
el número de profesores asignados a las clases sea el máximo posible añadiremos en el
objetivo de los tres modelos:
XXX
ρztsb + ...}
(2.23)
máx {
t∈T s∈τt b∈B
donde ρ > 0 es un parámetro que indica la recompensa por asignar un profesor a una
clase.
Además, las tres formulaciones tienen las restricciones obvias (2.1), (2.3) y (2.11). A
continuación se muestra la parte de la formulación exclusiva de cada modelo de forma
detallada.
Modelo 1:
En este modelo se cambian las restricciones (2.12) y (2.13) referentes a la variable
ypsb de los estudiantes por las siguientes:
X
ypsb ≤ νp , ∀p ∈ P, ∀s ∈ πp ,
(2.24)
b∈B
X
ypsb ≤ νp ,
∀p ∈ P, ∀b ∈ B.
(2.25)
s∈πp
Relajando la primera se permite que algún estudiante no dé alguna asignatura en
ningún bloque. Con la segunda, pueden haber estudiantes en un bloque que no den
ninguna asignatura, es decir, que estén desocupados. Por el contrario, se mantiene
(2.14), con lo que se consigue que no se supere la capacidad de la clase.
36
Con el objetivo se intenta que el número de alumnos que quedan sin que se les asigne
asignatura y bloque sea el menor posible, por eso se define como sigue:
XXX
XXX
máx {
αypsb +
ρztsb }
(2.26)
p∈P s∈πp b∈B
t∈T s∈τt b∈B
donde α > 0 es la recompensa por decidir que un estudiante va a dar una asignatura
de su programa en bloque concreto.
La formulación completa serı́a la siguiente:
XXX
XXX
máx {
αypsb +
ρztsb }
p∈P s∈πp b∈B
t∈T s∈τt b∈B
sujeto a:
xsb ∈ Z+ ,
X
xsb = µs ,
∀s ∈ S, ∀b ∈ B,
∀s ∈ S,
b∈B
ztsb ∈ {0, 1}
X
ztsb ≤ θts ,
∀t ∈ T, ∀s ∈ τt , ∀b ∈ B,
∀t ∈ T, ∀s ∈ τt ,
b∈B
X
ztsb ≤ xsb ,
∀s ∈ S, ∀b ∈ B,
t∈Ts
X
ztsb ≤ 1,
∀t ∈ T, ∀b ∈ B,
s∈τt
ypsb ∈ Z+ ,
X
ypsb ≤ νp ,
∀s ∈ πp , ∀b ∈ B, ∀p ∈ P,
∀p ∈ P, ∀s ∈ πp ,
b∈B
X
ypsb ≤ νp ,
∀p ∈ P, ∀b ∈ B,
ypsb ≤ γs xsb ,
∀s ∈ S, ∀b ∈ B,
s∈πp
X
p∈Ps
donde los parámetros de entrada serán α, ρ, S, T, B, P, τt , µs , θts , νp , γs , πp , Ps y Ts .
El principal problema de este primer modelo es que podrı́a ocurrir que pocos estudiantes
dieran todas las asignaturas de sus programas (en los distintos bloques) y muchos de
ellos dieran sólo algunas, pues la función objetivo no hace esta distinción.
Modelo 2:
El modelo que se presenta es semejante al primero, ya que también relaja las restricciones (2.12) y (2.13) y mantiene (2.14), pero con la diferencia de que el incoveniente
que podı́a surgir con el anterior desaparece. Veamos por qué.
Con este modelo se busca que el mayor número de estudiantes tenga un bloque asignado
para cada asignatura de su programa. Para eso necesitamos definir una nuevas variables:
37
wp = número de estudiantes que cogieron el programa p y dan todas las asignaturas
del programa en los distintos bloques,
para cada p ∈ P.
La función objetivo que maximiza el número de estudiantes totalmente asignados será:
X
XXX
máx {
ωwp +
ρztsb }
(2.27)
p∈P
t∈T s∈τt b∈B
donde ω > 0 es la recompensa por decidir para un estudiante en qué bloque da cada
asignatura de su programa.
Las nuevas restricciones para este problema serán entonces:
X
ypsb = wp , ∀p ∈ P, ∀s ∈ πp ,
(2.28)
b∈B
X
ypsb = wp ,
∀p ∈ P, ∀b ∈ B,
(2.29)
s∈πp
en sustitución de (2.12) y (2.13), respectivamente, y la siguiente que deriva de la definición de wp :
wp ≤ νp , ∀p ∈ P.
(2.30)
Para este modelo la formulación completa serı́a la siguiente:
38
máx {
X
ωwp +
p∈P
XXX
ρztsb }
t∈T s∈τt b∈B
sujeto a:
xsb ∈ Z+ ,
X
xsb = µs ,
∀s ∈ S, ∀b ∈ B,
∀s ∈ S,
b∈B
ztsb ∈ {0, 1}
X
ztsb ≤ θts ,
∀t ∈ T, ∀s ∈ τt , ∀b ∈ B,
∀t ∈ T, ∀s ∈ τt ,
b∈B
X
ztsb ≤ xsb ,
∀s ∈ S, ∀b ∈ B,
t∈Ts
X
ztsb ≤ 1,
∀t ∈ T, ∀b ∈ B,
s∈τt
ypsb ∈ Z+ ,
X
ypsb ≤ γs xsb ,
∀s ∈ πp , ∀b ∈ B, ∀p ∈ P,
∀s ∈ S, ∀b ∈ B,
p∈Ps
X
ypsb = wp ,
∀p ∈ P, ∀s ∈ πp ,
ypsb = wp ,
∀p ∈ P, ∀b ∈ B,
b∈B
X
s∈πp
w p ≤ νp ,
wp ∈ Z+ ,
∀p ∈ P,
∀p ∈ P.
Los parámetros de entrada son: ω, ρ, S, T, B, P, τt , µs , θts , νp , γs , πp , Ps y Ts .
Modelo 3:
Por último, en este modelo permitimos que la capacidad de la clase se pueda superar.
Para ello se definen las variables de decisión enteras:
usb = número de estudiantes que sobrepasan la capacidad total de las clases de la
asignatura s que están en el bloque b,
para cada s ∈ S y b ∈ B.
Para que la capacidad sea superada por el mı́nimo posible de alumnos utilizaremos el
objetivo:
XXX
XX
máx {
ρztsb −
γusb }
(2.31)
t∈T s∈τt b∈B
s∈S b∈B
donde γ > 0 es la penalización por cada estudiante que sobrepasa la capacidad de las
aulas.
39
Respecto a las restricciones referentes a los estudiantes, a diferencia de los otros modelos, conservamos (2.12) y (2.13) y cambiamos (2.14), que es la que hace referencia a
la capacidad de las clases. En su lugar, incluiremos las restricciones:
X
ypsb ≤ γs xsb + usb , ∀s ∈ S, ∀b ∈ B.
(2.32)
p∈Ps
Ası́, la formulación completa del modelo es la siguiente:
XXX
XX
máx {
ρztsb −
γusb }
t∈T s∈τt b∈B
s∈S b∈B
sujeto a:
xsb ∈ Z+ ,
X
xsb = µs ,
∀s ∈ S, ∀b ∈ B,
∀s ∈ S,
b∈B
ztsb ∈ {0, 1},
X
ztsb ≤ θts ,
∀t ∈ T, ∀s ∈ τt , ∀b ∈ B,
∀t ∈ T, ∀s ∈ τt ,
b∈B
X
ztsb ≤ xsb ,
∀s ∈ S, ∀b ∈ B,
t∈Ts
X
ztsb ≤ 1,
∀t ∈ T, ∀b ∈ B,
s∈τt
ypsb ∈ Z+ ,
X
ypsb = νp ,
∀s ∈ πp , ∀b ∈ B, ∀p ∈ P,
∀p ∈ P, ∀s ∈ πp ,
b∈B
X
ypsb = νp ,
∀p ∈ P, ∀b ∈ B,
ypsb ≤ γs xsb + usb ,
∀s ∈ S, ∀b ∈ B,
usb ∈ Z+ ,
∀s ∈ S, ∀b ∈ B.
s∈πp
X
p∈Ps
Los parámetros de entrada serán: γ, ρ, S, T, B, P, τt , µs , θts , νp , γs , πp , Ps y Ts .
2.3.1.
Validación de los tres modelos
Una vez se han formulado los modelos debemos probar que los tres son válidos,
es decir, tenemos el número total de estudiantes que hay de cada asignatura en cada
bloque, pero tenemos que ver si podemos asignarle asignatura y bloque a cada estudiante individualmente de manera que se cumpla: un estudiante no da dos asignaturas
del mismo bloque y además, cada asignatura la da como mucho en un bloque. También habrá que probar que esta asignación individual no cambia el valor de la función
objetivo.
Para llevarlo a cabo utilizaremos el Teorema 1.20 visto en el capı́tulo anterior. Comenzaremos aplicando este resultado para validar el Modelo 2 en el siguiente teorema.
40
Teorema 2.2. Supongamos que tenemos una solución del Modelo 2, por tanto, existe
ypsb para cada p ∈ P, s ∈ πp , b ∈ B y wp para cada p ∈ P satisfaciendo
X
ypsb = wp , ∀p ∈ P, ∀s ∈ πp ,
(2.33)
b∈B
X
∀p ∈ P, ∀b ∈ B,
ypsb = wp ,
(2.34)
s∈πp
ypsb ∈ Z+ ,
∀p ∈ P, ∀s ∈ πp , ∀b ∈ B,
(2.35)
w p ≤ νp ,
∀p ∈ P,
(2.36)
wp ∈ Z+ ,
∀p ∈ P.
(2.37)
Entonces para cada programa p ∈ P con wp ≥ 1 existen valores para las variables vnsb
para cada n ∈ Np , s ∈ ωn = πp , b ∈ B tales que:
X
vnsb = ypsb , ∀b ∈ B, ∀s ∈ πp ,
(2.38)
n∈Np
X
vnsb ≤ 1,
∀b ∈ B, ∀n ∈ Np ,
(2.39)
vnsb ≤ 1,
∀n ∈ Np , ∀s ∈ πp .
(2.40)
s∈ωn
X
b∈B
Además, existe un subconjunto de estudiantes del programa p, Wp ⊆ Np , con |Wp | =
wp , tal que para cada estudiante n ∈ Wp se verifica
X
vnsb = 1, ∀b ∈ B,
(2.41)
s∈ωn
X
vnsb = 1,
∀s ∈ ωn .
(2.42)
b∈B
Demostración. Dado p ∈ P un programa con wp ≥ 1, recuérdese que una de las
condiciones que se habı́an impuesto era que el número de asignaturas del programa p
coincidı́a con el número de bloques, es decir, que |B| = |πp |.
Definimos el vector bidimensional β como βsb = ypsb para cada s ∈ πp y b ∈ B.
|π |
|B|
Entonces, por las restricciones (2.35) y (2.37) tenemos que β ∈ Z+ p × Z+ . Además,
por (2.33) y (2.34) β satisface las condiciones de la hipótesis H(η) para η = wp :
X
βsb = wp , ∀b ∈ B,
s∈πp
X
βsb = wp ,
∀s ∈ πp .
b∈B
Aplicando el Teorema 1.20 existirá ζsbk ∈ {0, 1} para cada s ∈ πp , b ∈ B y k ∈
{1, ..., wp } tal que
X
ζsbk = 1, ∀b ∈ B, ∀k ∈ {1, ..., wp },
(2.43)
s∈πp
41
X
∀s ∈ πp , ∀k ∈ {1, ..., wp },
ζsbk = 1,
(2.44)
b∈B
wp
X
ζsbk = βsb ,
∀b ∈ B, ∀s ∈ πp .
(2.45)
k=1
A continuación, podemos tomar Wp como los wp primeros estudiantes del conjunto
Np , teniendo en cuenta que se cumple (2.36).
A cada estudiante n ∈ Wp le asociamos σ(n) un único entero en {1, ..., wp } y definimos
la variable
(
ζsbσ(n) si n ∈ Wp
vnsb =
0
en otro caso
para cada n ∈ Np , s ∈ πp , b ∈ B.
De la definición de β y v junto con (2.45), se sigue la ecuación (2.38):
X
X
vnsb =
n∈Np
wp
X
ζsbσ(n) =
n∈Np
ζsbk = βsb = ypsb ,
∀b ∈ B, ∀s ∈ πp .
k=1
De las ecuaciones (2.43) y (2.44) se siguen, respectivamente, (2.41) y (2.42) donde se
tiene en cuenta que ωn = πp ∀n ∈ Np y que n lo estamos suponiendo en el conjunto
Wp :
X
X
X
ζsbσ(n) = 1, ∀b ∈ B,
ζsbσ(n) =
vnsb =
s∈πp
s∈ωn
s∈ωn
y por otro lado
X
X
vnsb =
ζsbσ(n) = 1,
∀s ∈ ωn .
b∈B
b∈B
Por último, nos queda demostrar que se cumple (2.39) y (2.40). Para eso distinguimos
dos casos, si n ∈ Wp o si n ∈ Np \Wp . En el primer caso, no hay nada que probar,
pues ya hemos visto que (2.41) y (2.42) se cumplen, entonces
X
vnsb = 1, ∀b ∈ B,
s∈ωn
y
X
vnsb = 1,
∀s ∈ ωn .
b∈B
Si n ∈
/ Wp , entonces vnsb = 0, ∀s ∈ πp , ∀b ∈ B, luego
X
vnsb = 0, ∀b ∈ B,
s∈ωn
y
X
vnsb = 0, ∀s ∈ ωn .
b∈B
Por consiguiente, se verifican (2.39) y (2.40) como querı́amos probar. Como p ∈ P lo
hemos tomado arbitrario, tenemos probado el teorema.
42
Del Teorema 2.2 observamos que los estudiantes de Wp para cada p ∈ P van a ser los
que están ocupados durante toda la jornada por (2.41) y dan cada asignatura en un
bloque por (2.42). Por consiguiente, son los que tendrán la asignación de asignatura y
bloque hecha completamente.
Como además |Wp | = wp , para cada p ∈ P se tiene que
X
X
wp =
|Wp |.
p∈P
p∈P
De aquı́ se deduce que el número total de estudiantes que tienen la asignación completa
es el mismo para las variables ypsb como para las vnsb . Por tanto, el cambio de variables
no influye en la función objetivo, que era
X
XXX
ωwp +
ρztsb .
t∈T s∈τt b∈B
p∈P
Concluimos que este modelo es válido.
Para el Modelo 3 tenemos el siguiente corolario, cuya demostración no hacemos
ya que es idéntica a la del Teorema 2.1.
Corolario 2.3. Supongamos que tenemos una solución del Modelo 3, por tanto, existe
ypsb para cada p ∈ P, s ∈ πp y b ∈ B satisfaciendo
X
ypsb = νp , ∀p ∈ P, ∀s ∈ πp ,
(2.46)
b∈B
X
ypsb = νp ,
∀p ∈ P, ∀b ∈ B,
(2.47)
s∈πp
ypsb ∈ Z+ ,
∀p ∈ P, ∀s ∈ πp , ∀b ∈ B.
(2.48)
Entonces, para cada programa p ∈ P existen valores para las variables vnsb para cada
n ∈ Np , s ∈ ωn = πp , b ∈ B tales que
X
vnsb = ypsb , ∀b ∈ B, ∀s ∈ πp ,
(2.49)
n∈Np
X
vnsb = 1,
∀b ∈ B, ∀n ∈ Np ,
(2.50)
vnsb = 1,
∀n ∈ Np , ∀s ∈ πp .
(2.51)
s∈ωn
X
b∈B
A partir de (2.50) y (2.51) podemos garantizar que los estudiantes están asignados de
manera que no dan dos asignaturas al mismo tiempo y que cada asignatura la dan en
un solo bloque. Por otro lado, para este modelo la función objetivo se habı́a definido
como
XXX
XX
ρztsb −
γusb .
t∈T s∈τt b∈B
s∈S b∈B
43
Por tanto, para que el modelo quede validado, nos falta probar que el número de
alumnos que exceden la capacidad de las aulas se mantiene al cambiar de variables.
Esto es cierto ya que el número de estudiantes que dan una asignatura s en un bloque
b es el mismo usemos ypsb o vnsb . Lo vemos usando (2.49):
X
X X
X
ypsb =
vnsb =
vnsb .
p∈Ps
p∈Ps n∈Np
n∈Ns
Para concluir esta parte, nos falta demostrar que la solución óptima del modelo
Modelo 1 va a ser correcta en el sentido de que se pueden descomponer las variables
ypsb en variables vnsb individuales para cada estudiante. Esto lo vemos en el siguiente
resultado.
Teorema 2.4. Supongamos que tenemos una solución del Modelo 1, por tanto, existe
ypsb para cada p ∈ P, s ∈ πp y b ∈ B satisfaciendo
X
ypsb ≤ νp , ∀p ∈ P, ∀s ∈ πp ,
(2.52)
b∈B
X
ypsb ≤ νp ,
∀p ∈ P, ∀b ∈ B,
(2.53)
s∈πp
ypsb ∈ Z+ ,
∀p ∈ P, ∀s ∈ πp , ∀b ∈ B.
(2.54)
Entonces, para cada programa p ∈ P existen valores para las variables vnsb para cada
n ∈ Np , s ∈ ωn = πp , b ∈ B tales que
X
vnsb = ypsb , ∀b ∈ B, ∀s ∈ πp ,
(2.55)
n∈Np
X
vnsb ≤ 1,
∀b ∈ B, ∀n ∈ Np ,
(2.56)
vnsb ≤ 1,
∀n ∈ Np , ∀s ∈ ωn .
(2.57)
s∈ωn
X
b∈B
Demostración. Dado p ∈ P, consideramos el problema del transporte definido para
un grafo
B) donde cada nodo s ∈ πp oferta
P bipartito completo, con bipartición (πp ,P
νp − b∈B ypsb y cada nodo b ∈ B demanda νp − s∈πp ypsb .
Observemos que un nodo s de oferta representa el número de estudiantes del programa
p que no están asignados a un bloque para la asignatura s. Del mismo modo, un
nodo b de demanda hace referencia a los estudiantes del bloque b que no dan ninguna
asignatura en ese bloque.
Veamos, en primer lugar, que se trata de un problema de transporte equilibrado, es
decir, que tiene la misma oferta y demanda total:
X
X
XX
(νp −
ypsb ) = |πp |νp −
ypsb ,
s∈πp
s∈πp b∈B
b∈B
44
y por otro lado,
X
(νp −
X
ypsb ) = |B|νp −
s∈πp
b∈B
XX
ypsb .
b∈B s∈πp
Como |πp | = |B|, cambiando el orden de los sumatorios se obtiene la igualdad.
Además, como todas las ofertas y demandas están en Z+ (por (2.52), (2.53) y (2.54)),
y el grafo es bipartito completo, entonces el problema es factible (véase el apartado
|π |
|B|
1.3). Sea δp ∈ Z+ p × Z+ una solución entera, donde δpsb representa las unidades
transportadas del nodo s al nodo b.
|π |
|B|
0
= ypsb + δpsb , ∀s ∈ πp , ∀b ∈ B.
A continuación, definimos yp0 ∈ Z+ p × Z+ como ypsb
ComoPla oferta total coincide con la demanda total, a cada nodo b ∈ B le llegarán
νp − s∈πp ypsb estudiantes, por tanto, tenemos
X
0
ypsb
=
X
X
X
(2.58)
Del mismo modo, cada nodo s ∈ πp transporta toda su oferta, por lo que
X
X
X
X
X
0
ypsb ) = νp , ∀s ∈ πp .
ypsb + (νp −
δpsb =
ypsb +
ypsb
=
(2.59)
b∈B
s∈πp
b∈B
δpsb =
s∈πp
ypsb + (νp −
X
ypsb ) = νp , ∀b ∈ B.
s∈πp
ypsb +
s∈πp
s∈πp
b∈B
b∈B
b∈B
0
De (2.58) y (2.59) observamos que ypsb
satisface las condiciones de la hipótesis H(νp )
0
del Teorema 1.20. Luego existirá vnsb ∈ {0, 1} para cada n ∈ Np (recuérdese que
|Np | = νp ), s ∈ πp y b ∈ B tal que
X
0
vnsb
= 1, ∀n ∈ Np , ∀b ∈ B,
(2.60)
s∈πp
X
0
vnsb
= 1,
∀n ∈ Np , ∀s ∈ πp ,
(2.61)
b∈B
X
0
0
vnsb
= ypsb
,
∀b ∈ B, ∀s ∈ πp .
(2.62)
n∈Np
Por tanto, para cada asignatura s ∈ πp y cada bloque b ∈ B se cumple
X
0
0
vpsb
= ypsb
= ypsb + δpsb .
(2.63)
n∈Np
0
Definimos ∆psb como cualquier subconjunto de {n ∈ Np : vnsb
= 1} de manera que
|∆psb | = δpsb . Este conjunto está bien definido por (2.63) ya que ypsb y δpsb son enteros
no negativos.
Ahora definimos
vnsb
(
0
vnsb
=
0
n ∈ Np \∆psb
n ∈ ∆psb
0
para cada n ∈ Np . De esta definición es obvio que vnsb ≤ vnsb
, ∀n ∈ Np . Teniendo en
cuenta la definición de ∆psb , que |∆psb | = δpsb y la restricción (2.62), tenemos
45
X
n∈Np
vnsb =
X
0
vnsb
=
n∈Np \∆psb
X
X
0
vnsb
−
0
0
vnsb
= ypsb
−
n∈∆psb
n∈Np
X
0
1 = ypsb
− δpsb = ypsb .
n∈∆psb
Por consiguiente, hemos demostrado (2.55):
X
vnsb = ypsb , ∀s ∈ πp , ∀b ∈ B.
n∈Np
Veamos que v ası́ definido también cumple las otras dos restricciones de la tesis. En
ambas distinguimos si n ∈ ∆psb o n ∈ Np \∆psb .
Si n ∈ ∆psb , como n ∈ Np tenemos que πp = ωn , luego
X
vnsb = 0,
s∈ωn
y
X
vnsb = 0.
b∈B
Por otro lado, si n ∈ Np \∆psb
X
X
0
vnsb
= 1, por (2.60)
vnsb =
s∈πp
s∈ωn
y
X
b∈B
vnsb =
X
0
vnsb
= 1, por (2.61).
b∈B
Concluimos entonces que (2.56) y (2.57) también se cumplen. Como el programa p ∈ P
ha sido elegido arbitrariamente, tenemos probado el teorema.
De esta demostración se deduce que los estudiantes de un programa p que van a estar
ocupados durante todo el horario y dan cada asignatura en un solo bloque son los
n ∈ N tales que n ∈ Np \∆psb .
Veamos ahora que el cambio de variables no cambia el valor de la función objetivo, que
era
XXX
XXX
αypsb +
ρztsb .
p∈P s∈πp b∈B
t∈T s∈τt b∈B
Para ello tengamos en cuenta que ωn = πp , ∀n ∈ Np y que {Np : p ∈ P} es una
partición de N. Además, usamos (2.55).


XXX
XXX X
XXX

ypsb =
vnsb  =
vnsb .
p∈P s∈πp b∈B
p∈P s∈πp b∈B
n∈Np
n∈N s∈ωn b∈B
Con esto damos por finalizado el problema de construir los bloques.
46
2.4.
Modelo para resolver P2. Programar los bloques
En este apartado resolveremos la última parte del problema. Una vez que los alumnos y el profesor están ubicados en las clases y éstas se han distribuido entre los bloques,
es el turno de darle un horario a cada bloque.
Esta parte queda sin hacer en el documento [2], pero hemos podido resolverla gracias
a la experiencia adquirida en la primera parte del problema. Además, como veremos a
continuación, las condiciones para este problema resultan sencillas de modelizar.
Para determinar qué bloque va en cada sesión definimos las variables de decisión
(
1 si el bloque b se da en la sesión a
uba =
0 en otro caso
para cada b ∈ B y a ∈ A.
Las restricciones para estas variables son las siguientes:
Para que las variables sean binarias necesitamos:
uba ∈ {0, 1},
∀a ∈ A, ∀b ∈ B.
(2.64)
Todas las clases de cada bloque tienen el mismo número de sesiones (determinado
por el parámetro λ):
X
uba = λ, ∀b ∈ B.
(2.65)
a∈A
En cada sesión sólo hay un bloque:
X
uba = 1,
∀a ∈ A.
(2.66)
b∈B
Observemos que con estas restricciones conseguimos que se cumplan 8 y 9 del apartado
2.1.2. Por tanto, formulamos el modelo como un problema de factibilidad.
Por otro lado, sólo con estas dos condiciones cualquier bloque puede asignarse a cualquier sesión, de manera que las sesiones de cada bloque se deciden aleatoriamente.
Otra condición que podrı́amos añadir serı́a que no hubiera en un mismo dı́a dos sesiones
en las que esté el mismo bloque, o lo que es equivalente, que un alumno no dé en un dı́a
la misma asignatura dos veces. Para eso necesitamos un nuevo conjunto D = {1, ..., D}
para los dı́as. Además, guardaremos las sesiones correspondientes a cada dı́a d con la
variable Ad .
La restricción correspondiente serı́a:
X
uba ≤ 1,
∀b ∈ B, ∀d ∈ D.
a∈Ad
47
(2.67)
Dada una solución factible, el horario de cada bloque vendrá dado por
Lb = {a ∈ A : uba = 1},
∀b ∈ B.
(2.68)
Ası́, hemos solucionado el problema P2 de programar los bloques.
Con los modelos dados anteriormente hemos alcanzado nuestro objetivo que era
plantear un modelo de optimización lineal entera que nos permita construir un horario.
No obstante, llevado a la práctica este problema puede estar sujeto a más condiciones,
cada una especı́fica de cada centro.
Una ampliación interesante podrı́a ser aplicar nuestros modelos con datos de un instituto u otro centro concretos. Al final del texto [2] se puede encontrar un estudio hecho
en un instituto concreto con la formulación que se ha planteado en este capı́tulo.
48
Capı́tulo 3
Una aplicación: El calendario de
exámenes de la facultad
En este último capı́tulo vamos a modelizar el problema de construir un horario para
un caso concreto; éste será el calendario de exámenes del grado en Matemáticas, del
grado en Informática y, por consiguiente, también quedará establecido para el grado
de estudios simultáneos en Matemáticas e Informática (conocido como PES).
El calendario de exámenes se realizará utilizando los datos de la convocatoria de junio
del curso 2014-2015 y nuestro principal objetivo será organizar los exámenes de manera que estén separados todo lo que sea posible. Para ello formularemos un modelo
de optimización lineal entera que implementaremos en el programa Xpress. Además,
analizaremos los resultados obtenidos y los compararemos con el calendario que se
utilizó en esa convocatoria.
3.1.
Definición del problema y notación
Comenzamos analizando toda la información que caracteriza este problema, es decir,
qué asignaturas tiene cada grado, de qué curso son, en qué cuatrimestre se dan, etc.
Además, revisamos las circunstancias que se tendrán en cuenta a la hora de decidir
cuándo se pone un examen. Por otro lado, también describimos toda la notación que
usaremos para formular el modelo.
En el apéndice A podemos encontrar los planes de estudios de los tres grados con
los que vamos a trabajar, que han sido extraı́dos de [8], [9] y [10]. Para nuestro modelo
sólo tendremos en cuenta las asignaturas que tienen examen, de esta forma quedan
excluidas Prácticas Externas y Trabajo de Fin de Grado. En estas tablas podemos
observar que cada asignatura de PES coincide con una asignatura de Matemáticas o
Informática. Supondremos que ambas son independientes aunque programaremos el
examen al mismo tiempo. Por ejemplo, se considerarán asignaturas diferentes Topologı́a de Espacios Métricos de 1o de Matemáticas y Topologı́a de Espacios Métricos de
1o de PES. Por otro lado, vemos que en 4o de Informática (y 5o de PES) hay cinco modalidades distintas para cursar según las preferencias de cada estudiante. Además, hay
asignaturas que están en varias especialidades, pero supondremos que son asignaturas
49
diferentes. Un ejemplo de esta situación serı́a la asignatura Interfaces de Usuario, que
está en las modalidades 3 y 5. De forma similar ocurre para el PES donde por ejemplo,
la asignatura Análisis Funcional está en todas las modalidades, por tanto tendremos
seis asignaturas distintas llamadas Análisis Funcional, una para Matemáticas y una
para cada modalidad del PES, aunque todas tendrán su examen el mismo dı́a.
Para manejar estos datos utilizaremos los conjuntos asigM = {1, ..., 43}, asigI =
{1, ..., 81} y asigP = {1, ..., 100}, que se refieren a las asignaturas de Matemáticas, Informática y PES, respectivamente. Además, necesitamos definir parámetros que para
cada asignatura nos diga el curso, el cuatrimestre, etc. ya que todo esto tendrá relevancia a la hora de organizar los exámenes. Lo hacemos para cada grado.
1. Matemáticas: para cada i ∈ asigM , se definen los parámetros:
nombreM (i) = nombre de la asignatura i,
cursoM (i) = curso donde se da la asignatura i,
cuatrM (i) = cuatrimestre en el que se da la asignatura i.
2. Informática: para cada i ∈ asigI, se definen los parámetros:
nombreI(i) = nombre de la asignatura i,
cursoI(i) = curso donde se da la asignatura i,
cuatrI(i) = cuatrimestre en el que se da la asignatura i,
modI(i) = modalidad donde se da la asignatura i.
Las asignaturas de 1o , 2o y 3o diremos que están en la modalidad 0.
3. PES: para cada i ∈ asigP , se definen los parámetros:
nombreP (i) = nombre de la asignatura i,
cursoP (i) = curso donde se da la asignatura i,
cuatrP (i) = cuatrimestre en el que se da la asignatura i,
modP (i) = modalidad donde se da la asignatura i,
(
1 si i está en Informática
carr(i) =
0 si i está en Matemáticas
Las asignaturas de 1o , 2o , 3o y 4o diremos que están en la modalidad 0.
Dos asignaturas que tengan el mismo nombre será porque son iguales, aunque estén en
titulaciones (o modalidades) distintas. De esta forma haremos coincidir los exámenes
de las asignaturas que tengan el mismo nombre.
Por otro lado, el calendario de exámenes de junio tuvo 19 dı́as disponibles y como
un examen se puede poner por la mañana o por la tarde, cada medio dı́a será un
turno. En total tenemos 35 turnos, dos por cada dı́a exceptuando los sábados que sólo
tienen el turno de mañana disponible. Esto nos lleva a definir un conjunto para los dı́as
D = {1, ..., 19} y otro para los turnos T = {1, ..., 35}. Para ver en qué dı́a está cada
turno definimos el parámetro:
50
dia(j) = dı́a donde está el turno j,
para cada j ∈ T. En la Figura 3.1 puede verse el calendario que acabamos de describir.
Figura 3.1: Perı́odo de exámenes. Convocatoria de junio. Curso 2014-2015.
Además, para saber cómo de cerca está un examen de otro necesitamos conocer
la distancia que hay entre dos turnos cualesquiera. Para eso definimos el siguiente
parámetro para cada j1 , j2 ∈ T:
dj1 ,j2 = número de medios dı́as en que se diferencian el turno j1 y el j2 .
Siempre que hablemos de distancia entre dos turnos nos referimos a este parámetro.
Observemos que dj1 ,j2 no tiene por qué ser |j2 −j1 |, pues puede ocurrir que entre los dos
turnos haya un dı́a festivo. Por ejemplo, entre el turno 1 y el 2 la distancia es d1,2 = 1,
mientras que entre el turno 24 y el 25, d24,25 = 3.
3.2.
Variables de decisión y restricciones
Con el problema definido formalmente podemos pasar a formular el modelo. Comenzamos definiendo las variables de decisión para cada grado, que servirán para saber
cuándo tiene lugar un examen.
Para Matemáticas:
(
1 si el examen de la asignatura i se hace en el turno j
xij =
0 en otro caso
para cada i ∈ asigM , j ∈ T.
51
Para Informática:
(
1 si el examen de la asignatura i se hace en el turno j
yij =
0 en otro caso
para cada i ∈ asigI, j ∈ T.
Para PES:
(
1 si el examen de la asignatura i se hace en el turno j
xyij =
0 en otro caso
para cada i ∈ asigP , j ∈ T.
En lo que sigue vamos a definir las primeras restricciones a las que están sujetas estas
variables. Todas ellas son necesarias para darle sentido al problema, pero no tienen
como objetivo separar los exámenes; de eso nos ocuparemos más adelante.
1. Para que las variables sean binarias usamos:
xij ∈ {0, 1},
∀i ∈ asigM, ∀j ∈ T,
yij ∈ {0, 1},
∀i ∈ asigI, ∀j ∈ T,
xyij ∈ {0, 1},
∀i ∈ asigP, ∀j ∈ T.
2. Cada asignatura del PES coincide con una de Matemáticas o de Informática, por
lo que esta asignatura y su correspondiente tendrán el examen en el mismo turno.
Para eso utilizamos las siguientes restricciones ∀i ∈ asigP, ∀j ∈ T:
xyij = xkj ,
∀k ∈ asigM / nombreP (i) = nombreM (k),
xyij = ykj ,
∀k ∈ asigI / nombreP (i) = nombreI(k).
Recuérdese que dos asignaturas con el mismo nombre son iguales.
3. Para las asignaturas de 4o de Informática, algunas coinciden estando en modalidades diferentes, por tanto, su examen será conjunto. Esto se consigue con la
restricción:
yij = ykj ,
∀i, k ∈ asigI / nombreI(i) = nombreI(k),
cursoI(i) = curso(k) = 4.
Nótese que aunque en 5o de PES también hay asignaturas de diferente modalidad
que coinciden, no hace falta añadir ninguna restricción, pues con 2 y 3 ya quedan
emparejadas.
4. Cada asignatura tiene su examen programado para un único turno. Por ello añadimos:
P
xij = 1, ∀i ∈ asigM ,
j∈T
52
P
yij = 1,
∀i ∈ asigI,
j∈T
P
xyij = 1,
∀i ∈ asigP .
j∈T
En lo que sigue vamos a modelizar el problema en dos etapas. En cada una añadiremos más restricciones, que harán referencia a la distancia entre los exámenes y definiremos nuevas variables de decisión, que irán a la función objetivo. En la primera
etapa vamos a ver cuánto se pueden separar, como máximo, los exámenes de cada curso. Posteriormente, partiendo de la solución del primer modelo, en la segunda etapa
nos centraremos en maximizar la distancia entre los exámenes del 2o cuatrimestre (del
mismo curso), que son los que más nos interesan puesto que estamos en la convocatoria
de junio.
3.2.1.
Etapa 1: Separar los exámenes del mismo curso
En este primer modelo, además de las restricciones 1, 2, 3 y 4, exigiremos que en
un dı́a haya, como mucho, un examen de las asignaturas que están en el mismo curso.
Las restricciones serı́an las siguientes.
Para Matemáticas:
X
X
xij ≤ 1,
∀d ∈ D, ∀c ∈ {1, ..., 4}.
i∈asigM/
j∈T/
cursoM (i)=c dia(j)=d
Para Informática:
X
X
yij ≤ 1,
∀d ∈ D, ∀c ∈ {1, ..., 4}, ∀m ∈ {0, ..., 5}.
i∈asigI/
j∈T/
cursoI(i)=c, dia(j)=d
modI(i)=m
Para PES:
X
X
xyij ≤ 1,
∀d ∈ D, ∀c ∈ {1, ..., 5}, ∀m ∈ {0, ..., 5}.
i∈asigP/
j∈T/
cursoP (i)=c, dia(j)=d
modP (i)=m
Obsérvese que para Informática y PES distinguimos por modalidades, ya que cada
estudiante tendrá sólo exámenes de las asignaturas de la especialidad que haya elegido. Por tanto, no importa si se programan el mismo dı́a asignaturas de modalidades
diferentes.
Con la función objetivo vamos a maximizar la distancia mı́nima entre los exámenes
del mismo curso. Para eso definimos una nueva variable de decisión como
z = distancia mı́nima entre los exámenes del mismo curso.
Recuérdese que la distancia entre dos exámenes programados uno en el turno j1 ∈ T
y otro en j2 ∈ T es dj1 ,j2 .
A continuación damos las restricciones relacionadas con esta variable.
53
Como la distancia es un valor entero, z también lo será, aunque no es necesario
añadir z ∈ Z+ a nuestro modelo ya que con las restricciones que le vamos a
imponer z sólo podrá tomar valores enteros en el óptimo.
En lo que sigue distinguimos por carreras y cursos.
Para el grado en Matemáticas, sean i1 , i2 ∈ asigM tales que cursoM (i1 ) = cursoM (i2 )
y j1 , j2 ∈ T, pueden ocurrir tres circunstancias:
1. xi1 j1 = xi2 j2 = 1, es decir, el examen de ik se hace en el turno jk para k = 1, 2.
En este caso tendremos: z ≤ dj1 ,j2 .
2. xi1 j1 = 1, xi2 j2 = 0, o viceversa, lo cual quiere decir que i1 hace el examen en j1 ,
pero i2 no lo tiene en el turno j2 .
3. xi1 j1 = xi2 j2 = 0, es decir, ninguna de las dos asignaturas tiene los exámenes en
esos turnos.
En los casos 2. y 3. la distancia mı́nima no queda condicionada por estos exámenes, por lo que basta tomar z ≤ M , siendo M suficientemente grande.
Para que esto se cumpla utilizamos la siguiente restricción lineal
z ≤ M − (M − dj1 ,j2 )(xi1 j1 + xi2 j2 − 1),
(3.1)
con lo que se verifica para cada uno de los tres casos:
1. Si xi1 j1 = xi2 j2 = 1, entonces z ≤ dj1 ,j2 .
2. Si xi1 j1 = 1, xi2 j2 = 0, o al revés, tenemos z ≤ M .
3. Si xi1 j1 = xi2 j2 = 0, entonces z ≤ 2M − dj1 ,j2 .
Nuestro problema ahora es determinar M de manera que sea lo suficientemente grande,
pero pequeño en la medida de lo posible. Esto se hace para que las restricciones sean
ajustadas, lo que hace al modelo ser más eficiente. En lo que sigue distinguiremos por
cursos.
En 1o , 2o y 3o hay diez asignaturas y la distancia entre el primer turno y el último es
d1,35 = 45. Por tanto, la distancia mı́nima entre los exámenes de uno de estos cursos
va a ser, a lo sumo, 4 (cociente de la división 45:10). Es decir, z ≤ 4.
Por consiguiente, la restricción (3.1) sólo es relevante cuando dj1 ,j2 ≤ 4, pues en caso
contrario esa no será la distancia mı́nima.
(
M ≥4
Esto nos lleva a tomar M de manera que
para que en los
2M − dj1 ,j2 ≥ 4
casos 2 y 3 no se restrinja z. Definiendo M = 4, como vamos a considerar sólo los
turnos j1 , j2 tales que dj1 ,j2 ≤ 4 se consigue lo que queremos.
Por otro lado en el cuarto curso de Matemáticas tenemos trece asignaturas a las que
debemos asignarle un turno para examen. Aunque la mayoria son optativas y se podrı́an
54
agrupar, en este modelo les asignaremos un turno distinto a cada examen. Por tanto, la
distancia mı́nima entre los exámenes de este curso será, como máximo, 3 (cociente de
dividir 45 entre 13). Por consiguiente, en este caso la restricción (3.1) sólo se tendrá en
cuenta cuando dj1 ,j2 ≤ 3 y tendremos una M grande distinta, que será 3.
Después de este razonamiento, podemos dar las restricciones para z que hacen referencia
al grado de Matemáticas.
∀c ∈ {1, ..., 3}, ∀i1 , i2 ∈ asigM/ cursoM (i1 ) = cursoM (i2 ) = c,
∀j1 , j2 ∈ T/ dj1 ,j2 ≤ 4,
z ≤ 4 − (4 − dj1 ,j2 )(xi1 j1 + xi2 j2 − 1).
(3.2)
∀i1 , i2 ∈ asigM/ cursoM (i1 ) = cursoM (i2 ) = 4, ∀j1 , j2 ∈ T/ dj1 ,j2 ≤ 3,
z ≤ 3 − (3 − dj1 ,j2 )(xi1 j1 + xi2 j2 − 1).
(3.3)
Para Informática podemos hacer un razonamiento análogo. En los tres primeros cursos
hay diez asignaturas y en el caso de cuarto, todas las modalidades tienen también
diez (incluyendo las opciones de optativas). Esto implica que la distancia mı́nima entre
exámenes de un mismo curso será, a lo sumo, 4 (cociente de la división 45:10) y por
tanto, las restricciones serán las siguientes:
∀c ∈ {1, ..., 4}, ∀m ∈ {0, ..., 5},
∀i1 , i2 ∈ asigI/ cursoI(i1 ) = cursoI(i2 ) = c, modI(i1 ) = modI(i2 ) = m,
∀j1 , j2 ∈ T/ dj1 ,j2 ≤ 4,
z ≤ 4 − (4 − dj1 ,j2 )(yi1 j1 + yi2 j2 − 1).
(3.4)
Por último veamos que pasa con el PES. Este grado tiene más asignaturas por curso,
por lo que sus exámenes quedarán más próximos. En 1o , 2o , 3o y 4o tienen doce o trece
asignaturas, dependiendo el curso, por lo que la distancia mı́nima entre los exámenes de
un curso será, como máximo, 3. Sin embargo, en el quinto curso tienen once asignaturas,
lo cual permite que la distancia mı́nima sea, a lo más, 4. Con estas observaciones damos
las restricciones para este grado.
∀c ∈ {1, ..., 4}, ∀i1 , i2 ∈ asigP/ cursoP (i1 ) = cursoP (i2 ) = c,
∀j1 , j2 ∈ T/ dj1 ,j2 ≤ 3,
z ≤ 3 − (3 − dj1 ,j2 )(xyi1 j1 + xyi2 j2 − 1).
(3.5)
∀m ∈ {1, ..., 5},
∀i1 , i2 ∈ asigP/ cursoP (i1 ) = cursoP (i2 ) = 5, modP (i1 ) = modP (i2 ) = m,
∀j1 , j2 ∈ T/ dj1 ,j2 ≤ 4,
z ≤ 4 − (4 − dj1 ,j2 )(xyi1 j1 + xyi2 j2 − 1).
55
(3.6)
La función objetivo se usará para maximizar la distancia mı́nima que hemos descrito,
por tanto, el objetivo es
máx z.
Implementando el modelo en un software de optimización y resolviéndolo nos va a dar
un valor para la variable z, que significará que dos exámenes cualesquiera de un mismo
curso estarán, al menos, a distancia z. Sabiendo este valor podemos pasar a la siguiente
etapa, donde se pretende separar en la medida de lo posible los exámenes del segundo
cuatrimestre.
3.2.2.
Etapa 2: Separar los exámenes del segundo cuatrimestre
En esta etapa mantenemos las restricciones iniciales dadas, es decir, 1, 2, 3 y 4.
Además, en la primera fase hemos visto que los exámenes se pueden organizar de
manera que estén a distancia al menos z si están en el mismo curso. Por tanto, tomamos
z como parámetro en este modelo e imponemos esta condición como una restricción,
ya que esto no va a afectar a la factibilidad del problema.
La restricción serı́a que en turnos que están a distancia menor que z puede haber,
como mucho, un examen de entre las asignaturas del mismo curso, y se formuları́a
como sigue:
Para Matemáticas:
X
i∈asigM/
cursoM (i)=c
Para Infomática:
X
X
X
xij 0 ≤ 1,
∀c ∈ {1, ..., 4}, ∀j ∈ T.
(3.7)
j 0 ∈T/
j 0 ≥j,
dj 0 ,j <z
yij 0 ≤ 1,
∀c ∈ {1, ..., 4}, ∀m ∈ {0, ..., 5}, ∀j ∈ T.
(3.8)
i∈asigI/
j 0 ∈T/
cursoI(i)=c, j 0 ≥j,
modI(i)=m dj 0 ,j <z
Para PES:
X
X
xyij 0 ≤ 1,
∀c ∈ {1, ..., 5}, ∀m ∈ {0, ..., 5}, ∀j ∈ T.
(3.9)
j 0 ∈T/
i∈asigP/
cursoP (i)=c, j 0 ≥j,
modP (i)=m dj 0 ,j <z
A continuación nos vamos a centrar en separar los exámenes del mismo curso en el
segundo cuatrimestre siguiendo una formulación similar a la de la primera etapa. Aunque esta vez, en lugar de usar una sola variable de decisión para el objetivo utilizaremos
varias, donde cada una hará referencia a unos cursos concretos. Esta distinción se hace
porque, por ejemplo, un alumno de PES tiene más asignaturas por cuatrimestre, por
56
lo que sus exámenes se podrán separar menos que los de un estudiante que sólo haga
Informática o Matemáticas.
La primera variable que definimos es
z2 = distancia mı́nima entre exámenes del mismo curso del 2o cuatrimestre,
que se utilizará para los cursos 1o , 2o y 3o de Matemáticas y 1o , 2o y 3o de Infomática.
Para el último curso de Informática, puesto que hay modalidades usaremos una variable
distinta, que será
zmodI = distancia mı́nima entre exámenes del mismo curso y de la misma modalidad
del 2o cuatrimestre.
Para el último curso de Matemáticas no impondremos ninguna condición para las
asignaturas del segundo cuatrimestre, ya que todas son optativas y la mayorı́a se pueden
aprobar por evaluación continua. Además, ya hemos garantizado una distancia mı́nima
con las restricciones del parámetro z.
Por otro lado, para 1o , 2o , 3o y 4o del PES tenemos la variable
zpes = distancia mı́nima entre exámenes del mismo curso del 2o cuatrimestre,
y para 5o de PES, donde tenemos modalidades, utilizaremos otra variable de decisión
que será
zmodP = distancia mı́nima entre exámenes del mismo curso y de la misma modalidad
del 2o cuatrimestre.
Veamos las restricciones que hacen referencia a estas variables. En el segundo cuatrimestre de los cursos en los que interviene z2 hay cinco asignaturas. Como además,
sabemos que la distancia entre el primer y el último turno es 45 (d1,35 = 45) podemos
concluir que z2 a lo sumo vale 9 (cociente de dividir 45 entre 5).
Supongamos que dos asignaturas i1 , i2 de Matemáticas del segundo cuatrimestre del
mismo curso tienen el examen programado en los turnos j1 y j2 , respectivamente; esto
es, xi1 j1 = xi2 j2 = 1, entonces se deberá cumplir z2 ≤ dj1 ,j2 . Y dado que z2 ≤ 9, nos
basta considerar lo anterior sólo para los turnos que están a distancia menor o igual
que 9, pues en caso contrario, no será la distancia mı́nima.
Por otro lado, si para esas dos asignaturas y turnos, xi1 j1 = 1, xi2 j2 = 0, o viceversa, o si
ambas variables valen cero, lo cual quiere decir que al menos uno de los dos exámenes no
se hace en esos turnos, entonces z2 estará acotado por una M suficientemente grande.
Hacemos que se cumpla todo esto con la siguiente restricción lineal:
z2 ≤ M − (M − dj1 ,j2 )(xi1 j1 + xi2 j2 − 1),
tomando M = 9.
Definimos formalmente estas restricciones:
∀c ∈ {1, ..., 3},
∀i1 , i2 ∈ asigM/ cursoM (i1 ) = cursoM (i2 ) = c, cuatrM (i1 ) = cuatrM (i2 ) = 2,
57
∀j1 , j2 ∈ T/ dj1 ,j2 ≤ 9,
z2 ≤ 9 − (9 − dj1 ,j2 )(xi1 j1 + xi2 j2 − 1).
(3.10)
∀c ∈ {1, ..., 3},
∀i1 , i2 ∈ asigI/ cursoI(i1 ) = cursoI(i2 ) = c, cuatrI(i1 ) = cuatrI(i2 ) = 2,
∀j1 , j2 ∈ T/ dj1 ,j2 ≤ 9,
z2 ≤ 9 − (9 − dj1 ,j2 )(yi1 j1 + yi2 j2 − 1).
(3.11)
Continuamos viendo las restricciones para el último curso de Informática, donde la
organización de los exámenes se hace por modalidades. Aquı́ hay cuatro asignaturas
distintas, por lo que la distancia mı́nima entre exámenes será, a lo sumo, 11 (cociente
de dividir 45 entre 4). Por tanto, siguiendo el argumento anterior, las restricciones serán
∀m ∈ {1, ..., 5},
∀i1 , i2 ∈ asigI/ cursoI(i1 ) = cursoI(i2 ) = 4, modI(i1 ) = modI(i2 ) = m, cuatrI(i1 ) =
cuatrI(i2 ) = 2,
∀j1 , j2 ∈ T/ dj1 ,j2 ≤ 9,
zmodI ≤ 11 − (11 − dj1 ,j2 )(yi1 j1 + yi2 j2 − 1).
(3.12)
Veamos ahora qué ocurre para el PES. Las restricciones para los cuatro primeros cursos, es decir, para la variable zpes serán análogas a las anteriores, con la diferencia de
que los alumnos tienen seis o siete asignaturas cada cuatrimestre, por tanto, la distancia mı́nima estará acotada superiormente por 6 (suponiendo que siempre son siete
asignaturas). Por consiguiente, las restricciones quedarán como sigue:
∀c ∈ {1, ..., 4},
∀i1 , i2 ∈ asigP/ cursoP (i1 ) = cursoP (i2 ) = c, cuatrP (i1 ) = cuatrP (i2 ) = 2,
∀j1 , j2 ∈ T/ dj1 ,j2 ≤ 6,
zpes ≤ 6 − (6 − dj1 ,j2 )(xyi1 j1 + xyi2 j2 − 1).
(3.13)
Por último, para en el quinto curso del PES tenemos tres exámenes, por tanto, la
distancia mı́nima entre exámenes de la misma modalidad puede llegar a ser 15, con lo
que las restricciones son
∀m ∈ {1, ..., 5},
∀i1 , i2 ∈ asigP/ cursoP (i1 ) = cursoP (i2 ) = 5, cuatrP (i1 ) = cuatrP (i2 ) =
2, modP (i1 ) = modP (i2 ) = m,
∀j1 , j2 ∈ T/ dj1 ,j2 ≤ 15,
zmodP ≤ 15 − (15 − dj1 ,j2 )(xyi1 j1 + xyi2 j2 − 1).
(3.14)
En el Cuadro 3.1 tenemos un resumen de los cursos que abarca cada variable y sus
cotas superiores.
58
Variable
z2
zmodI
zpes
zmodP
Cursos
1o ,2o ,3o Matemáticas, 1o ,2o ,3o Informática
4o de Informática
1o ,2o ,3o ,4o de PES
5o de PES
No de asig.
5
4
6/7
3
Cota superior
9
11
6
15
Cuadro 3.1: Variables de decisión.
Con estas restricciones tendrı́amos el modelo formulado a falta de determinar la
función objetivo, aunque al llevarlo a la práctica hemos tenido problemas con la simetrı́a de algunas variables. Esto se debe a que en ocasiones dos exámenes que son
del mismo curso y del mismo cuatrimestre son indistinguibles en el sentido de que se
puede intercambiar la fecha en la que están programados. Por ejemplo, ocurre para las
asignaturas de Funciones de variable real II, Geometrı́a Afı́n y Euclidea y Topologı́a de
Espacios Métricos, pues las tres se dan en el primer cuatrimestre de primero de PES
y de Matemáticas, por lo que sus exámenes son intercambiables. Como consecuencia,
al ejecutar el programa en el ordenador esto ha dificultado la obtención de la solución
óptima, lo que nos ha supuesto tener que añadir alguna restricción más.
Para solucionar el problema vamos a hacer grupos de asignaturas que sean indistinguibles y dentro de cada uno asignaremos un orden a la hora de organizarse los exámenes.
Para quitar la simetrı́a será suficiente hacer grupos para las asignaturas que están en
el PES y para cuarto de Matemáticas, donde hay multitud de optativas. Recogemos
en la Figura 3.2 la composición en grupos.
Para poder formular las restricciones necesitamos añadir algunos parámetros. Como
las asignaturas del PES están igualadas a las de Matemáticas o Informática, basta hacer
los grupos para asigM y asigI. Se define el grupo de cada asignatura con el siguiente
parámetro.
grupoM (i) = grupo al que pertenece la asignatura i,
para cada i ∈ asigM . Observemos que en la tabla tenemos 9 grupos. Además, a las
asignaturas de cuarto del primer y segundo cuatrimestre que no están en el PES les
asignaremos los grupos 10 y 11, respectivamente, y al resto que no están en el PES les
asignaremos el grupo 0.
Por otro lado, para cada asignatura de Informática se define su grupo con el parámetro
grupoI(i) = grupo al que pertenece la asignatura i,
para cada i ∈ asigI. A las asignaturas que no están en el PES les asignaremos el grupo
0. Observemos en la Figura 3.2 que hay 19 grupos, ya que en cuarto tenemos dos grupos
para cada modalidad (uno para cada cuatrimestre).
Una vez que tenemos los grupos hacemos que cuando un examen de una asignatura i
se fija en un turno, los exámenes de asignaturas que sean indistinguibles con i vayan
en los turnos posteriores. Estas restricciones se definen formalmente como sigue.
59
Figura 3.2: Asignación de grupos.
60
Para exámenes de asignaturas de Matemáticas:
∀j ∈ T, ∀g ∈ {1, ..., 11}, ∀i ∈ asigM/ grupoM (i) = g
35
X
xij ≤
xi ∗ j ∗ ,
(3.15)
j∗ =j+1
∀i∗ ∈ asigM/ i∗ ≥ i + 1, grupoM (i∗ ) = g.
Para exámenes de asignaturas de Informática:
∀j ∈ T, ∀g ∈ {1, ..., 18}, ∀i ∈ asigI/ grupoI(i) = g
35
X
yij ≤
y i∗ j∗ ,
(3.16)
j∗ =j+1
∀i∗ ∈ asigI/ i∗ ≥ i + 1, grupoI(i∗ ) = g.
Estas son todas las restricciones que engloba la etapa 2 del problema. Por último, el
objetivo vendrá dado por
máx z2 + zmodI + zpes + zmodP .
Nótese que todas las variables en la función objetivo tienen coeficiente 1, lo cual quiere
decir que le damos la misma importancia a cualquier curso y grado a la hora de separar sus exámenes. Ahora sı́ tenemos la formulación del modelo completa y lista para
implementarla en el ordenador.
3.3.
Resultados
En esta sección nos ocupamos de describir cómo queda el calendario de exámenes
según nuestro modelo, que ha sido resuelto con el programa Xpress.
En la primera etapa no es relevante cómo hayan quedado organizados los exámenes,
pero sı́ el valor para la variable z, que significaba la distancia mı́nima entre los exámenes
de un curso. La solución que nos ha dado el modelo es z = 3, es decir, dos exámenes del
mismo curso van a estar al menos a distancia 3. Esto se traduce en que si un examen
se hace una mañana, al menos hasta el dı́a siguiente por la tarde no habrá otro examen
que sea del mismo curso. Análogamente, si un examen se hace por la tarde el siguiente
será, como pronto, dos dı́as después por la mañana.
La segunda etapa es la que nos dice cuándo se realizará cada examen, pero antes de
ver cómo quedan observemos el resultado para las variables de decisión z2 , zpes , zmodI
y zmodP que es el siguiente.
z2 =
zmodI =
zpes =
zmodP =
61
9
11
6
15
El valor de cada una de estas z’s nos dice la distancia mı́nima entre los exámenes de
cada curso a los que hace referencia. Además, en la sección anterior veı́amos una cota
superior para cada una de ellas, dependiendo del número de asignaturas que habı́a en
el segundo cuatrimestre (véase el Cuadro 3.1).
Observamos que todas las cotas superiores se alcanzan, lo cual quiere decir que los
exámenes se organizan de manera que están separados todo lo posible y que no habrı́a
otra forma de espaciarlos más. Por ejemplo, para 2o de Matemáticas (variable z2 ), como
hay cinco asignaturas la distancia mı́nima entre los exámenes del segundo cuatrimestre
va a ser, a lo sumo, 9. Pues con esta formulación conseguimos que dos exámenes
cualesquiera estén al menos a distancia 9.
Por último, con la solución que nos da el modelo el calendario de exámenes de cada
titulación quedarı́a como se muestra en las siguientes páginas.
62
63
64
65
3.4.
Conclusiones
Finalizamos este capı́tulo haciendo algunas consideraciones acerca del calendario
resultante. En primer lugar, la solución que nos ofrece el modelo es correcta, es decir,
se verifican todas las condiciones que querı́amos: sólo un examen al dı́a de asignaturas
que están en el mismo curso, dos titulaciones (o modalidades) que tienen una misma
asignatura hacen el examen en el mismo turno, etc.
Además, nuestro modelo está formulado de manera que se pueda aplicar a cualquier
otra convocatoria, ya sea del curso 2014-2015 o de otros posteriores. Para ello, basta
adaptar el modelo al número de dı́as y turnos disponibles y priorizar en la etapa 2 la
separación de los exámenes que estén en el cuatrimestre que nos interese.
En referencia a la eficiencia del modelo siempre es importante que la formulación
tenga restricciones ajustadas, lo que hemos conseguido a través de las M ’s grandes,
que se han tomado lo más pequeñas posibles para cada curso/cuatrimestre. Otro hecho
importante es romper la simetrı́a de las variables debido a que el programa usa el
método de ramificación y acotación para resolver el problema. Esto lo hemos llevado a
cabo haciendo los grupos de asignaturas indistinguibles y fijando un orden para poner
el examen de éstas, lo cual hace que esas variables ya no sean iguales para el modelo.
Por tanto, podemos afirmar que hemos formulado un modelo acertado.
Por otro lado, en comparación con el calendario hecho por las facultades de Informática y de Matemáticas para esa convocatoria, que puede verse en [11] y [12],
conseguimos que para todos los cursos haya al menos 36 horas entre dos exámenes.
Esto es algo que no se verifica en el calendario actual, en el que en muchas ocasiones
sólo hay 24 horas, por ejemplo como ocurre con Cálculo Numérico en Una Variable y
Topologı́a de Superficies en el segundo curso. Esto es una ventaja para un alumno que
tenga alguna asignatura pendiente del primer cuatrimestre, pues con nuestro modelo
sus exámenes no quedarán tan próximos. Por otra parte, los exámenes que son del
segundo cuatrimestre quedan más espaciados con nuestro modelo. Esto es un hecho
que perjudica principalmente al PES que, por ejemplo, para esta convocatoria tiene
Geometrı́a Afı́n y Euclı́dea y Fundamentos Fı́sicos de la Informática, los dı́as 10 y 11
de junio, siendo ambas del segundo cuatrimestre del primer curso. El motivo de que
nuestro modelo pueda separar más los exámenes es que se organizan de forma conjunta,
independientemente de que si son de una carrera o de otra.
Por último, los calendarios mostrados en las páginas anteriores no son los únicos
posibles. Se pueden organizar de distintas formas cumpliéndose las mismas condiciones.
Esto se debe a las asignaturas que definı́amos como indistinguibles. Los exámenes de las
asignaturas que están en el mismo grupo (véase la Figura 3.2) se pueden intercambiar
sin que ello perjudique a ningún estudiante, lo cual nos genera distintas posibilidades
para establecer el calendario.
Otra forma en la que se podrı́a haber planteado el modelo es considerando, en vez
de que cada variable representara una asignatura, que hiciera referencia a un grupo de
asignaturas y se decidiera para cada turno un grupo para hacer un examen. Cada grupo
tendrı́a asignados tantos turnos como asignaturas lo compusieran. De esta manera
habrı́amos evitado la simetrı́a, aunque el resultado serı́a el mismo.
66
Apéndice A
Planes de estudios de Matemáticas,
Informática y PES
67
68
69
Bibliografı́a
[1] Prof. Alfredo Marı́n, Apuntes de Grafos y Optimización Discreta, Curso 2012-2013.
[2] Natashia Boland, Barry D. Hughes, Liam T.G. Merlot, New Integer Linear Programming Approaches for Course Timetabling, Computers & Operations Research,
Volume 35, Issue 7, July 2008, Pages 2209-2233.
[3] Reinhard Diestel, Graph Theory, segunda ed., Springer-Verlag New York, 2000.
[4] Blas Pelegrı́n, Lázaro Cánovas, Pascual Fernández, Algoritmos en Grafos y Redes,
primera ed., PPU, 1992.
[5] R. Fernández Lechón, C. Castrodeza, Programación Lineal, Ariel Economı́a, 1989.
[6] Hall’s marriage theorem. Application to marriage.
https://en.wikipedia.org/wiki/Hall%27s_marriage_theorem#Application_
to_marriage
[7] Mokhtar S. Bazaraa, John J. Jarvis, Programación Lineal y Flujo en Redes, Primera
ed., Limusa, 1981.
[8] Plan de estudios del Grado en Matemáticas.
http://www.um.es/web/matematicas/contenido/estudios/grados/
matematicas/plan/asignaturas
[9] Plan de estudios del Programa de Estudios Simultáneos en Matemáticas e
Informática (PES).
http://www.um.es/web/matematicas/contenido/estudios/grados/pes/plan/
asignaturas
[10] Plan de estudios del Grado en Informática.
http://www.um.es/informatica/index.php?pagina=grado_ii_2011_-_plan_
de_estudios
[11] Calendario de Exámenes de la facultad de Matemáticas. Junio 2015.
http://www.um.es/documents/118351/128295/Exam+GM+Junio+2015+
Definitivo.pdf/b7305756-9961-451f-a726-bf58343fce47
[12] Calendario de Exámenes de la facultad de Informática. Junio 2015.
https://www.um.es/informatica/index.php?pagina=
planificacion&seccion_plan=examenes
70
Descargar