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