1
Se utiliza la estrategia de representacioacuten AON (actividades en los nodos) Por tanto los
nodos son las elipses y el nuacutemero en su interior representa la actividad
Se utilizan tres recursos cuyas dispon ibilidades son 4 unidades para cada uno
Los consumos de los tres recursos son los nuacutemeros que aparecen debajo de las
actividades separados por comas asiacute por ej la actividad 3 la cual tiene un consumo
de recursos de 311 consume 3 unidades del recurso 1 1 unidad del recurso 2 y 1
uniacutedad del recurso 3 durante el tiempo de ejecucioacuten (su duracioacuten)
La duracioacuten de las actividades es el nuacutemero que aparece encima de la respectiva
elipse
En Las tablas 1 y 2 aparecen los datos del problema
Tabla 1 Duraciones consumo de recursos y predecesores de las actividades
Actividad Duracioacuten Consumo Consumo Consumo Predecesores
Recurso 1 Recurso 2 Recurso 3
O O O O
2 3 2 2 2
3 3 3 1
4 O 1
5 2 2 2
6 2 4 O 1
7 3 2 2
8 2 3 2 O 2 5
9 O 3
3 2 2 3 4 6
11 O O O O 8 9 10
51
3
3
10
Las unidades de la duracioacuten son unidades de tiempo y las de consumo de recursos
son unidades de recurso
Tabla 2 Disponibilidades de los recursos
Recurso Disponibilidad
4
2 4
3 4
Las unidades de disponibilidad son unidades de recursos (las mismas usadas en la
Tabla 1)
Para este problema se tiene
Cota inferior LBO = 8 (Ruta criacutetica en flechas maacutes gruesas)
Cota inferior LBS = 11
Cota LBR1 = 11 (mayor entero~10 5)
Cota LBR2 = 8 (mayor entero~7 25)
Cota LBR3 = 7 (mayor entero~7)
Makespan oacuteptimo= 13
Solucioacuten oacuteptima (la que produce el makespan oacuteptimo)
Actividad tiempo de inicio tiempo de terminacioacuten
3 3
4 1
7 2 4
2 4 6
5 5 5
9 6 6
6 7 8
8 9 10
10 11 13
52
51 DESARROLLO DEL ALGORITMO CON EL EJEMPLO NUMEacuteRICO
A continuacioacuten se muestran los pasos iniciales del algoritmo (algunas iteraciones)
En el primer nodo se escoge el punto del tiempo 1 (Inicio del proyecto)
A continuacioacuten se determina el conjunto de actividades elegibles por precedencias
Por estar en el primer nodo las elegibles son las actividades que no tienen
predecesores es decir 2 3 4 Y 7 Ninguna actividad estaacute en ejecucioacuten en este punto
del tiempo Entonces se determina el conjunto de subconjuntos que se podriacutean iniciar
en el tiempo 1
Existen 16 subconjuntos de (2347) (24 = 16 conjunto potencia) que son (2 347)
(234) (237) (247) (347) (23) (24) (27) (34) (37) (47) (2) (3) (4) (7) (CV) donde
(CV) representa el conjunto vaciacuteo
De estos 16 subconjuntos son factibles por recursos 10 subconjuntos (24) (2 7) (34)
(3 7) (47) (2) (3) (4) (7) (CV) (conjunto vaciacuteo)
y no factibles por recursos 6 subconjunto (2347) (234) (237) (247) (347) (23)
Los 6 no factibles por recursos se desechan ya que el algoritmo en su proceso de
construccioacuten de un programa siempre trabaja con programas parciales factibles
Despueacutes de clasificarlos por los dos criterios mencionados (nuacutemero de elementos y
utilizacioacuten del recurso 1) se tiene el siguiente orden para los factibles (se excluye el
vaciacuteo) (34) (37) (24) (27) (47) (3) (2) (4) (7)
Se selecciona el primer subconjunto (34) y queda definido el nodo 1 en el que se
inician las actividades 3 y 4 en el tiempo 1
53
Descendemos un nivel en el aacuterbol y pasamos al 2
De las dos actividades en ejecucioacuten la que primero termina es la 4 que tiene una
duracioacuten de 1 y el tiempo candidato para el nivel 2 es el punto 2 en el tiempo En este
punto 2 las elegibles son 27 las que habiacutean quedado pendientes del nivel anterior ya
que la terminacioacuten de la 4 no habilita ninguna nueva elegible pues el uacutenico sucesor de
la 4 que es la 10 tambieacuten tiene como predecesor la 6 que no se ha iniciado auacuten
Con las actividades (27) se pueden formar los siguientes cuatro (22) subconjuntos
(27) (2) (7) (CV) de los cuales son factibles por recursos soacutelo el (7) y (CV) y no
factibles los otros dos (recueacuterdese que en el tiempo 2 estaacute auacuten en ejecucioacuten la
actividad 3)
Despueacutes de clasificarlos por los dos criterios mencionados (nuacutemero de elementos y
utilizacioacuten del recurso 1) se tiene el siguiente orden para los 2 factibles (7) (CV)
Sin entrar en una descripcioacuten tan detallada como la de los dos primeros niveles se
continuacutea el descenso en eacutel aacuterbol lo que nos lleva a lo siguiente (se omite el conjunto
vaciacuteo que siempre es factible)
nivel tiempo actividades subconjuntos subconj
elegibles clasificados elegido
3 4 (2569) (2) (5)(9) (2)
4 5 (569) (5) (9) (5)
5 6 (69) (9) (9)
6 7 (68) (6) (8) (6)
7 9 (810) (8) (10) (8)
8 11 (10) (10 ) (10)
54
El algoritmo recorre el aacuterbol en profundidad por lo que siempre desciende la primera
vez en el aacuterbol sin hacer backtracking y obtiene la primera solucioacuten factible que es la
descrita arriba Casualmente en este caso eacutesta es la solucioacuten oacuteptima Sin embargo
como se supone que no se conoce el oacuteptimo el algoritmo continuacutea la buacutesqueda en el
aacuterbol hasta haber recorrido todas las permutaciones factibles posibles
En este punto el algoritmo deberiacutea avanzar al nivel 9 y el punto de inicio seriacutea el
tiempo 14 (una unidad maacutes tarde de cuando termina la actividad 10 que es la uacutenica en
ejecucioacuten pero encuentra que en ese punto del tiempo no hay actividades elegibles ni
en ejecucioacuten lo que se interpreta como que se ha completado un programa (asiacute no
hay que llevar un contador de actividades para saber que se ha completado un
programa)
Entonces se inicia el retroceso en el aacuterbol En el nivel 8 soacutelo hay un subconjunto por lo
que retrocedemos nuevamente al nivel 7 En ese nivel existen dos subconjuntos (8) y
(10) Como el (8) fue el uacuteltimo seleccionado se escoge el subconjunto (10) Y se asocia
con el nivel Se realizan los caacutelculos necesarios para desactivar el subconjunto (8) y
activar el (10) Para ver en que consisten estos ajustes consultar el seudocoacutedigo del
algoritmo que aparece en el Anexo A Por ahora se estaacute describiendo solamente la
forma de recorrer el aacuterbol
Entonces el nivel 7 consiste ahora en iniciar en el punto 9 del tiempo (el mismo que se
teniacutea ya que lo que se cambia es el subconjunto) el subconjunto (10)
Continuamos el descenso hacia el nivel 8 donde la uacutenica actividad elegible es la 8 que
habiacutea sido desprogramada en el nivel 7 pero quedaba con el estado de elegible EL
punto donde termina la proacutexima actividad (la 10 que es la uacutenica en ejecucioacuten) es el fin
del periacuteodo 11 (o inicio del 12) y asiacute queda definido el nuevo nivel 8 con el tiempo
asociado 12 y el subconjunto (8)
55
Aquiacute el algoritmo avanza al nivel 9 y se detecta nuevamente la condicioacuten de que no
hay actividades en ejecucioacuten ni elegibles por lo que se tiene otra solucioacuten Se verifica
su makespan oacuteptimo que en este caso vuelve a ser 13 Como no es mejor que el
mejor hasta el momento se descarta Se inicia el retroceso en el aacuterbol y con esta forma
de avanzar y retroceder continuacutea el algoritmo hasta haber recorrido todas las
soluciones factibles permitidas por los niveles de vencimiento ya que como se habiacutea
mencionado antes el nuacutemero de soluciones en cada nivel estaacute acotado para darle
eficiencia al problema
56
6 EVALUACiOacuteN Y ANAacuteLISIS DE RESULTADOS
Para la evaluacioacuten de los resultados se utilizaron los 480 problemas de 30 actividades
y cuatro recursos a los cuales se les conoce la solucioacuten oacuteptima obtenidos de la
libreriacutea PSPLlB (Libreriacutea de problemas benchmark del tipo RCPSP usada por gran
cantidad de investigadores europeos en el tema (httpwwwbwlunishy
kieldeProdpsplib) creada por Kolisch R y A Sprecher)
La solucioacuten oacuteptima exacta de los 480 problemas se obtuvo con el algoritmo de
Demeulemeester and Herroelen del cual el AEM de este trabajo es una modificacioacuten
Cabe mencionar que aunque en la libreriacutea PSPLlB existen problemas de maacutes de 30
actividades a eacutestos no se les ha podido encontrar el oacuteptimo por ninguacuten algoritmo
exacto lo que justifica nuevamente el uso de algoritmos heuriacutesticos
Como siempre hay un compromiso entre la calidad de la solucioacuten y el tiempo
empleado para obtenerla donde a mayor tiempo de ejecucioacuten se obtiene una mejor
solucioacuten entonces se realizaron diferentes ejecuciones de cada uno de los tres
algoritmos para tener diferentes puntos de referencia Sin embargo como la forma en
que cada algoritmo controla el tiempo de ejecucioacuten (o tiempo de parada) es diferente
lo que se hace es controlar la parada del algoritmo seguacuten sus requerimientos
especiacuteficos con el fin de obtener el tiempo de ejecucioacuten con lo que se llega a una
medida estaacutendar para todos los algoritmos el tiempo de ejecucioacuten que los hace
comparables Por eso en las tablas que aparecen en el anaacutelisis de resultados
aparecen valores de tiempo vs calidad siendo el tiempo una consecuencia del criterio
de parada utilizado El paraacutemetro para medir la calidad es la desviacioacuten porcentual de
la solucioacuten obtenida respecto al oacuteptimo del problema que como ya se mencionoacute
anteriormente para los problemas de 30 actividades y 4 recursos utilizados en este
trabajo se conoce Asiacute por ej si el oacuteptimo exacto de un problema es 45 (unidades de
57
tiempo) y en una ejecucioacuten se llega a un oacuteptimo (heuriacutestico aproximado) de 47
entonces la desviacioacuten es (47-45)45 = 245 = 444
Como en la muestra de los 480 problemas existe una mezcla de problemas faacuteciles y
difiacuteciles (asiacute por ej es se sabe que los problemas del grupo 13 son los maacutes difiacuteciles en
tanto que los del grupo 2 son muy sencillos) y para evitar errores de redondeo la
desviacioacuten se calculoacute de la siguiente manera
SH (suma heuriacutestica) = suma de todas las soluciones oacuteptimas heuriacutesticas obtenidas
para los 480 problemas por el algoritmo en cuestioacuten
SE (suma exacta) = suma de todas las soluciones oacuteptimas conocidas para los 480
problemas obtenidas de la misma libreriacutea PSPLlB
Desviacioacuten = (SH - SE)SE (Esta foacutermula de desviacioacuten se utilizoacute para las tres
heuriacutesticas)
EL tiempo promedio se obtuvo como la suma acumulada de las duraciones de los 480
problemas dividiendo luego este valor por 480
Por los motivos expuestos y porque ademaacutes es equivalente a un promedio ponderado
se consideroacute mas conveniente esta expresioacuten para la desviacioacuten que alternativamente
calcular la desviacioacuten individual de cada uno de los problemas y luego obtener la
media de estas desviaciones para los 480 problemas
Por tanto los resultados en las tablas que aparecen a continuacioacuten siempre
corresponden al promedio de los 480 problemas nunca se obtuvieron tablas de
resultados para problemas individuales las cuales podriacutean llegar a ser de intereacutes si se
quisiera calcular la robustez del algoritmo por medio de la desviacioacuten estaacutendar u otra
medida Para el caacutelculo de tales promedios se anexaron a los algoritmos las
58
subrutinas que leiacutean los tiempos de inicio y finalizacioacuten acumulaban los tiempos de
ejecucioacuten y finalmente obteniacutean los promedios de tiempo y de desviacioacuten
61 RESULTADOS DE ENFRIAMIENTO SIMULADO (SA)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de SA desarrollado
mediante el algoritmo de la Figura 1 para diferentes valores del criterio de parada
tiempo de ejecucioacuten El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se ilustran en la
Tabla 3
Los progama fueron elaborados en lenguaje Visual-Basic y corridos en un procesador
de 2 MHz y 256 MB de memoria
TABLA 3 Resultados SA - 30 actividades
Desviacioacuten Tiempo (seg)
197 0169
169 0300
144 0582
114 1141
103 1689
095 2269
087 3398
068 8761
059 17387
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedia de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
59
62 RESULTADOS DE LA BUacuteSQUEDA TABUacute (TS)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de TS desarrollado
mediante el algoritmo de la Figura 2 para diferentes valores del criterio de parada
nuacutemero de iteraciones El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se muestran en
la Tabla 4
Los programas fueron elaborados en lenguaje Visual-Basic y corridos en un
procesador de 2 MHz y 256 MB de memoria
Tabla 4 Resultados TS - 30 actividades
Desviacioacuten Tiempo (seg)
208 0136
152 0301
118 0507
091 1023
082 1540
076 2062
068 3097
053 8227
046 15401
034 30719
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedio de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
60
63 RESULTADOS DEL ALGORITMO HEURiacuteSTICO MODIFICADO (AEM)
Como problemas de prueba se tomaron los mismos 480 problemas de 30 actividades
a los cuales se les conoce la solucioacuten oacuteptima de la libreriacutea PSPLlB libreriacutea de
problemas benchmark creada por Kolisch R y A Sprecher (http wwwbwlunishy
kiel deProdpsplib)
Los programas en este caso fueron elaborados en lenguaje Visual Foxpro y corridos
en un procesador de 17Mhz y 256 MB de memoria
A continuacioacuten se muestran seis tablas 5 6 7 8 9 10 Y 11 con los resultados
obtenidos variando algunos de los paraacutemetros descritos en 57
MS maacuteximo numero de subconjuntos por nivel
PNMI= miacutenimo nuacutemero de pasos por nivel
PNMA= maacuteximo nuacutemero de pasos por nivel
LI valor de LBRLBO por debajo del cual se utiliza PNMI
LS valor de LBR1LBO por encima del cual se utiliza PNMA
Desv desviacioacuten promedio respecto al oacuteptimo
TPO Tiempo promedio por problema en segundos
Tabla 5 con PNMI=1000 PNMA=50000 LI=07 LS= 11
MS Desv TPO
846 001
2 170 071
3 147 135
4 172 113
5 189 094
10 240 063
61
Tabla 6 con PNMI=2000 PNMA=100000 L1=07 LS= 11
MS Desv TPO
846 001
2 168 083
3 119 194
4 148 174
5 164 153
10 228 081
Tabla 7 con PNMI=10000 PNMA=500000 L1=07 LS= 11
MS Desv TPO
1 846 001
2 167 095
3 082 477
4 090 488
5 106 427
10 150 2 31
Tabla 8 con PNMI=1000 PNMA=100000 L1=05 LS= 10
MS Desv TPO
1 846 001
2 170 075
3 169 161
4 121 152
5 142 137
10 188 074
62
Tabla 9 con PNMI=2000 PNMA=200000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 169 087
3 101 245
4 108 222
5 122 193
10 171 101
Tabla 10 con PNMI=10000 PNMA=1000000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 167 096
3 077 600
4 080 544
5 085 475
10 125 269
Tabla 11 con PNMI=200 PNMA=10000 LI=05 LS= 12
MS Desv TPO
1 846 001
2 193 034
3 195 056
4 207 059
5 198 057
10 250 040
Aunque se observa poca sensibilidad a los paraacutemetros (PNMI PNMA J LS) es de
resaltar que la desviacioacuten decrece hasta llegar a un miacutenimo (en MS =3 o It1S =4)
donde empieza nuevamente a crecer debido a que el control de pasos por nivel evita
algunas buenas soluciones candidatas
63
Para MS=1 el algoritmo es equivalente a un meacutetodo constructivo y por eso se obtiene
la misma solucioacuten en todas las tablas
Con valores de PNMI menores se obtienen mejores resultados (igual desviacioacuten y
tiempos menores) ya que cuando los problemas son faacuteciles la buacutesqueda es menos
intensa Como caso extremo se muestra la Tabla 11 donde los problemas faacuteciles soacutelo
realizan 200 pasos por nivel (PNMI=200) aunque llegan al oacuteptimo
De las tablas anteriores se extractaron algunos tiempos comprendidos entre 193 y
082 buscando en la tabla donde se obtenga la mejor combinacioacuten calidad (desviacioacuten)
tiempo y los resultados se llevaron a una nueva tabla denominada tabla resumen
(Tabla 12) que aparece a continuacioacuten La tercera columna de la tabla resumen nos
indica de cual de las tablas originales se obtuvieron los respectivos datos
Tabla 12 resumen
Desv TPO De
Tabla
193 034 11
170 071 5
168 083 6
121 152 8
108 222 9
101 245 9
082 477 7
64 INTERFAZ DE EJECUCiOacuteN
Aunque el nuacutecleo del problema son los tres algoritmos desarrollados y su comparacioacuten
en cuanto a eficiencia sin embargo como dentro de los objetivos del trabajo se
encuentra el desarrollo de una herramienta computacional que implemente el
algoritmo desarrollado y construir un prototipo se disentildeoacute una interfaz para la entrada
de los datos y la lectura de los resultados que consta de un menuacute amigable y sencillo
de utilizar
64
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
Las unidades de la duracioacuten son unidades de tiempo y las de consumo de recursos
son unidades de recurso
Tabla 2 Disponibilidades de los recursos
Recurso Disponibilidad
4
2 4
3 4
Las unidades de disponibilidad son unidades de recursos (las mismas usadas en la
Tabla 1)
Para este problema se tiene
Cota inferior LBO = 8 (Ruta criacutetica en flechas maacutes gruesas)
Cota inferior LBS = 11
Cota LBR1 = 11 (mayor entero~10 5)
Cota LBR2 = 8 (mayor entero~7 25)
Cota LBR3 = 7 (mayor entero~7)
Makespan oacuteptimo= 13
Solucioacuten oacuteptima (la que produce el makespan oacuteptimo)
Actividad tiempo de inicio tiempo de terminacioacuten
3 3
4 1
7 2 4
2 4 6
5 5 5
9 6 6
6 7 8
8 9 10
10 11 13
52
51 DESARROLLO DEL ALGORITMO CON EL EJEMPLO NUMEacuteRICO
A continuacioacuten se muestran los pasos iniciales del algoritmo (algunas iteraciones)
En el primer nodo se escoge el punto del tiempo 1 (Inicio del proyecto)
A continuacioacuten se determina el conjunto de actividades elegibles por precedencias
Por estar en el primer nodo las elegibles son las actividades que no tienen
predecesores es decir 2 3 4 Y 7 Ninguna actividad estaacute en ejecucioacuten en este punto
del tiempo Entonces se determina el conjunto de subconjuntos que se podriacutean iniciar
en el tiempo 1
Existen 16 subconjuntos de (2347) (24 = 16 conjunto potencia) que son (2 347)
(234) (237) (247) (347) (23) (24) (27) (34) (37) (47) (2) (3) (4) (7) (CV) donde
(CV) representa el conjunto vaciacuteo
De estos 16 subconjuntos son factibles por recursos 10 subconjuntos (24) (2 7) (34)
(3 7) (47) (2) (3) (4) (7) (CV) (conjunto vaciacuteo)
y no factibles por recursos 6 subconjunto (2347) (234) (237) (247) (347) (23)
Los 6 no factibles por recursos se desechan ya que el algoritmo en su proceso de
construccioacuten de un programa siempre trabaja con programas parciales factibles
Despueacutes de clasificarlos por los dos criterios mencionados (nuacutemero de elementos y
utilizacioacuten del recurso 1) se tiene el siguiente orden para los factibles (se excluye el
vaciacuteo) (34) (37) (24) (27) (47) (3) (2) (4) (7)
Se selecciona el primer subconjunto (34) y queda definido el nodo 1 en el que se
inician las actividades 3 y 4 en el tiempo 1
53
Descendemos un nivel en el aacuterbol y pasamos al 2
De las dos actividades en ejecucioacuten la que primero termina es la 4 que tiene una
duracioacuten de 1 y el tiempo candidato para el nivel 2 es el punto 2 en el tiempo En este
punto 2 las elegibles son 27 las que habiacutean quedado pendientes del nivel anterior ya
que la terminacioacuten de la 4 no habilita ninguna nueva elegible pues el uacutenico sucesor de
la 4 que es la 10 tambieacuten tiene como predecesor la 6 que no se ha iniciado auacuten
Con las actividades (27) se pueden formar los siguientes cuatro (22) subconjuntos
(27) (2) (7) (CV) de los cuales son factibles por recursos soacutelo el (7) y (CV) y no
factibles los otros dos (recueacuterdese que en el tiempo 2 estaacute auacuten en ejecucioacuten la
actividad 3)
Despueacutes de clasificarlos por los dos criterios mencionados (nuacutemero de elementos y
utilizacioacuten del recurso 1) se tiene el siguiente orden para los 2 factibles (7) (CV)
Sin entrar en una descripcioacuten tan detallada como la de los dos primeros niveles se
continuacutea el descenso en eacutel aacuterbol lo que nos lleva a lo siguiente (se omite el conjunto
vaciacuteo que siempre es factible)
nivel tiempo actividades subconjuntos subconj
elegibles clasificados elegido
3 4 (2569) (2) (5)(9) (2)
4 5 (569) (5) (9) (5)
5 6 (69) (9) (9)
6 7 (68) (6) (8) (6)
7 9 (810) (8) (10) (8)
8 11 (10) (10 ) (10)
54
El algoritmo recorre el aacuterbol en profundidad por lo que siempre desciende la primera
vez en el aacuterbol sin hacer backtracking y obtiene la primera solucioacuten factible que es la
descrita arriba Casualmente en este caso eacutesta es la solucioacuten oacuteptima Sin embargo
como se supone que no se conoce el oacuteptimo el algoritmo continuacutea la buacutesqueda en el
aacuterbol hasta haber recorrido todas las permutaciones factibles posibles
En este punto el algoritmo deberiacutea avanzar al nivel 9 y el punto de inicio seriacutea el
tiempo 14 (una unidad maacutes tarde de cuando termina la actividad 10 que es la uacutenica en
ejecucioacuten pero encuentra que en ese punto del tiempo no hay actividades elegibles ni
en ejecucioacuten lo que se interpreta como que se ha completado un programa (asiacute no
hay que llevar un contador de actividades para saber que se ha completado un
programa)
Entonces se inicia el retroceso en el aacuterbol En el nivel 8 soacutelo hay un subconjunto por lo
que retrocedemos nuevamente al nivel 7 En ese nivel existen dos subconjuntos (8) y
(10) Como el (8) fue el uacuteltimo seleccionado se escoge el subconjunto (10) Y se asocia
con el nivel Se realizan los caacutelculos necesarios para desactivar el subconjunto (8) y
activar el (10) Para ver en que consisten estos ajustes consultar el seudocoacutedigo del
algoritmo que aparece en el Anexo A Por ahora se estaacute describiendo solamente la
forma de recorrer el aacuterbol
Entonces el nivel 7 consiste ahora en iniciar en el punto 9 del tiempo (el mismo que se
teniacutea ya que lo que se cambia es el subconjunto) el subconjunto (10)
Continuamos el descenso hacia el nivel 8 donde la uacutenica actividad elegible es la 8 que
habiacutea sido desprogramada en el nivel 7 pero quedaba con el estado de elegible EL
punto donde termina la proacutexima actividad (la 10 que es la uacutenica en ejecucioacuten) es el fin
del periacuteodo 11 (o inicio del 12) y asiacute queda definido el nuevo nivel 8 con el tiempo
asociado 12 y el subconjunto (8)
55
Aquiacute el algoritmo avanza al nivel 9 y se detecta nuevamente la condicioacuten de que no
hay actividades en ejecucioacuten ni elegibles por lo que se tiene otra solucioacuten Se verifica
su makespan oacuteptimo que en este caso vuelve a ser 13 Como no es mejor que el
mejor hasta el momento se descarta Se inicia el retroceso en el aacuterbol y con esta forma
de avanzar y retroceder continuacutea el algoritmo hasta haber recorrido todas las
soluciones factibles permitidas por los niveles de vencimiento ya que como se habiacutea
mencionado antes el nuacutemero de soluciones en cada nivel estaacute acotado para darle
eficiencia al problema
56
6 EVALUACiOacuteN Y ANAacuteLISIS DE RESULTADOS
Para la evaluacioacuten de los resultados se utilizaron los 480 problemas de 30 actividades
y cuatro recursos a los cuales se les conoce la solucioacuten oacuteptima obtenidos de la
libreriacutea PSPLlB (Libreriacutea de problemas benchmark del tipo RCPSP usada por gran
cantidad de investigadores europeos en el tema (httpwwwbwlunishy
kieldeProdpsplib) creada por Kolisch R y A Sprecher)
La solucioacuten oacuteptima exacta de los 480 problemas se obtuvo con el algoritmo de
Demeulemeester and Herroelen del cual el AEM de este trabajo es una modificacioacuten
Cabe mencionar que aunque en la libreriacutea PSPLlB existen problemas de maacutes de 30
actividades a eacutestos no se les ha podido encontrar el oacuteptimo por ninguacuten algoritmo
exacto lo que justifica nuevamente el uso de algoritmos heuriacutesticos
Como siempre hay un compromiso entre la calidad de la solucioacuten y el tiempo
empleado para obtenerla donde a mayor tiempo de ejecucioacuten se obtiene una mejor
solucioacuten entonces se realizaron diferentes ejecuciones de cada uno de los tres
algoritmos para tener diferentes puntos de referencia Sin embargo como la forma en
que cada algoritmo controla el tiempo de ejecucioacuten (o tiempo de parada) es diferente
lo que se hace es controlar la parada del algoritmo seguacuten sus requerimientos
especiacuteficos con el fin de obtener el tiempo de ejecucioacuten con lo que se llega a una
medida estaacutendar para todos los algoritmos el tiempo de ejecucioacuten que los hace
comparables Por eso en las tablas que aparecen en el anaacutelisis de resultados
aparecen valores de tiempo vs calidad siendo el tiempo una consecuencia del criterio
de parada utilizado El paraacutemetro para medir la calidad es la desviacioacuten porcentual de
la solucioacuten obtenida respecto al oacuteptimo del problema que como ya se mencionoacute
anteriormente para los problemas de 30 actividades y 4 recursos utilizados en este
trabajo se conoce Asiacute por ej si el oacuteptimo exacto de un problema es 45 (unidades de
57
tiempo) y en una ejecucioacuten se llega a un oacuteptimo (heuriacutestico aproximado) de 47
entonces la desviacioacuten es (47-45)45 = 245 = 444
Como en la muestra de los 480 problemas existe una mezcla de problemas faacuteciles y
difiacuteciles (asiacute por ej es se sabe que los problemas del grupo 13 son los maacutes difiacuteciles en
tanto que los del grupo 2 son muy sencillos) y para evitar errores de redondeo la
desviacioacuten se calculoacute de la siguiente manera
SH (suma heuriacutestica) = suma de todas las soluciones oacuteptimas heuriacutesticas obtenidas
para los 480 problemas por el algoritmo en cuestioacuten
SE (suma exacta) = suma de todas las soluciones oacuteptimas conocidas para los 480
problemas obtenidas de la misma libreriacutea PSPLlB
Desviacioacuten = (SH - SE)SE (Esta foacutermula de desviacioacuten se utilizoacute para las tres
heuriacutesticas)
EL tiempo promedio se obtuvo como la suma acumulada de las duraciones de los 480
problemas dividiendo luego este valor por 480
Por los motivos expuestos y porque ademaacutes es equivalente a un promedio ponderado
se consideroacute mas conveniente esta expresioacuten para la desviacioacuten que alternativamente
calcular la desviacioacuten individual de cada uno de los problemas y luego obtener la
media de estas desviaciones para los 480 problemas
Por tanto los resultados en las tablas que aparecen a continuacioacuten siempre
corresponden al promedio de los 480 problemas nunca se obtuvieron tablas de
resultados para problemas individuales las cuales podriacutean llegar a ser de intereacutes si se
quisiera calcular la robustez del algoritmo por medio de la desviacioacuten estaacutendar u otra
medida Para el caacutelculo de tales promedios se anexaron a los algoritmos las
58
subrutinas que leiacutean los tiempos de inicio y finalizacioacuten acumulaban los tiempos de
ejecucioacuten y finalmente obteniacutean los promedios de tiempo y de desviacioacuten
61 RESULTADOS DE ENFRIAMIENTO SIMULADO (SA)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de SA desarrollado
mediante el algoritmo de la Figura 1 para diferentes valores del criterio de parada
tiempo de ejecucioacuten El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se ilustran en la
Tabla 3
Los progama fueron elaborados en lenguaje Visual-Basic y corridos en un procesador
de 2 MHz y 256 MB de memoria
TABLA 3 Resultados SA - 30 actividades
Desviacioacuten Tiempo (seg)
197 0169
169 0300
144 0582
114 1141
103 1689
095 2269
087 3398
068 8761
059 17387
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedia de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
59
62 RESULTADOS DE LA BUacuteSQUEDA TABUacute (TS)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de TS desarrollado
mediante el algoritmo de la Figura 2 para diferentes valores del criterio de parada
nuacutemero de iteraciones El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se muestran en
la Tabla 4
Los programas fueron elaborados en lenguaje Visual-Basic y corridos en un
procesador de 2 MHz y 256 MB de memoria
Tabla 4 Resultados TS - 30 actividades
Desviacioacuten Tiempo (seg)
208 0136
152 0301
118 0507
091 1023
082 1540
076 2062
068 3097
053 8227
046 15401
034 30719
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedio de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
60
63 RESULTADOS DEL ALGORITMO HEURiacuteSTICO MODIFICADO (AEM)
Como problemas de prueba se tomaron los mismos 480 problemas de 30 actividades
a los cuales se les conoce la solucioacuten oacuteptima de la libreriacutea PSPLlB libreriacutea de
problemas benchmark creada por Kolisch R y A Sprecher (http wwwbwlunishy
kiel deProdpsplib)
Los programas en este caso fueron elaborados en lenguaje Visual Foxpro y corridos
en un procesador de 17Mhz y 256 MB de memoria
A continuacioacuten se muestran seis tablas 5 6 7 8 9 10 Y 11 con los resultados
obtenidos variando algunos de los paraacutemetros descritos en 57
MS maacuteximo numero de subconjuntos por nivel
PNMI= miacutenimo nuacutemero de pasos por nivel
PNMA= maacuteximo nuacutemero de pasos por nivel
LI valor de LBRLBO por debajo del cual se utiliza PNMI
LS valor de LBR1LBO por encima del cual se utiliza PNMA
Desv desviacioacuten promedio respecto al oacuteptimo
TPO Tiempo promedio por problema en segundos
Tabla 5 con PNMI=1000 PNMA=50000 LI=07 LS= 11
MS Desv TPO
846 001
2 170 071
3 147 135
4 172 113
5 189 094
10 240 063
61
Tabla 6 con PNMI=2000 PNMA=100000 L1=07 LS= 11
MS Desv TPO
846 001
2 168 083
3 119 194
4 148 174
5 164 153
10 228 081
Tabla 7 con PNMI=10000 PNMA=500000 L1=07 LS= 11
MS Desv TPO
1 846 001
2 167 095
3 082 477
4 090 488
5 106 427
10 150 2 31
Tabla 8 con PNMI=1000 PNMA=100000 L1=05 LS= 10
MS Desv TPO
1 846 001
2 170 075
3 169 161
4 121 152
5 142 137
10 188 074
62
Tabla 9 con PNMI=2000 PNMA=200000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 169 087
3 101 245
4 108 222
5 122 193
10 171 101
Tabla 10 con PNMI=10000 PNMA=1000000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 167 096
3 077 600
4 080 544
5 085 475
10 125 269
Tabla 11 con PNMI=200 PNMA=10000 LI=05 LS= 12
MS Desv TPO
1 846 001
2 193 034
3 195 056
4 207 059
5 198 057
10 250 040
Aunque se observa poca sensibilidad a los paraacutemetros (PNMI PNMA J LS) es de
resaltar que la desviacioacuten decrece hasta llegar a un miacutenimo (en MS =3 o It1S =4)
donde empieza nuevamente a crecer debido a que el control de pasos por nivel evita
algunas buenas soluciones candidatas
63
Para MS=1 el algoritmo es equivalente a un meacutetodo constructivo y por eso se obtiene
la misma solucioacuten en todas las tablas
Con valores de PNMI menores se obtienen mejores resultados (igual desviacioacuten y
tiempos menores) ya que cuando los problemas son faacuteciles la buacutesqueda es menos
intensa Como caso extremo se muestra la Tabla 11 donde los problemas faacuteciles soacutelo
realizan 200 pasos por nivel (PNMI=200) aunque llegan al oacuteptimo
De las tablas anteriores se extractaron algunos tiempos comprendidos entre 193 y
082 buscando en la tabla donde se obtenga la mejor combinacioacuten calidad (desviacioacuten)
tiempo y los resultados se llevaron a una nueva tabla denominada tabla resumen
(Tabla 12) que aparece a continuacioacuten La tercera columna de la tabla resumen nos
indica de cual de las tablas originales se obtuvieron los respectivos datos
Tabla 12 resumen
Desv TPO De
Tabla
193 034 11
170 071 5
168 083 6
121 152 8
108 222 9
101 245 9
082 477 7
64 INTERFAZ DE EJECUCiOacuteN
Aunque el nuacutecleo del problema son los tres algoritmos desarrollados y su comparacioacuten
en cuanto a eficiencia sin embargo como dentro de los objetivos del trabajo se
encuentra el desarrollo de una herramienta computacional que implemente el
algoritmo desarrollado y construir un prototipo se disentildeoacute una interfaz para la entrada
de los datos y la lectura de los resultados que consta de un menuacute amigable y sencillo
de utilizar
64
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
51 DESARROLLO DEL ALGORITMO CON EL EJEMPLO NUMEacuteRICO
A continuacioacuten se muestran los pasos iniciales del algoritmo (algunas iteraciones)
En el primer nodo se escoge el punto del tiempo 1 (Inicio del proyecto)
A continuacioacuten se determina el conjunto de actividades elegibles por precedencias
Por estar en el primer nodo las elegibles son las actividades que no tienen
predecesores es decir 2 3 4 Y 7 Ninguna actividad estaacute en ejecucioacuten en este punto
del tiempo Entonces se determina el conjunto de subconjuntos que se podriacutean iniciar
en el tiempo 1
Existen 16 subconjuntos de (2347) (24 = 16 conjunto potencia) que son (2 347)
(234) (237) (247) (347) (23) (24) (27) (34) (37) (47) (2) (3) (4) (7) (CV) donde
(CV) representa el conjunto vaciacuteo
De estos 16 subconjuntos son factibles por recursos 10 subconjuntos (24) (2 7) (34)
(3 7) (47) (2) (3) (4) (7) (CV) (conjunto vaciacuteo)
y no factibles por recursos 6 subconjunto (2347) (234) (237) (247) (347) (23)
Los 6 no factibles por recursos se desechan ya que el algoritmo en su proceso de
construccioacuten de un programa siempre trabaja con programas parciales factibles
Despueacutes de clasificarlos por los dos criterios mencionados (nuacutemero de elementos y
utilizacioacuten del recurso 1) se tiene el siguiente orden para los factibles (se excluye el
vaciacuteo) (34) (37) (24) (27) (47) (3) (2) (4) (7)
Se selecciona el primer subconjunto (34) y queda definido el nodo 1 en el que se
inician las actividades 3 y 4 en el tiempo 1
53
Descendemos un nivel en el aacuterbol y pasamos al 2
De las dos actividades en ejecucioacuten la que primero termina es la 4 que tiene una
duracioacuten de 1 y el tiempo candidato para el nivel 2 es el punto 2 en el tiempo En este
punto 2 las elegibles son 27 las que habiacutean quedado pendientes del nivel anterior ya
que la terminacioacuten de la 4 no habilita ninguna nueva elegible pues el uacutenico sucesor de
la 4 que es la 10 tambieacuten tiene como predecesor la 6 que no se ha iniciado auacuten
Con las actividades (27) se pueden formar los siguientes cuatro (22) subconjuntos
(27) (2) (7) (CV) de los cuales son factibles por recursos soacutelo el (7) y (CV) y no
factibles los otros dos (recueacuterdese que en el tiempo 2 estaacute auacuten en ejecucioacuten la
actividad 3)
Despueacutes de clasificarlos por los dos criterios mencionados (nuacutemero de elementos y
utilizacioacuten del recurso 1) se tiene el siguiente orden para los 2 factibles (7) (CV)
Sin entrar en una descripcioacuten tan detallada como la de los dos primeros niveles se
continuacutea el descenso en eacutel aacuterbol lo que nos lleva a lo siguiente (se omite el conjunto
vaciacuteo que siempre es factible)
nivel tiempo actividades subconjuntos subconj
elegibles clasificados elegido
3 4 (2569) (2) (5)(9) (2)
4 5 (569) (5) (9) (5)
5 6 (69) (9) (9)
6 7 (68) (6) (8) (6)
7 9 (810) (8) (10) (8)
8 11 (10) (10 ) (10)
54
El algoritmo recorre el aacuterbol en profundidad por lo que siempre desciende la primera
vez en el aacuterbol sin hacer backtracking y obtiene la primera solucioacuten factible que es la
descrita arriba Casualmente en este caso eacutesta es la solucioacuten oacuteptima Sin embargo
como se supone que no se conoce el oacuteptimo el algoritmo continuacutea la buacutesqueda en el
aacuterbol hasta haber recorrido todas las permutaciones factibles posibles
En este punto el algoritmo deberiacutea avanzar al nivel 9 y el punto de inicio seriacutea el
tiempo 14 (una unidad maacutes tarde de cuando termina la actividad 10 que es la uacutenica en
ejecucioacuten pero encuentra que en ese punto del tiempo no hay actividades elegibles ni
en ejecucioacuten lo que se interpreta como que se ha completado un programa (asiacute no
hay que llevar un contador de actividades para saber que se ha completado un
programa)
Entonces se inicia el retroceso en el aacuterbol En el nivel 8 soacutelo hay un subconjunto por lo
que retrocedemos nuevamente al nivel 7 En ese nivel existen dos subconjuntos (8) y
(10) Como el (8) fue el uacuteltimo seleccionado se escoge el subconjunto (10) Y se asocia
con el nivel Se realizan los caacutelculos necesarios para desactivar el subconjunto (8) y
activar el (10) Para ver en que consisten estos ajustes consultar el seudocoacutedigo del
algoritmo que aparece en el Anexo A Por ahora se estaacute describiendo solamente la
forma de recorrer el aacuterbol
Entonces el nivel 7 consiste ahora en iniciar en el punto 9 del tiempo (el mismo que se
teniacutea ya que lo que se cambia es el subconjunto) el subconjunto (10)
Continuamos el descenso hacia el nivel 8 donde la uacutenica actividad elegible es la 8 que
habiacutea sido desprogramada en el nivel 7 pero quedaba con el estado de elegible EL
punto donde termina la proacutexima actividad (la 10 que es la uacutenica en ejecucioacuten) es el fin
del periacuteodo 11 (o inicio del 12) y asiacute queda definido el nuevo nivel 8 con el tiempo
asociado 12 y el subconjunto (8)
55
Aquiacute el algoritmo avanza al nivel 9 y se detecta nuevamente la condicioacuten de que no
hay actividades en ejecucioacuten ni elegibles por lo que se tiene otra solucioacuten Se verifica
su makespan oacuteptimo que en este caso vuelve a ser 13 Como no es mejor que el
mejor hasta el momento se descarta Se inicia el retroceso en el aacuterbol y con esta forma
de avanzar y retroceder continuacutea el algoritmo hasta haber recorrido todas las
soluciones factibles permitidas por los niveles de vencimiento ya que como se habiacutea
mencionado antes el nuacutemero de soluciones en cada nivel estaacute acotado para darle
eficiencia al problema
56
6 EVALUACiOacuteN Y ANAacuteLISIS DE RESULTADOS
Para la evaluacioacuten de los resultados se utilizaron los 480 problemas de 30 actividades
y cuatro recursos a los cuales se les conoce la solucioacuten oacuteptima obtenidos de la
libreriacutea PSPLlB (Libreriacutea de problemas benchmark del tipo RCPSP usada por gran
cantidad de investigadores europeos en el tema (httpwwwbwlunishy
kieldeProdpsplib) creada por Kolisch R y A Sprecher)
La solucioacuten oacuteptima exacta de los 480 problemas se obtuvo con el algoritmo de
Demeulemeester and Herroelen del cual el AEM de este trabajo es una modificacioacuten
Cabe mencionar que aunque en la libreriacutea PSPLlB existen problemas de maacutes de 30
actividades a eacutestos no se les ha podido encontrar el oacuteptimo por ninguacuten algoritmo
exacto lo que justifica nuevamente el uso de algoritmos heuriacutesticos
Como siempre hay un compromiso entre la calidad de la solucioacuten y el tiempo
empleado para obtenerla donde a mayor tiempo de ejecucioacuten se obtiene una mejor
solucioacuten entonces se realizaron diferentes ejecuciones de cada uno de los tres
algoritmos para tener diferentes puntos de referencia Sin embargo como la forma en
que cada algoritmo controla el tiempo de ejecucioacuten (o tiempo de parada) es diferente
lo que se hace es controlar la parada del algoritmo seguacuten sus requerimientos
especiacuteficos con el fin de obtener el tiempo de ejecucioacuten con lo que se llega a una
medida estaacutendar para todos los algoritmos el tiempo de ejecucioacuten que los hace
comparables Por eso en las tablas que aparecen en el anaacutelisis de resultados
aparecen valores de tiempo vs calidad siendo el tiempo una consecuencia del criterio
de parada utilizado El paraacutemetro para medir la calidad es la desviacioacuten porcentual de
la solucioacuten obtenida respecto al oacuteptimo del problema que como ya se mencionoacute
anteriormente para los problemas de 30 actividades y 4 recursos utilizados en este
trabajo se conoce Asiacute por ej si el oacuteptimo exacto de un problema es 45 (unidades de
57
tiempo) y en una ejecucioacuten se llega a un oacuteptimo (heuriacutestico aproximado) de 47
entonces la desviacioacuten es (47-45)45 = 245 = 444
Como en la muestra de los 480 problemas existe una mezcla de problemas faacuteciles y
difiacuteciles (asiacute por ej es se sabe que los problemas del grupo 13 son los maacutes difiacuteciles en
tanto que los del grupo 2 son muy sencillos) y para evitar errores de redondeo la
desviacioacuten se calculoacute de la siguiente manera
SH (suma heuriacutestica) = suma de todas las soluciones oacuteptimas heuriacutesticas obtenidas
para los 480 problemas por el algoritmo en cuestioacuten
SE (suma exacta) = suma de todas las soluciones oacuteptimas conocidas para los 480
problemas obtenidas de la misma libreriacutea PSPLlB
Desviacioacuten = (SH - SE)SE (Esta foacutermula de desviacioacuten se utilizoacute para las tres
heuriacutesticas)
EL tiempo promedio se obtuvo como la suma acumulada de las duraciones de los 480
problemas dividiendo luego este valor por 480
Por los motivos expuestos y porque ademaacutes es equivalente a un promedio ponderado
se consideroacute mas conveniente esta expresioacuten para la desviacioacuten que alternativamente
calcular la desviacioacuten individual de cada uno de los problemas y luego obtener la
media de estas desviaciones para los 480 problemas
Por tanto los resultados en las tablas que aparecen a continuacioacuten siempre
corresponden al promedio de los 480 problemas nunca se obtuvieron tablas de
resultados para problemas individuales las cuales podriacutean llegar a ser de intereacutes si se
quisiera calcular la robustez del algoritmo por medio de la desviacioacuten estaacutendar u otra
medida Para el caacutelculo de tales promedios se anexaron a los algoritmos las
58
subrutinas que leiacutean los tiempos de inicio y finalizacioacuten acumulaban los tiempos de
ejecucioacuten y finalmente obteniacutean los promedios de tiempo y de desviacioacuten
61 RESULTADOS DE ENFRIAMIENTO SIMULADO (SA)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de SA desarrollado
mediante el algoritmo de la Figura 1 para diferentes valores del criterio de parada
tiempo de ejecucioacuten El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se ilustran en la
Tabla 3
Los progama fueron elaborados en lenguaje Visual-Basic y corridos en un procesador
de 2 MHz y 256 MB de memoria
TABLA 3 Resultados SA - 30 actividades
Desviacioacuten Tiempo (seg)
197 0169
169 0300
144 0582
114 1141
103 1689
095 2269
087 3398
068 8761
059 17387
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedia de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
59
62 RESULTADOS DE LA BUacuteSQUEDA TABUacute (TS)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de TS desarrollado
mediante el algoritmo de la Figura 2 para diferentes valores del criterio de parada
nuacutemero de iteraciones El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se muestran en
la Tabla 4
Los programas fueron elaborados en lenguaje Visual-Basic y corridos en un
procesador de 2 MHz y 256 MB de memoria
Tabla 4 Resultados TS - 30 actividades
Desviacioacuten Tiempo (seg)
208 0136
152 0301
118 0507
091 1023
082 1540
076 2062
068 3097
053 8227
046 15401
034 30719
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedio de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
60
63 RESULTADOS DEL ALGORITMO HEURiacuteSTICO MODIFICADO (AEM)
Como problemas de prueba se tomaron los mismos 480 problemas de 30 actividades
a los cuales se les conoce la solucioacuten oacuteptima de la libreriacutea PSPLlB libreriacutea de
problemas benchmark creada por Kolisch R y A Sprecher (http wwwbwlunishy
kiel deProdpsplib)
Los programas en este caso fueron elaborados en lenguaje Visual Foxpro y corridos
en un procesador de 17Mhz y 256 MB de memoria
A continuacioacuten se muestran seis tablas 5 6 7 8 9 10 Y 11 con los resultados
obtenidos variando algunos de los paraacutemetros descritos en 57
MS maacuteximo numero de subconjuntos por nivel
PNMI= miacutenimo nuacutemero de pasos por nivel
PNMA= maacuteximo nuacutemero de pasos por nivel
LI valor de LBRLBO por debajo del cual se utiliza PNMI
LS valor de LBR1LBO por encima del cual se utiliza PNMA
Desv desviacioacuten promedio respecto al oacuteptimo
TPO Tiempo promedio por problema en segundos
Tabla 5 con PNMI=1000 PNMA=50000 LI=07 LS= 11
MS Desv TPO
846 001
2 170 071
3 147 135
4 172 113
5 189 094
10 240 063
61
Tabla 6 con PNMI=2000 PNMA=100000 L1=07 LS= 11
MS Desv TPO
846 001
2 168 083
3 119 194
4 148 174
5 164 153
10 228 081
Tabla 7 con PNMI=10000 PNMA=500000 L1=07 LS= 11
MS Desv TPO
1 846 001
2 167 095
3 082 477
4 090 488
5 106 427
10 150 2 31
Tabla 8 con PNMI=1000 PNMA=100000 L1=05 LS= 10
MS Desv TPO
1 846 001
2 170 075
3 169 161
4 121 152
5 142 137
10 188 074
62
Tabla 9 con PNMI=2000 PNMA=200000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 169 087
3 101 245
4 108 222
5 122 193
10 171 101
Tabla 10 con PNMI=10000 PNMA=1000000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 167 096
3 077 600
4 080 544
5 085 475
10 125 269
Tabla 11 con PNMI=200 PNMA=10000 LI=05 LS= 12
MS Desv TPO
1 846 001
2 193 034
3 195 056
4 207 059
5 198 057
10 250 040
Aunque se observa poca sensibilidad a los paraacutemetros (PNMI PNMA J LS) es de
resaltar que la desviacioacuten decrece hasta llegar a un miacutenimo (en MS =3 o It1S =4)
donde empieza nuevamente a crecer debido a que el control de pasos por nivel evita
algunas buenas soluciones candidatas
63
Para MS=1 el algoritmo es equivalente a un meacutetodo constructivo y por eso se obtiene
la misma solucioacuten en todas las tablas
Con valores de PNMI menores se obtienen mejores resultados (igual desviacioacuten y
tiempos menores) ya que cuando los problemas son faacuteciles la buacutesqueda es menos
intensa Como caso extremo se muestra la Tabla 11 donde los problemas faacuteciles soacutelo
realizan 200 pasos por nivel (PNMI=200) aunque llegan al oacuteptimo
De las tablas anteriores se extractaron algunos tiempos comprendidos entre 193 y
082 buscando en la tabla donde se obtenga la mejor combinacioacuten calidad (desviacioacuten)
tiempo y los resultados se llevaron a una nueva tabla denominada tabla resumen
(Tabla 12) que aparece a continuacioacuten La tercera columna de la tabla resumen nos
indica de cual de las tablas originales se obtuvieron los respectivos datos
Tabla 12 resumen
Desv TPO De
Tabla
193 034 11
170 071 5
168 083 6
121 152 8
108 222 9
101 245 9
082 477 7
64 INTERFAZ DE EJECUCiOacuteN
Aunque el nuacutecleo del problema son los tres algoritmos desarrollados y su comparacioacuten
en cuanto a eficiencia sin embargo como dentro de los objetivos del trabajo se
encuentra el desarrollo de una herramienta computacional que implemente el
algoritmo desarrollado y construir un prototipo se disentildeoacute una interfaz para la entrada
de los datos y la lectura de los resultados que consta de un menuacute amigable y sencillo
de utilizar
64
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
Descendemos un nivel en el aacuterbol y pasamos al 2
De las dos actividades en ejecucioacuten la que primero termina es la 4 que tiene una
duracioacuten de 1 y el tiempo candidato para el nivel 2 es el punto 2 en el tiempo En este
punto 2 las elegibles son 27 las que habiacutean quedado pendientes del nivel anterior ya
que la terminacioacuten de la 4 no habilita ninguna nueva elegible pues el uacutenico sucesor de
la 4 que es la 10 tambieacuten tiene como predecesor la 6 que no se ha iniciado auacuten
Con las actividades (27) se pueden formar los siguientes cuatro (22) subconjuntos
(27) (2) (7) (CV) de los cuales son factibles por recursos soacutelo el (7) y (CV) y no
factibles los otros dos (recueacuterdese que en el tiempo 2 estaacute auacuten en ejecucioacuten la
actividad 3)
Despueacutes de clasificarlos por los dos criterios mencionados (nuacutemero de elementos y
utilizacioacuten del recurso 1) se tiene el siguiente orden para los 2 factibles (7) (CV)
Sin entrar en una descripcioacuten tan detallada como la de los dos primeros niveles se
continuacutea el descenso en eacutel aacuterbol lo que nos lleva a lo siguiente (se omite el conjunto
vaciacuteo que siempre es factible)
nivel tiempo actividades subconjuntos subconj
elegibles clasificados elegido
3 4 (2569) (2) (5)(9) (2)
4 5 (569) (5) (9) (5)
5 6 (69) (9) (9)
6 7 (68) (6) (8) (6)
7 9 (810) (8) (10) (8)
8 11 (10) (10 ) (10)
54
El algoritmo recorre el aacuterbol en profundidad por lo que siempre desciende la primera
vez en el aacuterbol sin hacer backtracking y obtiene la primera solucioacuten factible que es la
descrita arriba Casualmente en este caso eacutesta es la solucioacuten oacuteptima Sin embargo
como se supone que no se conoce el oacuteptimo el algoritmo continuacutea la buacutesqueda en el
aacuterbol hasta haber recorrido todas las permutaciones factibles posibles
En este punto el algoritmo deberiacutea avanzar al nivel 9 y el punto de inicio seriacutea el
tiempo 14 (una unidad maacutes tarde de cuando termina la actividad 10 que es la uacutenica en
ejecucioacuten pero encuentra que en ese punto del tiempo no hay actividades elegibles ni
en ejecucioacuten lo que se interpreta como que se ha completado un programa (asiacute no
hay que llevar un contador de actividades para saber que se ha completado un
programa)
Entonces se inicia el retroceso en el aacuterbol En el nivel 8 soacutelo hay un subconjunto por lo
que retrocedemos nuevamente al nivel 7 En ese nivel existen dos subconjuntos (8) y
(10) Como el (8) fue el uacuteltimo seleccionado se escoge el subconjunto (10) Y se asocia
con el nivel Se realizan los caacutelculos necesarios para desactivar el subconjunto (8) y
activar el (10) Para ver en que consisten estos ajustes consultar el seudocoacutedigo del
algoritmo que aparece en el Anexo A Por ahora se estaacute describiendo solamente la
forma de recorrer el aacuterbol
Entonces el nivel 7 consiste ahora en iniciar en el punto 9 del tiempo (el mismo que se
teniacutea ya que lo que se cambia es el subconjunto) el subconjunto (10)
Continuamos el descenso hacia el nivel 8 donde la uacutenica actividad elegible es la 8 que
habiacutea sido desprogramada en el nivel 7 pero quedaba con el estado de elegible EL
punto donde termina la proacutexima actividad (la 10 que es la uacutenica en ejecucioacuten) es el fin
del periacuteodo 11 (o inicio del 12) y asiacute queda definido el nuevo nivel 8 con el tiempo
asociado 12 y el subconjunto (8)
55
Aquiacute el algoritmo avanza al nivel 9 y se detecta nuevamente la condicioacuten de que no
hay actividades en ejecucioacuten ni elegibles por lo que se tiene otra solucioacuten Se verifica
su makespan oacuteptimo que en este caso vuelve a ser 13 Como no es mejor que el
mejor hasta el momento se descarta Se inicia el retroceso en el aacuterbol y con esta forma
de avanzar y retroceder continuacutea el algoritmo hasta haber recorrido todas las
soluciones factibles permitidas por los niveles de vencimiento ya que como se habiacutea
mencionado antes el nuacutemero de soluciones en cada nivel estaacute acotado para darle
eficiencia al problema
56
6 EVALUACiOacuteN Y ANAacuteLISIS DE RESULTADOS
Para la evaluacioacuten de los resultados se utilizaron los 480 problemas de 30 actividades
y cuatro recursos a los cuales se les conoce la solucioacuten oacuteptima obtenidos de la
libreriacutea PSPLlB (Libreriacutea de problemas benchmark del tipo RCPSP usada por gran
cantidad de investigadores europeos en el tema (httpwwwbwlunishy
kieldeProdpsplib) creada por Kolisch R y A Sprecher)
La solucioacuten oacuteptima exacta de los 480 problemas se obtuvo con el algoritmo de
Demeulemeester and Herroelen del cual el AEM de este trabajo es una modificacioacuten
Cabe mencionar que aunque en la libreriacutea PSPLlB existen problemas de maacutes de 30
actividades a eacutestos no se les ha podido encontrar el oacuteptimo por ninguacuten algoritmo
exacto lo que justifica nuevamente el uso de algoritmos heuriacutesticos
Como siempre hay un compromiso entre la calidad de la solucioacuten y el tiempo
empleado para obtenerla donde a mayor tiempo de ejecucioacuten se obtiene una mejor
solucioacuten entonces se realizaron diferentes ejecuciones de cada uno de los tres
algoritmos para tener diferentes puntos de referencia Sin embargo como la forma en
que cada algoritmo controla el tiempo de ejecucioacuten (o tiempo de parada) es diferente
lo que se hace es controlar la parada del algoritmo seguacuten sus requerimientos
especiacuteficos con el fin de obtener el tiempo de ejecucioacuten con lo que se llega a una
medida estaacutendar para todos los algoritmos el tiempo de ejecucioacuten que los hace
comparables Por eso en las tablas que aparecen en el anaacutelisis de resultados
aparecen valores de tiempo vs calidad siendo el tiempo una consecuencia del criterio
de parada utilizado El paraacutemetro para medir la calidad es la desviacioacuten porcentual de
la solucioacuten obtenida respecto al oacuteptimo del problema que como ya se mencionoacute
anteriormente para los problemas de 30 actividades y 4 recursos utilizados en este
trabajo se conoce Asiacute por ej si el oacuteptimo exacto de un problema es 45 (unidades de
57
tiempo) y en una ejecucioacuten se llega a un oacuteptimo (heuriacutestico aproximado) de 47
entonces la desviacioacuten es (47-45)45 = 245 = 444
Como en la muestra de los 480 problemas existe una mezcla de problemas faacuteciles y
difiacuteciles (asiacute por ej es se sabe que los problemas del grupo 13 son los maacutes difiacuteciles en
tanto que los del grupo 2 son muy sencillos) y para evitar errores de redondeo la
desviacioacuten se calculoacute de la siguiente manera
SH (suma heuriacutestica) = suma de todas las soluciones oacuteptimas heuriacutesticas obtenidas
para los 480 problemas por el algoritmo en cuestioacuten
SE (suma exacta) = suma de todas las soluciones oacuteptimas conocidas para los 480
problemas obtenidas de la misma libreriacutea PSPLlB
Desviacioacuten = (SH - SE)SE (Esta foacutermula de desviacioacuten se utilizoacute para las tres
heuriacutesticas)
EL tiempo promedio se obtuvo como la suma acumulada de las duraciones de los 480
problemas dividiendo luego este valor por 480
Por los motivos expuestos y porque ademaacutes es equivalente a un promedio ponderado
se consideroacute mas conveniente esta expresioacuten para la desviacioacuten que alternativamente
calcular la desviacioacuten individual de cada uno de los problemas y luego obtener la
media de estas desviaciones para los 480 problemas
Por tanto los resultados en las tablas que aparecen a continuacioacuten siempre
corresponden al promedio de los 480 problemas nunca se obtuvieron tablas de
resultados para problemas individuales las cuales podriacutean llegar a ser de intereacutes si se
quisiera calcular la robustez del algoritmo por medio de la desviacioacuten estaacutendar u otra
medida Para el caacutelculo de tales promedios se anexaron a los algoritmos las
58
subrutinas que leiacutean los tiempos de inicio y finalizacioacuten acumulaban los tiempos de
ejecucioacuten y finalmente obteniacutean los promedios de tiempo y de desviacioacuten
61 RESULTADOS DE ENFRIAMIENTO SIMULADO (SA)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de SA desarrollado
mediante el algoritmo de la Figura 1 para diferentes valores del criterio de parada
tiempo de ejecucioacuten El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se ilustran en la
Tabla 3
Los progama fueron elaborados en lenguaje Visual-Basic y corridos en un procesador
de 2 MHz y 256 MB de memoria
TABLA 3 Resultados SA - 30 actividades
Desviacioacuten Tiempo (seg)
197 0169
169 0300
144 0582
114 1141
103 1689
095 2269
087 3398
068 8761
059 17387
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedia de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
59
62 RESULTADOS DE LA BUacuteSQUEDA TABUacute (TS)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de TS desarrollado
mediante el algoritmo de la Figura 2 para diferentes valores del criterio de parada
nuacutemero de iteraciones El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se muestran en
la Tabla 4
Los programas fueron elaborados en lenguaje Visual-Basic y corridos en un
procesador de 2 MHz y 256 MB de memoria
Tabla 4 Resultados TS - 30 actividades
Desviacioacuten Tiempo (seg)
208 0136
152 0301
118 0507
091 1023
082 1540
076 2062
068 3097
053 8227
046 15401
034 30719
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedio de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
60
63 RESULTADOS DEL ALGORITMO HEURiacuteSTICO MODIFICADO (AEM)
Como problemas de prueba se tomaron los mismos 480 problemas de 30 actividades
a los cuales se les conoce la solucioacuten oacuteptima de la libreriacutea PSPLlB libreriacutea de
problemas benchmark creada por Kolisch R y A Sprecher (http wwwbwlunishy
kiel deProdpsplib)
Los programas en este caso fueron elaborados en lenguaje Visual Foxpro y corridos
en un procesador de 17Mhz y 256 MB de memoria
A continuacioacuten se muestran seis tablas 5 6 7 8 9 10 Y 11 con los resultados
obtenidos variando algunos de los paraacutemetros descritos en 57
MS maacuteximo numero de subconjuntos por nivel
PNMI= miacutenimo nuacutemero de pasos por nivel
PNMA= maacuteximo nuacutemero de pasos por nivel
LI valor de LBRLBO por debajo del cual se utiliza PNMI
LS valor de LBR1LBO por encima del cual se utiliza PNMA
Desv desviacioacuten promedio respecto al oacuteptimo
TPO Tiempo promedio por problema en segundos
Tabla 5 con PNMI=1000 PNMA=50000 LI=07 LS= 11
MS Desv TPO
846 001
2 170 071
3 147 135
4 172 113
5 189 094
10 240 063
61
Tabla 6 con PNMI=2000 PNMA=100000 L1=07 LS= 11
MS Desv TPO
846 001
2 168 083
3 119 194
4 148 174
5 164 153
10 228 081
Tabla 7 con PNMI=10000 PNMA=500000 L1=07 LS= 11
MS Desv TPO
1 846 001
2 167 095
3 082 477
4 090 488
5 106 427
10 150 2 31
Tabla 8 con PNMI=1000 PNMA=100000 L1=05 LS= 10
MS Desv TPO
1 846 001
2 170 075
3 169 161
4 121 152
5 142 137
10 188 074
62
Tabla 9 con PNMI=2000 PNMA=200000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 169 087
3 101 245
4 108 222
5 122 193
10 171 101
Tabla 10 con PNMI=10000 PNMA=1000000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 167 096
3 077 600
4 080 544
5 085 475
10 125 269
Tabla 11 con PNMI=200 PNMA=10000 LI=05 LS= 12
MS Desv TPO
1 846 001
2 193 034
3 195 056
4 207 059
5 198 057
10 250 040
Aunque se observa poca sensibilidad a los paraacutemetros (PNMI PNMA J LS) es de
resaltar que la desviacioacuten decrece hasta llegar a un miacutenimo (en MS =3 o It1S =4)
donde empieza nuevamente a crecer debido a que el control de pasos por nivel evita
algunas buenas soluciones candidatas
63
Para MS=1 el algoritmo es equivalente a un meacutetodo constructivo y por eso se obtiene
la misma solucioacuten en todas las tablas
Con valores de PNMI menores se obtienen mejores resultados (igual desviacioacuten y
tiempos menores) ya que cuando los problemas son faacuteciles la buacutesqueda es menos
intensa Como caso extremo se muestra la Tabla 11 donde los problemas faacuteciles soacutelo
realizan 200 pasos por nivel (PNMI=200) aunque llegan al oacuteptimo
De las tablas anteriores se extractaron algunos tiempos comprendidos entre 193 y
082 buscando en la tabla donde se obtenga la mejor combinacioacuten calidad (desviacioacuten)
tiempo y los resultados se llevaron a una nueva tabla denominada tabla resumen
(Tabla 12) que aparece a continuacioacuten La tercera columna de la tabla resumen nos
indica de cual de las tablas originales se obtuvieron los respectivos datos
Tabla 12 resumen
Desv TPO De
Tabla
193 034 11
170 071 5
168 083 6
121 152 8
108 222 9
101 245 9
082 477 7
64 INTERFAZ DE EJECUCiOacuteN
Aunque el nuacutecleo del problema son los tres algoritmos desarrollados y su comparacioacuten
en cuanto a eficiencia sin embargo como dentro de los objetivos del trabajo se
encuentra el desarrollo de una herramienta computacional que implemente el
algoritmo desarrollado y construir un prototipo se disentildeoacute una interfaz para la entrada
de los datos y la lectura de los resultados que consta de un menuacute amigable y sencillo
de utilizar
64
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
El algoritmo recorre el aacuterbol en profundidad por lo que siempre desciende la primera
vez en el aacuterbol sin hacer backtracking y obtiene la primera solucioacuten factible que es la
descrita arriba Casualmente en este caso eacutesta es la solucioacuten oacuteptima Sin embargo
como se supone que no se conoce el oacuteptimo el algoritmo continuacutea la buacutesqueda en el
aacuterbol hasta haber recorrido todas las permutaciones factibles posibles
En este punto el algoritmo deberiacutea avanzar al nivel 9 y el punto de inicio seriacutea el
tiempo 14 (una unidad maacutes tarde de cuando termina la actividad 10 que es la uacutenica en
ejecucioacuten pero encuentra que en ese punto del tiempo no hay actividades elegibles ni
en ejecucioacuten lo que se interpreta como que se ha completado un programa (asiacute no
hay que llevar un contador de actividades para saber que se ha completado un
programa)
Entonces se inicia el retroceso en el aacuterbol En el nivel 8 soacutelo hay un subconjunto por lo
que retrocedemos nuevamente al nivel 7 En ese nivel existen dos subconjuntos (8) y
(10) Como el (8) fue el uacuteltimo seleccionado se escoge el subconjunto (10) Y se asocia
con el nivel Se realizan los caacutelculos necesarios para desactivar el subconjunto (8) y
activar el (10) Para ver en que consisten estos ajustes consultar el seudocoacutedigo del
algoritmo que aparece en el Anexo A Por ahora se estaacute describiendo solamente la
forma de recorrer el aacuterbol
Entonces el nivel 7 consiste ahora en iniciar en el punto 9 del tiempo (el mismo que se
teniacutea ya que lo que se cambia es el subconjunto) el subconjunto (10)
Continuamos el descenso hacia el nivel 8 donde la uacutenica actividad elegible es la 8 que
habiacutea sido desprogramada en el nivel 7 pero quedaba con el estado de elegible EL
punto donde termina la proacutexima actividad (la 10 que es la uacutenica en ejecucioacuten) es el fin
del periacuteodo 11 (o inicio del 12) y asiacute queda definido el nuevo nivel 8 con el tiempo
asociado 12 y el subconjunto (8)
55
Aquiacute el algoritmo avanza al nivel 9 y se detecta nuevamente la condicioacuten de que no
hay actividades en ejecucioacuten ni elegibles por lo que se tiene otra solucioacuten Se verifica
su makespan oacuteptimo que en este caso vuelve a ser 13 Como no es mejor que el
mejor hasta el momento se descarta Se inicia el retroceso en el aacuterbol y con esta forma
de avanzar y retroceder continuacutea el algoritmo hasta haber recorrido todas las
soluciones factibles permitidas por los niveles de vencimiento ya que como se habiacutea
mencionado antes el nuacutemero de soluciones en cada nivel estaacute acotado para darle
eficiencia al problema
56
6 EVALUACiOacuteN Y ANAacuteLISIS DE RESULTADOS
Para la evaluacioacuten de los resultados se utilizaron los 480 problemas de 30 actividades
y cuatro recursos a los cuales se les conoce la solucioacuten oacuteptima obtenidos de la
libreriacutea PSPLlB (Libreriacutea de problemas benchmark del tipo RCPSP usada por gran
cantidad de investigadores europeos en el tema (httpwwwbwlunishy
kieldeProdpsplib) creada por Kolisch R y A Sprecher)
La solucioacuten oacuteptima exacta de los 480 problemas se obtuvo con el algoritmo de
Demeulemeester and Herroelen del cual el AEM de este trabajo es una modificacioacuten
Cabe mencionar que aunque en la libreriacutea PSPLlB existen problemas de maacutes de 30
actividades a eacutestos no se les ha podido encontrar el oacuteptimo por ninguacuten algoritmo
exacto lo que justifica nuevamente el uso de algoritmos heuriacutesticos
Como siempre hay un compromiso entre la calidad de la solucioacuten y el tiempo
empleado para obtenerla donde a mayor tiempo de ejecucioacuten se obtiene una mejor
solucioacuten entonces se realizaron diferentes ejecuciones de cada uno de los tres
algoritmos para tener diferentes puntos de referencia Sin embargo como la forma en
que cada algoritmo controla el tiempo de ejecucioacuten (o tiempo de parada) es diferente
lo que se hace es controlar la parada del algoritmo seguacuten sus requerimientos
especiacuteficos con el fin de obtener el tiempo de ejecucioacuten con lo que se llega a una
medida estaacutendar para todos los algoritmos el tiempo de ejecucioacuten que los hace
comparables Por eso en las tablas que aparecen en el anaacutelisis de resultados
aparecen valores de tiempo vs calidad siendo el tiempo una consecuencia del criterio
de parada utilizado El paraacutemetro para medir la calidad es la desviacioacuten porcentual de
la solucioacuten obtenida respecto al oacuteptimo del problema que como ya se mencionoacute
anteriormente para los problemas de 30 actividades y 4 recursos utilizados en este
trabajo se conoce Asiacute por ej si el oacuteptimo exacto de un problema es 45 (unidades de
57
tiempo) y en una ejecucioacuten se llega a un oacuteptimo (heuriacutestico aproximado) de 47
entonces la desviacioacuten es (47-45)45 = 245 = 444
Como en la muestra de los 480 problemas existe una mezcla de problemas faacuteciles y
difiacuteciles (asiacute por ej es se sabe que los problemas del grupo 13 son los maacutes difiacuteciles en
tanto que los del grupo 2 son muy sencillos) y para evitar errores de redondeo la
desviacioacuten se calculoacute de la siguiente manera
SH (suma heuriacutestica) = suma de todas las soluciones oacuteptimas heuriacutesticas obtenidas
para los 480 problemas por el algoritmo en cuestioacuten
SE (suma exacta) = suma de todas las soluciones oacuteptimas conocidas para los 480
problemas obtenidas de la misma libreriacutea PSPLlB
Desviacioacuten = (SH - SE)SE (Esta foacutermula de desviacioacuten se utilizoacute para las tres
heuriacutesticas)
EL tiempo promedio se obtuvo como la suma acumulada de las duraciones de los 480
problemas dividiendo luego este valor por 480
Por los motivos expuestos y porque ademaacutes es equivalente a un promedio ponderado
se consideroacute mas conveniente esta expresioacuten para la desviacioacuten que alternativamente
calcular la desviacioacuten individual de cada uno de los problemas y luego obtener la
media de estas desviaciones para los 480 problemas
Por tanto los resultados en las tablas que aparecen a continuacioacuten siempre
corresponden al promedio de los 480 problemas nunca se obtuvieron tablas de
resultados para problemas individuales las cuales podriacutean llegar a ser de intereacutes si se
quisiera calcular la robustez del algoritmo por medio de la desviacioacuten estaacutendar u otra
medida Para el caacutelculo de tales promedios se anexaron a los algoritmos las
58
subrutinas que leiacutean los tiempos de inicio y finalizacioacuten acumulaban los tiempos de
ejecucioacuten y finalmente obteniacutean los promedios de tiempo y de desviacioacuten
61 RESULTADOS DE ENFRIAMIENTO SIMULADO (SA)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de SA desarrollado
mediante el algoritmo de la Figura 1 para diferentes valores del criterio de parada
tiempo de ejecucioacuten El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se ilustran en la
Tabla 3
Los progama fueron elaborados en lenguaje Visual-Basic y corridos en un procesador
de 2 MHz y 256 MB de memoria
TABLA 3 Resultados SA - 30 actividades
Desviacioacuten Tiempo (seg)
197 0169
169 0300
144 0582
114 1141
103 1689
095 2269
087 3398
068 8761
059 17387
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedia de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
59
62 RESULTADOS DE LA BUacuteSQUEDA TABUacute (TS)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de TS desarrollado
mediante el algoritmo de la Figura 2 para diferentes valores del criterio de parada
nuacutemero de iteraciones El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se muestran en
la Tabla 4
Los programas fueron elaborados en lenguaje Visual-Basic y corridos en un
procesador de 2 MHz y 256 MB de memoria
Tabla 4 Resultados TS - 30 actividades
Desviacioacuten Tiempo (seg)
208 0136
152 0301
118 0507
091 1023
082 1540
076 2062
068 3097
053 8227
046 15401
034 30719
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedio de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
60
63 RESULTADOS DEL ALGORITMO HEURiacuteSTICO MODIFICADO (AEM)
Como problemas de prueba se tomaron los mismos 480 problemas de 30 actividades
a los cuales se les conoce la solucioacuten oacuteptima de la libreriacutea PSPLlB libreriacutea de
problemas benchmark creada por Kolisch R y A Sprecher (http wwwbwlunishy
kiel deProdpsplib)
Los programas en este caso fueron elaborados en lenguaje Visual Foxpro y corridos
en un procesador de 17Mhz y 256 MB de memoria
A continuacioacuten se muestran seis tablas 5 6 7 8 9 10 Y 11 con los resultados
obtenidos variando algunos de los paraacutemetros descritos en 57
MS maacuteximo numero de subconjuntos por nivel
PNMI= miacutenimo nuacutemero de pasos por nivel
PNMA= maacuteximo nuacutemero de pasos por nivel
LI valor de LBRLBO por debajo del cual se utiliza PNMI
LS valor de LBR1LBO por encima del cual se utiliza PNMA
Desv desviacioacuten promedio respecto al oacuteptimo
TPO Tiempo promedio por problema en segundos
Tabla 5 con PNMI=1000 PNMA=50000 LI=07 LS= 11
MS Desv TPO
846 001
2 170 071
3 147 135
4 172 113
5 189 094
10 240 063
61
Tabla 6 con PNMI=2000 PNMA=100000 L1=07 LS= 11
MS Desv TPO
846 001
2 168 083
3 119 194
4 148 174
5 164 153
10 228 081
Tabla 7 con PNMI=10000 PNMA=500000 L1=07 LS= 11
MS Desv TPO
1 846 001
2 167 095
3 082 477
4 090 488
5 106 427
10 150 2 31
Tabla 8 con PNMI=1000 PNMA=100000 L1=05 LS= 10
MS Desv TPO
1 846 001
2 170 075
3 169 161
4 121 152
5 142 137
10 188 074
62
Tabla 9 con PNMI=2000 PNMA=200000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 169 087
3 101 245
4 108 222
5 122 193
10 171 101
Tabla 10 con PNMI=10000 PNMA=1000000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 167 096
3 077 600
4 080 544
5 085 475
10 125 269
Tabla 11 con PNMI=200 PNMA=10000 LI=05 LS= 12
MS Desv TPO
1 846 001
2 193 034
3 195 056
4 207 059
5 198 057
10 250 040
Aunque se observa poca sensibilidad a los paraacutemetros (PNMI PNMA J LS) es de
resaltar que la desviacioacuten decrece hasta llegar a un miacutenimo (en MS =3 o It1S =4)
donde empieza nuevamente a crecer debido a que el control de pasos por nivel evita
algunas buenas soluciones candidatas
63
Para MS=1 el algoritmo es equivalente a un meacutetodo constructivo y por eso se obtiene
la misma solucioacuten en todas las tablas
Con valores de PNMI menores se obtienen mejores resultados (igual desviacioacuten y
tiempos menores) ya que cuando los problemas son faacuteciles la buacutesqueda es menos
intensa Como caso extremo se muestra la Tabla 11 donde los problemas faacuteciles soacutelo
realizan 200 pasos por nivel (PNMI=200) aunque llegan al oacuteptimo
De las tablas anteriores se extractaron algunos tiempos comprendidos entre 193 y
082 buscando en la tabla donde se obtenga la mejor combinacioacuten calidad (desviacioacuten)
tiempo y los resultados se llevaron a una nueva tabla denominada tabla resumen
(Tabla 12) que aparece a continuacioacuten La tercera columna de la tabla resumen nos
indica de cual de las tablas originales se obtuvieron los respectivos datos
Tabla 12 resumen
Desv TPO De
Tabla
193 034 11
170 071 5
168 083 6
121 152 8
108 222 9
101 245 9
082 477 7
64 INTERFAZ DE EJECUCiOacuteN
Aunque el nuacutecleo del problema son los tres algoritmos desarrollados y su comparacioacuten
en cuanto a eficiencia sin embargo como dentro de los objetivos del trabajo se
encuentra el desarrollo de una herramienta computacional que implemente el
algoritmo desarrollado y construir un prototipo se disentildeoacute una interfaz para la entrada
de los datos y la lectura de los resultados que consta de un menuacute amigable y sencillo
de utilizar
64
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
Aquiacute el algoritmo avanza al nivel 9 y se detecta nuevamente la condicioacuten de que no
hay actividades en ejecucioacuten ni elegibles por lo que se tiene otra solucioacuten Se verifica
su makespan oacuteptimo que en este caso vuelve a ser 13 Como no es mejor que el
mejor hasta el momento se descarta Se inicia el retroceso en el aacuterbol y con esta forma
de avanzar y retroceder continuacutea el algoritmo hasta haber recorrido todas las
soluciones factibles permitidas por los niveles de vencimiento ya que como se habiacutea
mencionado antes el nuacutemero de soluciones en cada nivel estaacute acotado para darle
eficiencia al problema
56
6 EVALUACiOacuteN Y ANAacuteLISIS DE RESULTADOS
Para la evaluacioacuten de los resultados se utilizaron los 480 problemas de 30 actividades
y cuatro recursos a los cuales se les conoce la solucioacuten oacuteptima obtenidos de la
libreriacutea PSPLlB (Libreriacutea de problemas benchmark del tipo RCPSP usada por gran
cantidad de investigadores europeos en el tema (httpwwwbwlunishy
kieldeProdpsplib) creada por Kolisch R y A Sprecher)
La solucioacuten oacuteptima exacta de los 480 problemas se obtuvo con el algoritmo de
Demeulemeester and Herroelen del cual el AEM de este trabajo es una modificacioacuten
Cabe mencionar que aunque en la libreriacutea PSPLlB existen problemas de maacutes de 30
actividades a eacutestos no se les ha podido encontrar el oacuteptimo por ninguacuten algoritmo
exacto lo que justifica nuevamente el uso de algoritmos heuriacutesticos
Como siempre hay un compromiso entre la calidad de la solucioacuten y el tiempo
empleado para obtenerla donde a mayor tiempo de ejecucioacuten se obtiene una mejor
solucioacuten entonces se realizaron diferentes ejecuciones de cada uno de los tres
algoritmos para tener diferentes puntos de referencia Sin embargo como la forma en
que cada algoritmo controla el tiempo de ejecucioacuten (o tiempo de parada) es diferente
lo que se hace es controlar la parada del algoritmo seguacuten sus requerimientos
especiacuteficos con el fin de obtener el tiempo de ejecucioacuten con lo que se llega a una
medida estaacutendar para todos los algoritmos el tiempo de ejecucioacuten que los hace
comparables Por eso en las tablas que aparecen en el anaacutelisis de resultados
aparecen valores de tiempo vs calidad siendo el tiempo una consecuencia del criterio
de parada utilizado El paraacutemetro para medir la calidad es la desviacioacuten porcentual de
la solucioacuten obtenida respecto al oacuteptimo del problema que como ya se mencionoacute
anteriormente para los problemas de 30 actividades y 4 recursos utilizados en este
trabajo se conoce Asiacute por ej si el oacuteptimo exacto de un problema es 45 (unidades de
57
tiempo) y en una ejecucioacuten se llega a un oacuteptimo (heuriacutestico aproximado) de 47
entonces la desviacioacuten es (47-45)45 = 245 = 444
Como en la muestra de los 480 problemas existe una mezcla de problemas faacuteciles y
difiacuteciles (asiacute por ej es se sabe que los problemas del grupo 13 son los maacutes difiacuteciles en
tanto que los del grupo 2 son muy sencillos) y para evitar errores de redondeo la
desviacioacuten se calculoacute de la siguiente manera
SH (suma heuriacutestica) = suma de todas las soluciones oacuteptimas heuriacutesticas obtenidas
para los 480 problemas por el algoritmo en cuestioacuten
SE (suma exacta) = suma de todas las soluciones oacuteptimas conocidas para los 480
problemas obtenidas de la misma libreriacutea PSPLlB
Desviacioacuten = (SH - SE)SE (Esta foacutermula de desviacioacuten se utilizoacute para las tres
heuriacutesticas)
EL tiempo promedio se obtuvo como la suma acumulada de las duraciones de los 480
problemas dividiendo luego este valor por 480
Por los motivos expuestos y porque ademaacutes es equivalente a un promedio ponderado
se consideroacute mas conveniente esta expresioacuten para la desviacioacuten que alternativamente
calcular la desviacioacuten individual de cada uno de los problemas y luego obtener la
media de estas desviaciones para los 480 problemas
Por tanto los resultados en las tablas que aparecen a continuacioacuten siempre
corresponden al promedio de los 480 problemas nunca se obtuvieron tablas de
resultados para problemas individuales las cuales podriacutean llegar a ser de intereacutes si se
quisiera calcular la robustez del algoritmo por medio de la desviacioacuten estaacutendar u otra
medida Para el caacutelculo de tales promedios se anexaron a los algoritmos las
58
subrutinas que leiacutean los tiempos de inicio y finalizacioacuten acumulaban los tiempos de
ejecucioacuten y finalmente obteniacutean los promedios de tiempo y de desviacioacuten
61 RESULTADOS DE ENFRIAMIENTO SIMULADO (SA)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de SA desarrollado
mediante el algoritmo de la Figura 1 para diferentes valores del criterio de parada
tiempo de ejecucioacuten El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se ilustran en la
Tabla 3
Los progama fueron elaborados en lenguaje Visual-Basic y corridos en un procesador
de 2 MHz y 256 MB de memoria
TABLA 3 Resultados SA - 30 actividades
Desviacioacuten Tiempo (seg)
197 0169
169 0300
144 0582
114 1141
103 1689
095 2269
087 3398
068 8761
059 17387
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedia de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
59
62 RESULTADOS DE LA BUacuteSQUEDA TABUacute (TS)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de TS desarrollado
mediante el algoritmo de la Figura 2 para diferentes valores del criterio de parada
nuacutemero de iteraciones El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se muestran en
la Tabla 4
Los programas fueron elaborados en lenguaje Visual-Basic y corridos en un
procesador de 2 MHz y 256 MB de memoria
Tabla 4 Resultados TS - 30 actividades
Desviacioacuten Tiempo (seg)
208 0136
152 0301
118 0507
091 1023
082 1540
076 2062
068 3097
053 8227
046 15401
034 30719
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedio de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
60
63 RESULTADOS DEL ALGORITMO HEURiacuteSTICO MODIFICADO (AEM)
Como problemas de prueba se tomaron los mismos 480 problemas de 30 actividades
a los cuales se les conoce la solucioacuten oacuteptima de la libreriacutea PSPLlB libreriacutea de
problemas benchmark creada por Kolisch R y A Sprecher (http wwwbwlunishy
kiel deProdpsplib)
Los programas en este caso fueron elaborados en lenguaje Visual Foxpro y corridos
en un procesador de 17Mhz y 256 MB de memoria
A continuacioacuten se muestran seis tablas 5 6 7 8 9 10 Y 11 con los resultados
obtenidos variando algunos de los paraacutemetros descritos en 57
MS maacuteximo numero de subconjuntos por nivel
PNMI= miacutenimo nuacutemero de pasos por nivel
PNMA= maacuteximo nuacutemero de pasos por nivel
LI valor de LBRLBO por debajo del cual se utiliza PNMI
LS valor de LBR1LBO por encima del cual se utiliza PNMA
Desv desviacioacuten promedio respecto al oacuteptimo
TPO Tiempo promedio por problema en segundos
Tabla 5 con PNMI=1000 PNMA=50000 LI=07 LS= 11
MS Desv TPO
846 001
2 170 071
3 147 135
4 172 113
5 189 094
10 240 063
61
Tabla 6 con PNMI=2000 PNMA=100000 L1=07 LS= 11
MS Desv TPO
846 001
2 168 083
3 119 194
4 148 174
5 164 153
10 228 081
Tabla 7 con PNMI=10000 PNMA=500000 L1=07 LS= 11
MS Desv TPO
1 846 001
2 167 095
3 082 477
4 090 488
5 106 427
10 150 2 31
Tabla 8 con PNMI=1000 PNMA=100000 L1=05 LS= 10
MS Desv TPO
1 846 001
2 170 075
3 169 161
4 121 152
5 142 137
10 188 074
62
Tabla 9 con PNMI=2000 PNMA=200000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 169 087
3 101 245
4 108 222
5 122 193
10 171 101
Tabla 10 con PNMI=10000 PNMA=1000000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 167 096
3 077 600
4 080 544
5 085 475
10 125 269
Tabla 11 con PNMI=200 PNMA=10000 LI=05 LS= 12
MS Desv TPO
1 846 001
2 193 034
3 195 056
4 207 059
5 198 057
10 250 040
Aunque se observa poca sensibilidad a los paraacutemetros (PNMI PNMA J LS) es de
resaltar que la desviacioacuten decrece hasta llegar a un miacutenimo (en MS =3 o It1S =4)
donde empieza nuevamente a crecer debido a que el control de pasos por nivel evita
algunas buenas soluciones candidatas
63
Para MS=1 el algoritmo es equivalente a un meacutetodo constructivo y por eso se obtiene
la misma solucioacuten en todas las tablas
Con valores de PNMI menores se obtienen mejores resultados (igual desviacioacuten y
tiempos menores) ya que cuando los problemas son faacuteciles la buacutesqueda es menos
intensa Como caso extremo se muestra la Tabla 11 donde los problemas faacuteciles soacutelo
realizan 200 pasos por nivel (PNMI=200) aunque llegan al oacuteptimo
De las tablas anteriores se extractaron algunos tiempos comprendidos entre 193 y
082 buscando en la tabla donde se obtenga la mejor combinacioacuten calidad (desviacioacuten)
tiempo y los resultados se llevaron a una nueva tabla denominada tabla resumen
(Tabla 12) que aparece a continuacioacuten La tercera columna de la tabla resumen nos
indica de cual de las tablas originales se obtuvieron los respectivos datos
Tabla 12 resumen
Desv TPO De
Tabla
193 034 11
170 071 5
168 083 6
121 152 8
108 222 9
101 245 9
082 477 7
64 INTERFAZ DE EJECUCiOacuteN
Aunque el nuacutecleo del problema son los tres algoritmos desarrollados y su comparacioacuten
en cuanto a eficiencia sin embargo como dentro de los objetivos del trabajo se
encuentra el desarrollo de una herramienta computacional que implemente el
algoritmo desarrollado y construir un prototipo se disentildeoacute una interfaz para la entrada
de los datos y la lectura de los resultados que consta de un menuacute amigable y sencillo
de utilizar
64
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
6 EVALUACiOacuteN Y ANAacuteLISIS DE RESULTADOS
Para la evaluacioacuten de los resultados se utilizaron los 480 problemas de 30 actividades
y cuatro recursos a los cuales se les conoce la solucioacuten oacuteptima obtenidos de la
libreriacutea PSPLlB (Libreriacutea de problemas benchmark del tipo RCPSP usada por gran
cantidad de investigadores europeos en el tema (httpwwwbwlunishy
kieldeProdpsplib) creada por Kolisch R y A Sprecher)
La solucioacuten oacuteptima exacta de los 480 problemas se obtuvo con el algoritmo de
Demeulemeester and Herroelen del cual el AEM de este trabajo es una modificacioacuten
Cabe mencionar que aunque en la libreriacutea PSPLlB existen problemas de maacutes de 30
actividades a eacutestos no se les ha podido encontrar el oacuteptimo por ninguacuten algoritmo
exacto lo que justifica nuevamente el uso de algoritmos heuriacutesticos
Como siempre hay un compromiso entre la calidad de la solucioacuten y el tiempo
empleado para obtenerla donde a mayor tiempo de ejecucioacuten se obtiene una mejor
solucioacuten entonces se realizaron diferentes ejecuciones de cada uno de los tres
algoritmos para tener diferentes puntos de referencia Sin embargo como la forma en
que cada algoritmo controla el tiempo de ejecucioacuten (o tiempo de parada) es diferente
lo que se hace es controlar la parada del algoritmo seguacuten sus requerimientos
especiacuteficos con el fin de obtener el tiempo de ejecucioacuten con lo que se llega a una
medida estaacutendar para todos los algoritmos el tiempo de ejecucioacuten que los hace
comparables Por eso en las tablas que aparecen en el anaacutelisis de resultados
aparecen valores de tiempo vs calidad siendo el tiempo una consecuencia del criterio
de parada utilizado El paraacutemetro para medir la calidad es la desviacioacuten porcentual de
la solucioacuten obtenida respecto al oacuteptimo del problema que como ya se mencionoacute
anteriormente para los problemas de 30 actividades y 4 recursos utilizados en este
trabajo se conoce Asiacute por ej si el oacuteptimo exacto de un problema es 45 (unidades de
57
tiempo) y en una ejecucioacuten se llega a un oacuteptimo (heuriacutestico aproximado) de 47
entonces la desviacioacuten es (47-45)45 = 245 = 444
Como en la muestra de los 480 problemas existe una mezcla de problemas faacuteciles y
difiacuteciles (asiacute por ej es se sabe que los problemas del grupo 13 son los maacutes difiacuteciles en
tanto que los del grupo 2 son muy sencillos) y para evitar errores de redondeo la
desviacioacuten se calculoacute de la siguiente manera
SH (suma heuriacutestica) = suma de todas las soluciones oacuteptimas heuriacutesticas obtenidas
para los 480 problemas por el algoritmo en cuestioacuten
SE (suma exacta) = suma de todas las soluciones oacuteptimas conocidas para los 480
problemas obtenidas de la misma libreriacutea PSPLlB
Desviacioacuten = (SH - SE)SE (Esta foacutermula de desviacioacuten se utilizoacute para las tres
heuriacutesticas)
EL tiempo promedio se obtuvo como la suma acumulada de las duraciones de los 480
problemas dividiendo luego este valor por 480
Por los motivos expuestos y porque ademaacutes es equivalente a un promedio ponderado
se consideroacute mas conveniente esta expresioacuten para la desviacioacuten que alternativamente
calcular la desviacioacuten individual de cada uno de los problemas y luego obtener la
media de estas desviaciones para los 480 problemas
Por tanto los resultados en las tablas que aparecen a continuacioacuten siempre
corresponden al promedio de los 480 problemas nunca se obtuvieron tablas de
resultados para problemas individuales las cuales podriacutean llegar a ser de intereacutes si se
quisiera calcular la robustez del algoritmo por medio de la desviacioacuten estaacutendar u otra
medida Para el caacutelculo de tales promedios se anexaron a los algoritmos las
58
subrutinas que leiacutean los tiempos de inicio y finalizacioacuten acumulaban los tiempos de
ejecucioacuten y finalmente obteniacutean los promedios de tiempo y de desviacioacuten
61 RESULTADOS DE ENFRIAMIENTO SIMULADO (SA)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de SA desarrollado
mediante el algoritmo de la Figura 1 para diferentes valores del criterio de parada
tiempo de ejecucioacuten El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se ilustran en la
Tabla 3
Los progama fueron elaborados en lenguaje Visual-Basic y corridos en un procesador
de 2 MHz y 256 MB de memoria
TABLA 3 Resultados SA - 30 actividades
Desviacioacuten Tiempo (seg)
197 0169
169 0300
144 0582
114 1141
103 1689
095 2269
087 3398
068 8761
059 17387
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedia de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
59
62 RESULTADOS DE LA BUacuteSQUEDA TABUacute (TS)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de TS desarrollado
mediante el algoritmo de la Figura 2 para diferentes valores del criterio de parada
nuacutemero de iteraciones El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se muestran en
la Tabla 4
Los programas fueron elaborados en lenguaje Visual-Basic y corridos en un
procesador de 2 MHz y 256 MB de memoria
Tabla 4 Resultados TS - 30 actividades
Desviacioacuten Tiempo (seg)
208 0136
152 0301
118 0507
091 1023
082 1540
076 2062
068 3097
053 8227
046 15401
034 30719
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedio de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
60
63 RESULTADOS DEL ALGORITMO HEURiacuteSTICO MODIFICADO (AEM)
Como problemas de prueba se tomaron los mismos 480 problemas de 30 actividades
a los cuales se les conoce la solucioacuten oacuteptima de la libreriacutea PSPLlB libreriacutea de
problemas benchmark creada por Kolisch R y A Sprecher (http wwwbwlunishy
kiel deProdpsplib)
Los programas en este caso fueron elaborados en lenguaje Visual Foxpro y corridos
en un procesador de 17Mhz y 256 MB de memoria
A continuacioacuten se muestran seis tablas 5 6 7 8 9 10 Y 11 con los resultados
obtenidos variando algunos de los paraacutemetros descritos en 57
MS maacuteximo numero de subconjuntos por nivel
PNMI= miacutenimo nuacutemero de pasos por nivel
PNMA= maacuteximo nuacutemero de pasos por nivel
LI valor de LBRLBO por debajo del cual se utiliza PNMI
LS valor de LBR1LBO por encima del cual se utiliza PNMA
Desv desviacioacuten promedio respecto al oacuteptimo
TPO Tiempo promedio por problema en segundos
Tabla 5 con PNMI=1000 PNMA=50000 LI=07 LS= 11
MS Desv TPO
846 001
2 170 071
3 147 135
4 172 113
5 189 094
10 240 063
61
Tabla 6 con PNMI=2000 PNMA=100000 L1=07 LS= 11
MS Desv TPO
846 001
2 168 083
3 119 194
4 148 174
5 164 153
10 228 081
Tabla 7 con PNMI=10000 PNMA=500000 L1=07 LS= 11
MS Desv TPO
1 846 001
2 167 095
3 082 477
4 090 488
5 106 427
10 150 2 31
Tabla 8 con PNMI=1000 PNMA=100000 L1=05 LS= 10
MS Desv TPO
1 846 001
2 170 075
3 169 161
4 121 152
5 142 137
10 188 074
62
Tabla 9 con PNMI=2000 PNMA=200000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 169 087
3 101 245
4 108 222
5 122 193
10 171 101
Tabla 10 con PNMI=10000 PNMA=1000000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 167 096
3 077 600
4 080 544
5 085 475
10 125 269
Tabla 11 con PNMI=200 PNMA=10000 LI=05 LS= 12
MS Desv TPO
1 846 001
2 193 034
3 195 056
4 207 059
5 198 057
10 250 040
Aunque se observa poca sensibilidad a los paraacutemetros (PNMI PNMA J LS) es de
resaltar que la desviacioacuten decrece hasta llegar a un miacutenimo (en MS =3 o It1S =4)
donde empieza nuevamente a crecer debido a que el control de pasos por nivel evita
algunas buenas soluciones candidatas
63
Para MS=1 el algoritmo es equivalente a un meacutetodo constructivo y por eso se obtiene
la misma solucioacuten en todas las tablas
Con valores de PNMI menores se obtienen mejores resultados (igual desviacioacuten y
tiempos menores) ya que cuando los problemas son faacuteciles la buacutesqueda es menos
intensa Como caso extremo se muestra la Tabla 11 donde los problemas faacuteciles soacutelo
realizan 200 pasos por nivel (PNMI=200) aunque llegan al oacuteptimo
De las tablas anteriores se extractaron algunos tiempos comprendidos entre 193 y
082 buscando en la tabla donde se obtenga la mejor combinacioacuten calidad (desviacioacuten)
tiempo y los resultados se llevaron a una nueva tabla denominada tabla resumen
(Tabla 12) que aparece a continuacioacuten La tercera columna de la tabla resumen nos
indica de cual de las tablas originales se obtuvieron los respectivos datos
Tabla 12 resumen
Desv TPO De
Tabla
193 034 11
170 071 5
168 083 6
121 152 8
108 222 9
101 245 9
082 477 7
64 INTERFAZ DE EJECUCiOacuteN
Aunque el nuacutecleo del problema son los tres algoritmos desarrollados y su comparacioacuten
en cuanto a eficiencia sin embargo como dentro de los objetivos del trabajo se
encuentra el desarrollo de una herramienta computacional que implemente el
algoritmo desarrollado y construir un prototipo se disentildeoacute una interfaz para la entrada
de los datos y la lectura de los resultados que consta de un menuacute amigable y sencillo
de utilizar
64
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
tiempo) y en una ejecucioacuten se llega a un oacuteptimo (heuriacutestico aproximado) de 47
entonces la desviacioacuten es (47-45)45 = 245 = 444
Como en la muestra de los 480 problemas existe una mezcla de problemas faacuteciles y
difiacuteciles (asiacute por ej es se sabe que los problemas del grupo 13 son los maacutes difiacuteciles en
tanto que los del grupo 2 son muy sencillos) y para evitar errores de redondeo la
desviacioacuten se calculoacute de la siguiente manera
SH (suma heuriacutestica) = suma de todas las soluciones oacuteptimas heuriacutesticas obtenidas
para los 480 problemas por el algoritmo en cuestioacuten
SE (suma exacta) = suma de todas las soluciones oacuteptimas conocidas para los 480
problemas obtenidas de la misma libreriacutea PSPLlB
Desviacioacuten = (SH - SE)SE (Esta foacutermula de desviacioacuten se utilizoacute para las tres
heuriacutesticas)
EL tiempo promedio se obtuvo como la suma acumulada de las duraciones de los 480
problemas dividiendo luego este valor por 480
Por los motivos expuestos y porque ademaacutes es equivalente a un promedio ponderado
se consideroacute mas conveniente esta expresioacuten para la desviacioacuten que alternativamente
calcular la desviacioacuten individual de cada uno de los problemas y luego obtener la
media de estas desviaciones para los 480 problemas
Por tanto los resultados en las tablas que aparecen a continuacioacuten siempre
corresponden al promedio de los 480 problemas nunca se obtuvieron tablas de
resultados para problemas individuales las cuales podriacutean llegar a ser de intereacutes si se
quisiera calcular la robustez del algoritmo por medio de la desviacioacuten estaacutendar u otra
medida Para el caacutelculo de tales promedios se anexaron a los algoritmos las
58
subrutinas que leiacutean los tiempos de inicio y finalizacioacuten acumulaban los tiempos de
ejecucioacuten y finalmente obteniacutean los promedios de tiempo y de desviacioacuten
61 RESULTADOS DE ENFRIAMIENTO SIMULADO (SA)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de SA desarrollado
mediante el algoritmo de la Figura 1 para diferentes valores del criterio de parada
tiempo de ejecucioacuten El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se ilustran en la
Tabla 3
Los progama fueron elaborados en lenguaje Visual-Basic y corridos en un procesador
de 2 MHz y 256 MB de memoria
TABLA 3 Resultados SA - 30 actividades
Desviacioacuten Tiempo (seg)
197 0169
169 0300
144 0582
114 1141
103 1689
095 2269
087 3398
068 8761
059 17387
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedia de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
59
62 RESULTADOS DE LA BUacuteSQUEDA TABUacute (TS)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de TS desarrollado
mediante el algoritmo de la Figura 2 para diferentes valores del criterio de parada
nuacutemero de iteraciones El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se muestran en
la Tabla 4
Los programas fueron elaborados en lenguaje Visual-Basic y corridos en un
procesador de 2 MHz y 256 MB de memoria
Tabla 4 Resultados TS - 30 actividades
Desviacioacuten Tiempo (seg)
208 0136
152 0301
118 0507
091 1023
082 1540
076 2062
068 3097
053 8227
046 15401
034 30719
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedio de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
60
63 RESULTADOS DEL ALGORITMO HEURiacuteSTICO MODIFICADO (AEM)
Como problemas de prueba se tomaron los mismos 480 problemas de 30 actividades
a los cuales se les conoce la solucioacuten oacuteptima de la libreriacutea PSPLlB libreriacutea de
problemas benchmark creada por Kolisch R y A Sprecher (http wwwbwlunishy
kiel deProdpsplib)
Los programas en este caso fueron elaborados en lenguaje Visual Foxpro y corridos
en un procesador de 17Mhz y 256 MB de memoria
A continuacioacuten se muestran seis tablas 5 6 7 8 9 10 Y 11 con los resultados
obtenidos variando algunos de los paraacutemetros descritos en 57
MS maacuteximo numero de subconjuntos por nivel
PNMI= miacutenimo nuacutemero de pasos por nivel
PNMA= maacuteximo nuacutemero de pasos por nivel
LI valor de LBRLBO por debajo del cual se utiliza PNMI
LS valor de LBR1LBO por encima del cual se utiliza PNMA
Desv desviacioacuten promedio respecto al oacuteptimo
TPO Tiempo promedio por problema en segundos
Tabla 5 con PNMI=1000 PNMA=50000 LI=07 LS= 11
MS Desv TPO
846 001
2 170 071
3 147 135
4 172 113
5 189 094
10 240 063
61
Tabla 6 con PNMI=2000 PNMA=100000 L1=07 LS= 11
MS Desv TPO
846 001
2 168 083
3 119 194
4 148 174
5 164 153
10 228 081
Tabla 7 con PNMI=10000 PNMA=500000 L1=07 LS= 11
MS Desv TPO
1 846 001
2 167 095
3 082 477
4 090 488
5 106 427
10 150 2 31
Tabla 8 con PNMI=1000 PNMA=100000 L1=05 LS= 10
MS Desv TPO
1 846 001
2 170 075
3 169 161
4 121 152
5 142 137
10 188 074
62
Tabla 9 con PNMI=2000 PNMA=200000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 169 087
3 101 245
4 108 222
5 122 193
10 171 101
Tabla 10 con PNMI=10000 PNMA=1000000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 167 096
3 077 600
4 080 544
5 085 475
10 125 269
Tabla 11 con PNMI=200 PNMA=10000 LI=05 LS= 12
MS Desv TPO
1 846 001
2 193 034
3 195 056
4 207 059
5 198 057
10 250 040
Aunque se observa poca sensibilidad a los paraacutemetros (PNMI PNMA J LS) es de
resaltar que la desviacioacuten decrece hasta llegar a un miacutenimo (en MS =3 o It1S =4)
donde empieza nuevamente a crecer debido a que el control de pasos por nivel evita
algunas buenas soluciones candidatas
63
Para MS=1 el algoritmo es equivalente a un meacutetodo constructivo y por eso se obtiene
la misma solucioacuten en todas las tablas
Con valores de PNMI menores se obtienen mejores resultados (igual desviacioacuten y
tiempos menores) ya que cuando los problemas son faacuteciles la buacutesqueda es menos
intensa Como caso extremo se muestra la Tabla 11 donde los problemas faacuteciles soacutelo
realizan 200 pasos por nivel (PNMI=200) aunque llegan al oacuteptimo
De las tablas anteriores se extractaron algunos tiempos comprendidos entre 193 y
082 buscando en la tabla donde se obtenga la mejor combinacioacuten calidad (desviacioacuten)
tiempo y los resultados se llevaron a una nueva tabla denominada tabla resumen
(Tabla 12) que aparece a continuacioacuten La tercera columna de la tabla resumen nos
indica de cual de las tablas originales se obtuvieron los respectivos datos
Tabla 12 resumen
Desv TPO De
Tabla
193 034 11
170 071 5
168 083 6
121 152 8
108 222 9
101 245 9
082 477 7
64 INTERFAZ DE EJECUCiOacuteN
Aunque el nuacutecleo del problema son los tres algoritmos desarrollados y su comparacioacuten
en cuanto a eficiencia sin embargo como dentro de los objetivos del trabajo se
encuentra el desarrollo de una herramienta computacional que implemente el
algoritmo desarrollado y construir un prototipo se disentildeoacute una interfaz para la entrada
de los datos y la lectura de los resultados que consta de un menuacute amigable y sencillo
de utilizar
64
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
subrutinas que leiacutean los tiempos de inicio y finalizacioacuten acumulaban los tiempos de
ejecucioacuten y finalmente obteniacutean los promedios de tiempo y de desviacioacuten
61 RESULTADOS DE ENFRIAMIENTO SIMULADO (SA)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de SA desarrollado
mediante el algoritmo de la Figura 1 para diferentes valores del criterio de parada
tiempo de ejecucioacuten El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se ilustran en la
Tabla 3
Los progama fueron elaborados en lenguaje Visual-Basic y corridos en un procesador
de 2 MHz y 256 MB de memoria
TABLA 3 Resultados SA - 30 actividades
Desviacioacuten Tiempo (seg)
197 0169
169 0300
144 0582
114 1141
103 1689
095 2269
087 3398
068 8761
059 17387
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedia de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
59
62 RESULTADOS DE LA BUacuteSQUEDA TABUacute (TS)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de TS desarrollado
mediante el algoritmo de la Figura 2 para diferentes valores del criterio de parada
nuacutemero de iteraciones El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se muestran en
la Tabla 4
Los programas fueron elaborados en lenguaje Visual-Basic y corridos en un
procesador de 2 MHz y 256 MB de memoria
Tabla 4 Resultados TS - 30 actividades
Desviacioacuten Tiempo (seg)
208 0136
152 0301
118 0507
091 1023
082 1540
076 2062
068 3097
053 8227
046 15401
034 30719
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedio de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
60
63 RESULTADOS DEL ALGORITMO HEURiacuteSTICO MODIFICADO (AEM)
Como problemas de prueba se tomaron los mismos 480 problemas de 30 actividades
a los cuales se les conoce la solucioacuten oacuteptima de la libreriacutea PSPLlB libreriacutea de
problemas benchmark creada por Kolisch R y A Sprecher (http wwwbwlunishy
kiel deProdpsplib)
Los programas en este caso fueron elaborados en lenguaje Visual Foxpro y corridos
en un procesador de 17Mhz y 256 MB de memoria
A continuacioacuten se muestran seis tablas 5 6 7 8 9 10 Y 11 con los resultados
obtenidos variando algunos de los paraacutemetros descritos en 57
MS maacuteximo numero de subconjuntos por nivel
PNMI= miacutenimo nuacutemero de pasos por nivel
PNMA= maacuteximo nuacutemero de pasos por nivel
LI valor de LBRLBO por debajo del cual se utiliza PNMI
LS valor de LBR1LBO por encima del cual se utiliza PNMA
Desv desviacioacuten promedio respecto al oacuteptimo
TPO Tiempo promedio por problema en segundos
Tabla 5 con PNMI=1000 PNMA=50000 LI=07 LS= 11
MS Desv TPO
846 001
2 170 071
3 147 135
4 172 113
5 189 094
10 240 063
61
Tabla 6 con PNMI=2000 PNMA=100000 L1=07 LS= 11
MS Desv TPO
846 001
2 168 083
3 119 194
4 148 174
5 164 153
10 228 081
Tabla 7 con PNMI=10000 PNMA=500000 L1=07 LS= 11
MS Desv TPO
1 846 001
2 167 095
3 082 477
4 090 488
5 106 427
10 150 2 31
Tabla 8 con PNMI=1000 PNMA=100000 L1=05 LS= 10
MS Desv TPO
1 846 001
2 170 075
3 169 161
4 121 152
5 142 137
10 188 074
62
Tabla 9 con PNMI=2000 PNMA=200000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 169 087
3 101 245
4 108 222
5 122 193
10 171 101
Tabla 10 con PNMI=10000 PNMA=1000000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 167 096
3 077 600
4 080 544
5 085 475
10 125 269
Tabla 11 con PNMI=200 PNMA=10000 LI=05 LS= 12
MS Desv TPO
1 846 001
2 193 034
3 195 056
4 207 059
5 198 057
10 250 040
Aunque se observa poca sensibilidad a los paraacutemetros (PNMI PNMA J LS) es de
resaltar que la desviacioacuten decrece hasta llegar a un miacutenimo (en MS =3 o It1S =4)
donde empieza nuevamente a crecer debido a que el control de pasos por nivel evita
algunas buenas soluciones candidatas
63
Para MS=1 el algoritmo es equivalente a un meacutetodo constructivo y por eso se obtiene
la misma solucioacuten en todas las tablas
Con valores de PNMI menores se obtienen mejores resultados (igual desviacioacuten y
tiempos menores) ya que cuando los problemas son faacuteciles la buacutesqueda es menos
intensa Como caso extremo se muestra la Tabla 11 donde los problemas faacuteciles soacutelo
realizan 200 pasos por nivel (PNMI=200) aunque llegan al oacuteptimo
De las tablas anteriores se extractaron algunos tiempos comprendidos entre 193 y
082 buscando en la tabla donde se obtenga la mejor combinacioacuten calidad (desviacioacuten)
tiempo y los resultados se llevaron a una nueva tabla denominada tabla resumen
(Tabla 12) que aparece a continuacioacuten La tercera columna de la tabla resumen nos
indica de cual de las tablas originales se obtuvieron los respectivos datos
Tabla 12 resumen
Desv TPO De
Tabla
193 034 11
170 071 5
168 083 6
121 152 8
108 222 9
101 245 9
082 477 7
64 INTERFAZ DE EJECUCiOacuteN
Aunque el nuacutecleo del problema son los tres algoritmos desarrollados y su comparacioacuten
en cuanto a eficiencia sin embargo como dentro de los objetivos del trabajo se
encuentra el desarrollo de una herramienta computacional que implemente el
algoritmo desarrollado y construir un prototipo se disentildeoacute una interfaz para la entrada
de los datos y la lectura de los resultados que consta de un menuacute amigable y sencillo
de utilizar
64
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
62 RESULTADOS DE LA BUacuteSQUEDA TABUacute (TS)
Para la evaluacioacuten de esta heuriacutestica se ejecutoacute el programa de TS desarrollado
mediante el algoritmo de la Figura 2 para diferentes valores del criterio de parada
nuacutemero de iteraciones El programa se corrioacute (para los 480 problemas de 30
actividades) en plataforma Visual Basic 60 Los resultados obtenidos se muestran en
la Tabla 4
Los programas fueron elaborados en lenguaje Visual-Basic y corridos en un
procesador de 2 MHz y 256 MB de memoria
Tabla 4 Resultados TS - 30 actividades
Desviacioacuten Tiempo (seg)
208 0136
152 0301
118 0507
091 1023
082 1540
076 2062
068 3097
053 8227
046 15401
034 30719
Tiempo Tiempo promedio de ejecucioacuten de los 480 problemas
Desviacioacuten Desviacioacuten promedio de la mejor solucioacuten hallada por el algoritmo
respecto a la solucioacuten oacuteptima de cada uno de los 480 problemas
60
63 RESULTADOS DEL ALGORITMO HEURiacuteSTICO MODIFICADO (AEM)
Como problemas de prueba se tomaron los mismos 480 problemas de 30 actividades
a los cuales se les conoce la solucioacuten oacuteptima de la libreriacutea PSPLlB libreriacutea de
problemas benchmark creada por Kolisch R y A Sprecher (http wwwbwlunishy
kiel deProdpsplib)
Los programas en este caso fueron elaborados en lenguaje Visual Foxpro y corridos
en un procesador de 17Mhz y 256 MB de memoria
A continuacioacuten se muestran seis tablas 5 6 7 8 9 10 Y 11 con los resultados
obtenidos variando algunos de los paraacutemetros descritos en 57
MS maacuteximo numero de subconjuntos por nivel
PNMI= miacutenimo nuacutemero de pasos por nivel
PNMA= maacuteximo nuacutemero de pasos por nivel
LI valor de LBRLBO por debajo del cual se utiliza PNMI
LS valor de LBR1LBO por encima del cual se utiliza PNMA
Desv desviacioacuten promedio respecto al oacuteptimo
TPO Tiempo promedio por problema en segundos
Tabla 5 con PNMI=1000 PNMA=50000 LI=07 LS= 11
MS Desv TPO
846 001
2 170 071
3 147 135
4 172 113
5 189 094
10 240 063
61
Tabla 6 con PNMI=2000 PNMA=100000 L1=07 LS= 11
MS Desv TPO
846 001
2 168 083
3 119 194
4 148 174
5 164 153
10 228 081
Tabla 7 con PNMI=10000 PNMA=500000 L1=07 LS= 11
MS Desv TPO
1 846 001
2 167 095
3 082 477
4 090 488
5 106 427
10 150 2 31
Tabla 8 con PNMI=1000 PNMA=100000 L1=05 LS= 10
MS Desv TPO
1 846 001
2 170 075
3 169 161
4 121 152
5 142 137
10 188 074
62
Tabla 9 con PNMI=2000 PNMA=200000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 169 087
3 101 245
4 108 222
5 122 193
10 171 101
Tabla 10 con PNMI=10000 PNMA=1000000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 167 096
3 077 600
4 080 544
5 085 475
10 125 269
Tabla 11 con PNMI=200 PNMA=10000 LI=05 LS= 12
MS Desv TPO
1 846 001
2 193 034
3 195 056
4 207 059
5 198 057
10 250 040
Aunque se observa poca sensibilidad a los paraacutemetros (PNMI PNMA J LS) es de
resaltar que la desviacioacuten decrece hasta llegar a un miacutenimo (en MS =3 o It1S =4)
donde empieza nuevamente a crecer debido a que el control de pasos por nivel evita
algunas buenas soluciones candidatas
63
Para MS=1 el algoritmo es equivalente a un meacutetodo constructivo y por eso se obtiene
la misma solucioacuten en todas las tablas
Con valores de PNMI menores se obtienen mejores resultados (igual desviacioacuten y
tiempos menores) ya que cuando los problemas son faacuteciles la buacutesqueda es menos
intensa Como caso extremo se muestra la Tabla 11 donde los problemas faacuteciles soacutelo
realizan 200 pasos por nivel (PNMI=200) aunque llegan al oacuteptimo
De las tablas anteriores se extractaron algunos tiempos comprendidos entre 193 y
082 buscando en la tabla donde se obtenga la mejor combinacioacuten calidad (desviacioacuten)
tiempo y los resultados se llevaron a una nueva tabla denominada tabla resumen
(Tabla 12) que aparece a continuacioacuten La tercera columna de la tabla resumen nos
indica de cual de las tablas originales se obtuvieron los respectivos datos
Tabla 12 resumen
Desv TPO De
Tabla
193 034 11
170 071 5
168 083 6
121 152 8
108 222 9
101 245 9
082 477 7
64 INTERFAZ DE EJECUCiOacuteN
Aunque el nuacutecleo del problema son los tres algoritmos desarrollados y su comparacioacuten
en cuanto a eficiencia sin embargo como dentro de los objetivos del trabajo se
encuentra el desarrollo de una herramienta computacional que implemente el
algoritmo desarrollado y construir un prototipo se disentildeoacute una interfaz para la entrada
de los datos y la lectura de los resultados que consta de un menuacute amigable y sencillo
de utilizar
64
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
63 RESULTADOS DEL ALGORITMO HEURiacuteSTICO MODIFICADO (AEM)
Como problemas de prueba se tomaron los mismos 480 problemas de 30 actividades
a los cuales se les conoce la solucioacuten oacuteptima de la libreriacutea PSPLlB libreriacutea de
problemas benchmark creada por Kolisch R y A Sprecher (http wwwbwlunishy
kiel deProdpsplib)
Los programas en este caso fueron elaborados en lenguaje Visual Foxpro y corridos
en un procesador de 17Mhz y 256 MB de memoria
A continuacioacuten se muestran seis tablas 5 6 7 8 9 10 Y 11 con los resultados
obtenidos variando algunos de los paraacutemetros descritos en 57
MS maacuteximo numero de subconjuntos por nivel
PNMI= miacutenimo nuacutemero de pasos por nivel
PNMA= maacuteximo nuacutemero de pasos por nivel
LI valor de LBRLBO por debajo del cual se utiliza PNMI
LS valor de LBR1LBO por encima del cual se utiliza PNMA
Desv desviacioacuten promedio respecto al oacuteptimo
TPO Tiempo promedio por problema en segundos
Tabla 5 con PNMI=1000 PNMA=50000 LI=07 LS= 11
MS Desv TPO
846 001
2 170 071
3 147 135
4 172 113
5 189 094
10 240 063
61
Tabla 6 con PNMI=2000 PNMA=100000 L1=07 LS= 11
MS Desv TPO
846 001
2 168 083
3 119 194
4 148 174
5 164 153
10 228 081
Tabla 7 con PNMI=10000 PNMA=500000 L1=07 LS= 11
MS Desv TPO
1 846 001
2 167 095
3 082 477
4 090 488
5 106 427
10 150 2 31
Tabla 8 con PNMI=1000 PNMA=100000 L1=05 LS= 10
MS Desv TPO
1 846 001
2 170 075
3 169 161
4 121 152
5 142 137
10 188 074
62
Tabla 9 con PNMI=2000 PNMA=200000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 169 087
3 101 245
4 108 222
5 122 193
10 171 101
Tabla 10 con PNMI=10000 PNMA=1000000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 167 096
3 077 600
4 080 544
5 085 475
10 125 269
Tabla 11 con PNMI=200 PNMA=10000 LI=05 LS= 12
MS Desv TPO
1 846 001
2 193 034
3 195 056
4 207 059
5 198 057
10 250 040
Aunque se observa poca sensibilidad a los paraacutemetros (PNMI PNMA J LS) es de
resaltar que la desviacioacuten decrece hasta llegar a un miacutenimo (en MS =3 o It1S =4)
donde empieza nuevamente a crecer debido a que el control de pasos por nivel evita
algunas buenas soluciones candidatas
63
Para MS=1 el algoritmo es equivalente a un meacutetodo constructivo y por eso se obtiene
la misma solucioacuten en todas las tablas
Con valores de PNMI menores se obtienen mejores resultados (igual desviacioacuten y
tiempos menores) ya que cuando los problemas son faacuteciles la buacutesqueda es menos
intensa Como caso extremo se muestra la Tabla 11 donde los problemas faacuteciles soacutelo
realizan 200 pasos por nivel (PNMI=200) aunque llegan al oacuteptimo
De las tablas anteriores se extractaron algunos tiempos comprendidos entre 193 y
082 buscando en la tabla donde se obtenga la mejor combinacioacuten calidad (desviacioacuten)
tiempo y los resultados se llevaron a una nueva tabla denominada tabla resumen
(Tabla 12) que aparece a continuacioacuten La tercera columna de la tabla resumen nos
indica de cual de las tablas originales se obtuvieron los respectivos datos
Tabla 12 resumen
Desv TPO De
Tabla
193 034 11
170 071 5
168 083 6
121 152 8
108 222 9
101 245 9
082 477 7
64 INTERFAZ DE EJECUCiOacuteN
Aunque el nuacutecleo del problema son los tres algoritmos desarrollados y su comparacioacuten
en cuanto a eficiencia sin embargo como dentro de los objetivos del trabajo se
encuentra el desarrollo de una herramienta computacional que implemente el
algoritmo desarrollado y construir un prototipo se disentildeoacute una interfaz para la entrada
de los datos y la lectura de los resultados que consta de un menuacute amigable y sencillo
de utilizar
64
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
Tabla 6 con PNMI=2000 PNMA=100000 L1=07 LS= 11
MS Desv TPO
846 001
2 168 083
3 119 194
4 148 174
5 164 153
10 228 081
Tabla 7 con PNMI=10000 PNMA=500000 L1=07 LS= 11
MS Desv TPO
1 846 001
2 167 095
3 082 477
4 090 488
5 106 427
10 150 2 31
Tabla 8 con PNMI=1000 PNMA=100000 L1=05 LS= 10
MS Desv TPO
1 846 001
2 170 075
3 169 161
4 121 152
5 142 137
10 188 074
62
Tabla 9 con PNMI=2000 PNMA=200000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 169 087
3 101 245
4 108 222
5 122 193
10 171 101
Tabla 10 con PNMI=10000 PNMA=1000000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 167 096
3 077 600
4 080 544
5 085 475
10 125 269
Tabla 11 con PNMI=200 PNMA=10000 LI=05 LS= 12
MS Desv TPO
1 846 001
2 193 034
3 195 056
4 207 059
5 198 057
10 250 040
Aunque se observa poca sensibilidad a los paraacutemetros (PNMI PNMA J LS) es de
resaltar que la desviacioacuten decrece hasta llegar a un miacutenimo (en MS =3 o It1S =4)
donde empieza nuevamente a crecer debido a que el control de pasos por nivel evita
algunas buenas soluciones candidatas
63
Para MS=1 el algoritmo es equivalente a un meacutetodo constructivo y por eso se obtiene
la misma solucioacuten en todas las tablas
Con valores de PNMI menores se obtienen mejores resultados (igual desviacioacuten y
tiempos menores) ya que cuando los problemas son faacuteciles la buacutesqueda es menos
intensa Como caso extremo se muestra la Tabla 11 donde los problemas faacuteciles soacutelo
realizan 200 pasos por nivel (PNMI=200) aunque llegan al oacuteptimo
De las tablas anteriores se extractaron algunos tiempos comprendidos entre 193 y
082 buscando en la tabla donde se obtenga la mejor combinacioacuten calidad (desviacioacuten)
tiempo y los resultados se llevaron a una nueva tabla denominada tabla resumen
(Tabla 12) que aparece a continuacioacuten La tercera columna de la tabla resumen nos
indica de cual de las tablas originales se obtuvieron los respectivos datos
Tabla 12 resumen
Desv TPO De
Tabla
193 034 11
170 071 5
168 083 6
121 152 8
108 222 9
101 245 9
082 477 7
64 INTERFAZ DE EJECUCiOacuteN
Aunque el nuacutecleo del problema son los tres algoritmos desarrollados y su comparacioacuten
en cuanto a eficiencia sin embargo como dentro de los objetivos del trabajo se
encuentra el desarrollo de una herramienta computacional que implemente el
algoritmo desarrollado y construir un prototipo se disentildeoacute una interfaz para la entrada
de los datos y la lectura de los resultados que consta de un menuacute amigable y sencillo
de utilizar
64
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
Tabla 9 con PNMI=2000 PNMA=200000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 169 087
3 101 245
4 108 222
5 122 193
10 171 101
Tabla 10 con PNMI=10000 PNMA=1000000 LI=05 LS= 10
MS Desv TPO
1 846 001
2 167 096
3 077 600
4 080 544
5 085 475
10 125 269
Tabla 11 con PNMI=200 PNMA=10000 LI=05 LS= 12
MS Desv TPO
1 846 001
2 193 034
3 195 056
4 207 059
5 198 057
10 250 040
Aunque se observa poca sensibilidad a los paraacutemetros (PNMI PNMA J LS) es de
resaltar que la desviacioacuten decrece hasta llegar a un miacutenimo (en MS =3 o It1S =4)
donde empieza nuevamente a crecer debido a que el control de pasos por nivel evita
algunas buenas soluciones candidatas
63
Para MS=1 el algoritmo es equivalente a un meacutetodo constructivo y por eso se obtiene
la misma solucioacuten en todas las tablas
Con valores de PNMI menores se obtienen mejores resultados (igual desviacioacuten y
tiempos menores) ya que cuando los problemas son faacuteciles la buacutesqueda es menos
intensa Como caso extremo se muestra la Tabla 11 donde los problemas faacuteciles soacutelo
realizan 200 pasos por nivel (PNMI=200) aunque llegan al oacuteptimo
De las tablas anteriores se extractaron algunos tiempos comprendidos entre 193 y
082 buscando en la tabla donde se obtenga la mejor combinacioacuten calidad (desviacioacuten)
tiempo y los resultados se llevaron a una nueva tabla denominada tabla resumen
(Tabla 12) que aparece a continuacioacuten La tercera columna de la tabla resumen nos
indica de cual de las tablas originales se obtuvieron los respectivos datos
Tabla 12 resumen
Desv TPO De
Tabla
193 034 11
170 071 5
168 083 6
121 152 8
108 222 9
101 245 9
082 477 7
64 INTERFAZ DE EJECUCiOacuteN
Aunque el nuacutecleo del problema son los tres algoritmos desarrollados y su comparacioacuten
en cuanto a eficiencia sin embargo como dentro de los objetivos del trabajo se
encuentra el desarrollo de una herramienta computacional que implemente el
algoritmo desarrollado y construir un prototipo se disentildeoacute una interfaz para la entrada
de los datos y la lectura de los resultados que consta de un menuacute amigable y sencillo
de utilizar
64
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
Para MS=1 el algoritmo es equivalente a un meacutetodo constructivo y por eso se obtiene
la misma solucioacuten en todas las tablas
Con valores de PNMI menores se obtienen mejores resultados (igual desviacioacuten y
tiempos menores) ya que cuando los problemas son faacuteciles la buacutesqueda es menos
intensa Como caso extremo se muestra la Tabla 11 donde los problemas faacuteciles soacutelo
realizan 200 pasos por nivel (PNMI=200) aunque llegan al oacuteptimo
De las tablas anteriores se extractaron algunos tiempos comprendidos entre 193 y
082 buscando en la tabla donde se obtenga la mejor combinacioacuten calidad (desviacioacuten)
tiempo y los resultados se llevaron a una nueva tabla denominada tabla resumen
(Tabla 12) que aparece a continuacioacuten La tercera columna de la tabla resumen nos
indica de cual de las tablas originales se obtuvieron los respectivos datos
Tabla 12 resumen
Desv TPO De
Tabla
193 034 11
170 071 5
168 083 6
121 152 8
108 222 9
101 245 9
082 477 7
64 INTERFAZ DE EJECUCiOacuteN
Aunque el nuacutecleo del problema son los tres algoritmos desarrollados y su comparacioacuten
en cuanto a eficiencia sin embargo como dentro de los objetivos del trabajo se
encuentra el desarrollo de una herramienta computacional que implemente el
algoritmo desarrollado y construir un prototipo se disentildeoacute una interfaz para la entrada
de los datos y la lectura de los resultados que consta de un menuacute amigable y sencillo
de utilizar
64
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
Como no es el objetivo del trabajo la parte operativa del menuacute soacutelo se hace una
descripcioacuten muy breve de su utilizacioacuten aunque en el anexo A aparece el detalle de la
forma de utilizacioacuten de los programas
Para que funcionen los programas deben crearse tres directorios (carpetas) en el disco
C con nombres cschedu cschedud y cschedu2003dat32dbf y copiarse a ellas las
que se encuentran en el CD anexo con el mismo nombre Los nombres deben ser
exactos ya que se usa direccionamiento fijo al disco C En la carpeta cschedu existe
un proyecto ejecutable denominado proy1 que permite la ejecucioacuten de los programas
sin necesidad de utilizar el lenguaje Fax-Pro
El menuacute cuando se invoca muestra en la pantalla las siguientes opciones y estaacute hecho
para ejecutar cualquiera de los 480 problemas de 32 actividades de la librariacutea PSPLlB
mencionados en el trabajo u otros problemas descritos por el usuario
1 SELECCION DE PROBLEMA y XXX
2 PREDECESORES
3 DURACIONES
4 DISPONIBILIDAD DE RECURSOS
5 CONSUMO DE RECURSOS
6 CONTROL
7 EJECUTAR PROBLEMA
8 CREAR NUEVO PROBLEMA
9 MEJOR SOLUCION ENCONTRADA
10 VALlDACION
Los problemas de la libreriacutea PSPLlB se identifican con el nuacutemero 1 y los de definidos
por el usuario que se denominan LIBRES con un O A continuacioacuten de este agrupador
va el identificador del problema que es alfabeacutetico por lo que se debe ajustar a la
izquierda y que va del 11 al 4810 en los de PSPLlB donde los dos primeros
caracteres forman el grupo (de 1 a 48) y los dos siguientes (o el siguiente) un
consecutivo (de 1 a 10) Esta es la forma como los han codificado los autores de la
libreriacutea y todos los de un mismo grupo tienen caracteriacutesticas similares en su
generacioacuten ya que los problemas son generados de acuerdo con ciertos paraacutemetros
65
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
por otro programa de la misma libreriacutea que puede utilizarse cuando alguacuten investigador
desea problemas adicionales
Asiacute por ejemplo los de los grupos 9 y 13 son los maacutes difiacuteciles y por supuesto los que
maacutes tiempo de coacutemputo requieren
El punto 1 selecciona el problema y su coacutedigo queda permanentemente en la pantalla
mientras no se cambie como Y XXX donde Y es el identificador de si es LIBRE o de
PSPLlB
Los puntos 23456 permiten la entrada de los datos
El punto 2 construye la red (que tarea es predecesora de otra)
El punto 3 define las duraciones (en unidades de tiempo) de las actividades Las
actividades uno y uacuteltima deben tener duracioacuten O
El punto 4 define la disponibilidad de cada uno de los recursos
El punto 5 define el consumo de cada recurso por cada una de las actividades
Cuando una actividad no utiliza un recurso no es necesario entrarlo en ceros sino que
simplemente no se crea registro para ese recurso actividad y el problema lo toma
como cero
El punto 6 define el nuacutemero de tareas del proyecto (incluidas las dos actividades
mudas la 1 y la uacuteltima
El punto 7 ejecuta el problema y muestra el oacuteptimo encontrado por el algoritmo
heuriacutestico y si el problema es de la libreriacutea PSPLlB muestra tambieacuten el oacuteptimo real del
problema se hace una pausa con ese par de datos y al dar intro se regresa
nuevamente al menuacute
66
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
I
El punto 8 permite crear un nuevo problema definido por el usuario Asiacute por ej el
ejemplo de 11 tareas utilizado en este trabajo se codifico como el problema 04
El punto 9 permite ver la solucioacuten encontrada es decir el tiempo de inicio y de
terminacioacuten de cada una de las actividades numeradas en forma consecutiva y
distingue con un uno las que terminan el el uacuteltimo periodo del proyecto lo que permite
identificar su duracioacuten
El punto 10 realiza una validacioacuten en busca de inconsistencia en los datos de entrada
tales como una actividad que consume de un recurso maacutes de su disponibilidad un
predecesor mayor que la tarea que precede y algunos otros errores
Los programas de buacutesqueda tabuacute y enfriamiento simulado en Visual Basic son
autodescriptivos y se encuentran en una carpeta de nombre Tabu en el CD anexo la
cual debe copiarse con todos sus archivos y carpetas al disco C para su ejecucioacuten
65 ANAacuteLISIS COMPARATIVO
Los resultados obtenidos anteriormente para cada uno de los tres algoritmos
separados y utilizando para el AEM la Tabla 12 se llevaron al graacutefico que aparecen
en la figura 5 para efectos de comparacioacuten de los tres algoritmos
Aunque aparentemente el algoritmo exacto modificado es un poco inferior a los otros
dos algoritmos este resultado puede justificarse porque los algoritmos para buacutesqueda
tabuacute (TS en la figura 5) y enfriamiento simulado (SA en la figura 5) fueron
desarrollados en leguaje Visual Basic en tanto que el AEM se desarrolloacute en Foxpro
que es un lenguaje mucho maacutes lento e ineficiente para caacutelculos cientiacuteficos
Adicionalmente el AEM se ejecutoacute en un computador de menor frecuencia de
procesam iento
67
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68
Figura 5 Graacuteficos de desviacioacuten vs tiempo de ejecucioacuten (seg) de los tres
algoritmos
4
35
3 -C) Q) 25 ~ o 2 - TSc E Q) -- SAiexcl 15
AEM1
05
O
000 050 100 150 200 250
desviacioacuten respecto al oacuteptimo
68