Sei sulla pagina 1di 13

PROYECTO FIN DE CARRERA Asignacin de Aulas de Clase en la Escuela Superior de Ingenieros

4. ALGORITMO DE RESOLUCIN.
Este captulo trata acerca de la solucin propuesta para la resolucin del problema de la asignacin de aulas con especial atencin en el algoritmo de flujo con costo mnimo. A continuacin se describe como es el diseo de los grafos necesarios para la resolucin. Por ltimo se detalla la implementacin de nuestra programacin en Matlab.

4.1. ALGORTIMO DE FLUJO CON COSTO MNIMO.


La implementacin desarrollada en Matlab se basa fundamentalmente en la aplicacin del algoritmo de flujo con costo mnimo por lo que en este captulo vamos a describir como es el modelo matemtico de dicho algoritmo. Considrese una red compuesta por n nodos, a los que se asocia un valor k i que indica el nivel ofertado o demandado por el nodo i . Si k i > 0 , existe una oferta en el nodo i denominndose fuente u origen; si k i < 0 , existe una demanda en el nodo i denotndose por sumidero o destino; si k i = 0 , el nodo i se denomina intermedio o de transbordo.
Javier Nasarre Lorite. 38

PROYECTO FIN DE CARRERA Asignacin de Aulas de Clase en la Escuela Superior de Ingenieros

A cada arco (i, j ) se asociar una variable xij 0 que representa el flujo que circula por l, as como un costo unitario de transporte cij . As mismo el flujo que circula por los arcos se encontrar limitado inferior y superiormente, definiendo por lij y u ij estos lmites respectivamente. Para todo nodo de esta red, las leyes de conservacin del flujo de Kirchhoff deben verificarse, es decir, en todo nodo el flujo que sale es igual al que entra ms el producido menos el consumido. La funcin objetivo del problema perseguir la minimizacin del costo total de la red. As, la formulacin matemtica del problema del flujo con costo mnimo queda como:

Minimizar s.a.

c
i =1 j =1 kD ( j )

ij

xij

jk

i A ( j )

ij

= k j j = 1,2,..., n

l ij xij u ij i, j = 1,2,..., n

Donde el flujo xij en el arco genrico (i, j ) se encuentra acotado superior e inferiormente. Puede obtenerse una red equivalente, en la que los flujos xij no se encuentren acotados inferiormente, realizando el cambio de variable y ij = xij l ij ; para esta nueva red, el modelo matemtico quedar definido por:

Javier Nasarre Lorite.

39

PROYECTO FIN DE CARRERA Asignacin de Aulas de Clase en la Escuela Superior de Ingenieros

Minimizar s.a.

c
i =1 j =1 kD j

ij

y ij + cij l ij
i =1 j =1 ij

y ( )

jk

i A j

y ( )

= k 'j j = 1,2,..., n

' 0 y ij u ij i, j = 1,2,..., n

' donde u ij = u ij l ij , k 'j = k j l l jk ij k D ( j ) i A ( j )

Con lo que la formulacin matemtica del problema de flujo con costo mnimo en una red vendr definida por el modelo:
n n

Minimizar s.a.

c
i =1 j =1 kD j

ij

xij

x ( )

jk

i A j

x ( )

ij

= k 'j j = 1,2,..., n

0 xij u ij i, j = 1,2,..., n Introduciendo un nodo artificial de salida s conectado, por arcos (s, j ) , a todos los nodos orgenes (k j > 0) y otro nodo artificial de entrada e conectado, por arcos ( j , e ) , a todos los nodos destinos (k j < 0 ) , la formulacin anterior quedar definitivamente como:
n n

Minimizar s.a.

c
i =1 j =1 kD ( s )

ij

xij a
i A ( j )

sk

kD ( j )

jk

ij

= 0 j = 1,2,..., n

i A (e )

ie

= b

0 xij u ij i, j = s,1,2,..., n, e

Javier Nasarre Lorite.

40

PROYECTO FIN DE CARRERA Asignacin de Aulas de Clase en la Escuela Superior de Ingenieros

donde a = j k j k j > 0 representa la suma de las ofertas de todos los nodos

orgenes y b = j k j k j < 0 la suma de las demandas de todos los nodos destinos.

4.2. DISEO DE GRAFOS.


Una vez explicado el modelo matemtico del algoritmo de flujo con costo mnimo el siguiente paso es el diseo de nuestro grafo dirigido sobre el que se aplicar dicho algoritmo. En nuestro caso vamos a calcular el camino a coste mnimo del flujo de entrada, el cual va a ser dato y que representar el nmero de mquinas n que hay del tipo i . Para nuestro caso el grafo con el que vamos a trabajar es un grafo dirigido G (N , A) y ordenado cronolgicamente en el que: Existe un nodo n por cada instante de tiempo en el que comienza o finaliza algn trabajo. Para la realizacin la implementacin hemos discretizado los tiempos de manera que cada unidad corresponde a 15 minutos, de manera que nos acoplamos al modelo de horarios de la Escuela. Existen 2 tipos de arcos:
o Tipo I: ordenando cronolgicamente los nodos va a existir un arco

desde cada nodo i al nodo siguiente i + 1 . En este tipo de arcos la capacidad k ij vale infinito y el coste cij = 0 .

i 0,8

i+1

Figura 4-1. Arco tipo I.

Javier Nasarre Lorite.

41

PROYECTO FIN DE CARRERA Asignacin de Aulas de Clase en la Escuela Superior de Ingenieros

o Tipo II: existe un arco por cada trabajo, con nodo origen el nodo que

representa el instante de inicio del trabajo y nodo destino el correspondiente al instante de finalizacin del trabajo. En este tipo de arcos la capacidad vale k ij = 1 ya que cada trabajo solo lo puede realizar una mquina, y el coste cij = Wi , de manera que se intenten realizar el mayor nmero de trabajos posibles para minimizar la funcin objetivo.
1 5

J6 (-2,1)

Figura 4-2. Arco tipo II.

Una vez definidos los arcos pasamos a describir el significado y la forma de calcular los pesos para nuestro caso de la asignacin de aulas. Estos pesos o costes asociados a cada arco de nuestro grafo son las variables que hace que se prioricen unos trabajos frente a otros. De esta manera lo que se busca es que las aulas ms grandes no realicen trabajos correspondientes a asignaturas con un nmero de alumnos matriculados bajo, es decir se trata de que las aulas ms grandes alberguen a las asignaturas con mayor nmero de alumnos matriculados. Las caractersticas de dichos costes se pueden resumir mencionando los siguientes aspectos: Primero se asigna a cada asignatura la primera aula que es capaz de albergarla, es decir a cada trabajo le asignamos el aula con menos capacidad que admite dicho trabajo. Posteriormente se calcular el peso asociado a cada una de las aulas y de esta manera el

Javier Nasarre Lorite.

42

PROYECTO FIN DE CARRERA Asignacin de Aulas de Clase en la Escuela Superior de Ingenieros

coste de cada arco vendr dado por el peso calculado para el aula con menos capacidad que admite el trabajo. Los costes sern mayores cuantos ms alumnos matriculados haya en cada asignatura. Esto hace que en el algoritmo de flujo con costo mnimo se le de prioridad a los arcos con un mayor coste en valor absoluto. De esta manera al introducir en primer lugar las aulas de mayor tamao como flujo del grafo conseguimos darle prioridad a los arcos asociados a las asignaturas con mayor nmero de alumnos matriculados dada la estructura de la funcin objetivo de nuestro modelo que intenta minimizar el coste. Para la asignacin numrica de los pesos seguiremos el siguiente criterio: ni M i < M i +1 dnde: M i : es el peso para las aulas tipo i . Las aulas estn ordenadas de manera que la mayor es i = 15 y la menor i = 1 . ni : es el nmero de trabajos que hay de la clase i en el da bajo estudio. Con esta restriccin conseguimos que el algoritmo obtenga un mejor resultado de la funcin objetivo con la realizacin de un solo trabajo i + 1 que con todos los trabajos i que se pueden realizar el mismo da. As, por ejemplo, los pesos asociados a cada tipo de aula para el da del lunes son los mostrados en la siguiente tabla:

Javier Nasarre Lorite.

43

PROYECTO FIN DE CARRERA Asignacin de Aulas de Clase en la Escuela Superior de Ingenieros

Tipo de Aula M1 M2 M3 M4 M5 M6 M7 M8 M9 M10 M11 M12 M13 M14 M15

Peso asociado 1 10 11 12 49 99 100 100 100 101 102 102 817 6537 6538

Tabla 6. Pesos asignados a cada tipo de aula.

Una vez obtenidos estos pesos de cada tipo de aula asignaremos a cada arco el coste correspondiente como explicamos anteriormente. A modo de ejemplo de la formacin del grafo podemos observar el siguiente caso:

J4 (1)

J3 (5)

J1 (3)

J2 (2)

Figura 4-3. Diagrama de Gantt.

Javier Nasarre Lorite.

44

PROYECTO FIN DE CARRERA Asignacin de Aulas de Clase en la Escuela Superior de Ingenieros

En este diagrama de Gantt podemos ver cada uno de los trabajos del ejemplo y entre parntesis el coste de cada uno de ellos. Cada fila del diagrama corresponde a una mquina por lo que dada la condicin de no poder realizar ms de un trabajo a la vez y por el solapamiento de J1, J3 y J4 como mnimo necesitaramos tres mquinas para la realizacin de todos los trabajos. As, a continuacin podemos ver el grafo correspondiente al ejemplo del anterior diagrama de Gantt:
J1 (-3,1) J2 (-2,1)

1 0,8 -m

2 0,8

3 0,8

4 0,8

5 0,8

6 0,8

7 0,8

8 0,8

9 m

J3 (-5,1) J4 (-1,1)

Figura 4-4. Grafo para algoritmo de flujo con costo mnimo.

En el grafo podemos observar los dos tipos de arcos que explicamos anteriormente. En cuanto al arco que le llega al primer nodo con m nos est indicando el flujo de mquinas que le vamos a introducir al grafo, es decir el nmero de mquinas que tenemos disponibles para la realizacin de todos los trabajos. De la misma forma podemos observar un arco que sale del ltimo nodo con m lo cual nos indica el flujo que sale del grafo.

4.3. IMPLEMENTACIN.
Para la ejecucin del programa desarrollado en Matlab podemos seguir el siguiente proceso: 1. Asignacin a cada uno de los grupos de un aula que mantendrn durante toda la semana.

Javier Nasarre Lorite.

45

PROYECTO FIN DE CARRERA Asignacin de Aulas de Clase en la Escuela Superior de Ingenieros

2. Una vez asignadas todas las asignaturas comunes asignaremos las asignaturas optativas con el criterio de ocupar el mayor porcentaje en cuanto a tiempo de las aulas ya ocupadas por asignaturas comunes. Una vez que esas aulas no puedan ser ocupadas por ms trabajos asignaremos aulas nuevas con el mismo criterio de ocupacin mxima. 3. Para la aplicacin del algoritmo de flujo con coste mnimo comenzaremos por introducirle como flujo el nmero de mquinas del tipo ms grande y sucesivamente el programa ir creando un nuevo archivo entrada.dat con el cual se irn introduciendo como flujo el nmero de mquinas del tipo
n 1 . En este bucle del programa conforme se asignen trabajos a mquinas

irn desapareciendo dichos trabajos del grafo para la aplicacin del algoritmo de flujo con costo mnimo. 4. Una vez terminada la ejecucin del programa se comprobar si con los recursos actuales se han podido realizar todos los trabajos simplemente mirando un valor que nos da el programa, Num_Arcos. Si este valor es igual al nmero de nodos de nuestro grafo, en nuestro caso 23, menos uno podemos decir que tenemos recursos necesarios para la realizacin de todos los trabajos. Una vez desarrollado la aplicacin completa pasamos a describir la implementacin de la parte fundamental, el algoritmo de flujo con costo mnimo.

4.3.1. Algoritmo de flujo con costo mnimo.

Para la resolucin de este problema de flujo con coste mnimo hemos utilizado la aplicacin FLUJO.exe, a la cual la llamamos desde Matlab mediante la lnea: !flujo.exe entrada.dat salida.dat comproba.dat

Javier Nasarre Lorite.

46

PROYECTO FIN DE CARRERA Asignacin de Aulas de Clase en la Escuela Superior de Ingenieros

As, esta aplicacin se ejecuta de la siguiente manera:


En primer lugar le debemos introducir un archivo de entrada llamado

entrada.dat en el que se especifican: a. Los trabajos a realizar. b. Hora de inicio, de fin, capacidad y coste de dichos trabajos. c. Nmero de nodos existentes que nos indicarn los instantes de tiempo en los que puede comenzar o finalizar un trabajo. d. Flujo de entrada al grafo. Estos archivos de entrada se formarn como archivo de texto y se guardarn con la extensin *.dat para el reconocimiento de la aplicacin. De esta manera en la siguiente figura podemos ver el formato de un archivo de entrada a la aplicacin:

Javier Nasarre Lorite.

47

PROYECTO FIN DE CARRERA Asignacin de Aulas de Clase en la Escuela Superior de Ingenieros

Figura 4-5. Formato de archivo de entrada a aplicacin FLUJO.exe.

Una vez ejecutado la aplicacin FLUJO.exe se nos facilitar un archivo de salida

llamado salida.dat, para abrir con un editor de texto, del que podremos extraer la siguiente informacin: a. Coste mnimo obtenido que nos indica el valor de la funcin objetivo de nuestro problema. b. Flujo existente en cada arco, con lo que podemos observar que trabajos han sido realizados ya que un 1 en un arco se interpreta como que el trabajo al que va asociado dicho arco ha sido realizado.

Javier Nasarre Lorite.

48

PROYECTO FIN DE CARRERA Asignacin de Aulas de Clase en la Escuela Superior de Ingenieros

Con todo esto podemos ver en la siguiente figura el formato de un archivo de salida:

Figura 4-6. Formato de archivo de salida aplicacin FLUJO.exe.

Una vez visto podemos ver un ver un ejemplo sencillo del algoritmo de flujo con costo mnimo. Para esto lo primero que hacemos es formar nuestro grafo:

Javier Nasarre Lorite.

49

PROYECTO FIN DE CARRERA Asignacin de Aulas de Clase en la Escuela Superior de Ingenieros

J1 (-3,1)

J5 (-2,1) J2 (-2,1)

1 0,8 -m

2 0,8

3 0,8

4 0,8

5 0,8

6 0,8

7 0,8

8 0,8

9 m

J3 (-5,1) J4 (-1,1)

Figura 4-7. Grafo del ejemplo.

Una vez que tenemos nuestro grafo le vamos a introducir dos mquinas para as calcular el costo mnimo, es decir m = 2 . As para este caso obtenemos un coste mnimo de -10. Por lo que podemos observar que las mquinas han realizado los trabajos J 1 , J 2 y J 3 . Si en lugar de introducir dos mquinas introducimos tres ( m = 3 ), el coste mnimo calculado es de -12 y los trabajos realizados han sido J 1 , J 2 , J 3 y J 5 .

Javier Nasarre Lorite.

50

Potrebbero piacerti anche