Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmo Gen. Horario
Algoritmo Gen. Horario
Tesis Profesional
Que para obtener el Ttulo de
Ingeniero en Computacin
Presenta
Agosto, 2000
Agradecimientos
A mis padres y a Ivn por ser parte fundamental de mi vida y porque gracias
a su apoyo incondicional he logrado mis metas.
Al Dr. Carlos Coello Coello, por su amistad, por compartir su conocimiento
conmigo y brindarme su ayuda durante el desarrollo de este trabajo.
Al Dr. Manrique Mata Montero, por tener la fortuna de contar con su amistad
y apoyo durante el desarrollo de este trabajo.
NDICE
ABSTRACT ...................................................................................................
INTRODUCCIN ...........................................................................................
CAPTULO 1
MTODOS DE OPTIMIZACIN
11
11
11
12
13
CAPTULO 2
ALGORITMOS GENTICOS
14
16
17
20
20
21
22
24
26
29
30
31
33
34
35
CONCLUSIONES ...........................................................................................
40
REFERENCIAS ..............................................................................................
42
APNDICE A
44
46
APNDICE B
61
ABSTRACT
INTRODUCCION
3
Introduccin
4
Introduccin
del
Algoritmo
Gentico
para
la
asignacin
de
horarios,
CAPITULO 1
MTODOS DE OPTIMIZACIN.
1.1
Introduccin.
incluye
la
seleccin
de
valores
para
cierto
nmero
de
variables
1.2
6
Mtodos de Optimizacin
1.3
7
Mtodos de Optimizacin
1.4
Bsqueda Iterativa.
1.5
Algoritmo Metrpolis.
8
Mtodos de Optimizacin
Ei
1
exp
Z (T )
K BT
1.6
Recocido Simulado.
cualquier
movimiento
es
aceptado,
pero
conforme
la
pueden
desviarnos
la
bsqueda
del
ptimo
global.
9
Mtodos de Optimizacin
1.7
s* y se posiciona en este nuevo punto ya sea que C(s*) tenga o no mejor valor
que C(s).
Hasta este punto se est cercano a las tcnicas de mejoramiento local a
excepcin del hecho de que se puede mover a una solucin peor s* desde s.
La caracterstica importante de la BT es precisamente la construccin de
una lista tab T de movimientos: aquellos movimientos que no son permitidos
(movimientos tab) en la presente iteracin. La razn de esta lista es la de excluir
los movimientos que nos pueden regresar a algn punto de una iteracin anterior.
Ahora bien, un movimiento permanece como tab slo durante un cierto nmero
10
Mtodos de Optimizacin
de iteraciones, de forma que se tiene que T es una lista cclica donde para cada
movimiento s a s* el movimiento opuesto s* a s se adiciona al final de T donde el
movimiento ms viejo en T se elimina. Las condiciones tab tienen la meta de
prevenir ciclos e inducir la exploracin de nuevas regiones. Pero esto no
representa que las restricciones tab no sean inviolables bajo toda circunstancia.
Cuando un movimiento tab proporciona una solucin mejor que cualquier otra
previamente encontrada, su clasificacin tab puede eliminarse. La condicin que
permite dicha eliminacin se llama criterio de aspiracin.
Es as como las restricciones tab y el criterio de aspiracin de la BT, juegan
un papel dual en la restriccin y gua del proceso de bsqueda. Las restricciones
tab, permiten que un movimiento sea admisible si no est clasificado como tab,
mientras que si el criterio de aspiracin se satisface, permite que un movimiento
sea admisible aunque este clasificado como tab.
En la BT tres aspectos merecen nfasis:
1. El uso de T proporciona la "bsqueda restringida" de elementos de la
aproximacin y por lo tanto las soluciones generadas dependen crticamente de la
composicin de T y de la manera como se actualiza.
2. El mtodo no hace referencia a la condicin de optimalidad local, excepto
implcitamente cuando un ptimo local mejora sobre la mejor solucin encontrada
previamente.
3. En cada paso se elige al "mejor" movimiento.
Para problemas grandes, donde las vecindades pueden tener muchos
elementos, o para problemas donde esos elementos son muy costosos de
examinar, es de importancia aislar a un subconjunto de la vecindad, y examinar
este conjunto en vez de la vecindad completa. Esto puede realizarse en etapas,
permitiendo al subconjunto de candidatos expanderse si los niveles de aspiracin
no se encuentran. [Gutirrez, 1999]
11
Mtodos de Optimizacin
1.8
12
Mtodos de Optimizacin
1.9
Bsqueda aleatoria.
13
Mtodos de Optimizacin
Algoritmos Genticos
Mtodos de optimizacin
tradicionales.
de
14
CAPITULO 2
ALGORITMOS GENTICOS.
2.1 Introduccin
Una de las caractersticas ms notables de la Naturaleza es la existencia de
organismos
adaptados
para
la
supervivencia
en
prcticamente
cualquier
15
Algoritmos Genticos
Se denomina gene o gen a cualquier posicin a lo largo de una cadena que representa a un
individuo.
2
John Holland. Investigador de Universidad de Michigan, propuso los Algoritmos Genticos como
una tcnica de bsqueda. [Holland, 1975]
1
16
Algoritmos Genticos
2.2
Bases Biolgicas.
En biologa son elementos orgnicos para codificar la estructura de los seres vivos, en el contexto
de los AGs es una estructura de datos que contiene una cadena de genes.
17
Algoritmos Genticos
poblacin
que
posean
las
caractersticas
ms
ventajosas
dejarn
18
Algoritmos Genticos
19
Algoritmos Genticos
Al aplicarles la funcin de aptitud (que puede verse como una caja negra),
arroja los siguientes valores:
No.
Cadena
Aptitud
% del Total
01101
169
14.4
11000
576
49.2
01000
64
5.5
10011
361
30.9
1170
100.0
Figura 1. Reproduccin simple utilizando la rueda de la ruleta, donde cada cadena es representada
segn el valor del % de la aptitud.
20
Algoritmos Genticos
2.2.3 Mutacin.
Permite que las poblaciones se vuelvan heterogneas, conservando as una
diversidad que mantiene constante el proceso de evolucin. Una mutacin consiste
en seleccionar aleatoriamente un cromosoma, posteriormente se escoge un gen al
azar y se cambia el valor de este gen.
21
Algoritmos Genticos
2.3
Representacin.
22
Algoritmos Genticos
Por lo tanto, es preferible contar con muchos genes que tengan pocos alelos
posibles que contar con pocos genes con muchos alelos posibles. Esto tiene una
justificacin biolgica, ya que en gentica es ms usual tener cromosomas con
muchas posiciones y pocos alelos por posicin que pocas posiciones y muchos
alelos por posicin. [Coello, 1999]
2.4
Componentes Bsicos.
cada
individuo
contienen.
Inicialmente,
esta
poblacin
es
generada
aleatoriamente.
Cada uno de los individuos de la poblacin recibe, a travs de una funcin
de evaluacin de la aptitud (fitness (F)), una medida de su comportamiento con
respecto al problema a resolver. Este valor es utilizado por el algoritmo para guiar
la bsqueda.
23
Algoritmos Genticos
24
Algoritmos Genticos
25
Algoritmos Genticos
pi =
fi
N
X : G k1 K x
G k 2
26
Algoritmos Genticos
concluir la
2.5
Generacin.
En general una funcin de evaluacin tiene como entrada un cromosoma y como salida un
nmero o una lista de nmeros que representan el funcionamiento del cromosoma del problema a
ser resuelto. [Goldberg, 1989]
5
27
Algoritmos Genticos
de
soluciones"
(ms
conocidos
como
bloques
28
Algoritmos Genticos
29
Algoritmos Genticos
2.6
30
CAPITULO III
3.1 Introduccin.
con
el
objetivo
de
satisfacer
algunas
restricciones
31
Diseo del Algoritmo Gentico para la Asignacin de Horarios
3.2
espacios
disponibles
para
asignarles
los
cursos
correspondientes.
Suponiendo que cada curso tiene una leccin diaria por cada da de la semana,
tendramos 1 7 n _ aulas
Universidad Tecnolgica de la Mixteca esto se debe a que la leccin del curso que
se imparte el da Lunes a una determinada hora ser el mismo que en los dems
das de la semana.
De esta manera la calendarizacin de los m cursos es una funcin que
mapea a cada curso con un espacio disponible.
33
Diseo del Algoritmo Gentico para la Asignacin de Horarios
33
Diseo del Algoritmo Gentico para la Asignacin de Horarios
As, que
mating pool y recombinndolas. Esto con el objetivo de crear dos nuevas funciones
que se agregarn "en la prxima generacin" de la poblacin. Cuando ya se han
creado suficientes funciones para la nueva generacin, se les calcula sus aptitudes
y se desecha la generacin anterior. La nueva generacin se convierte en la
generacin actual la cul se usa para crear un mating pool y la historia se repite. El
proceso termina hasta que por medio de reproduccin sexual se obtiene alguna
funcin con una aptitud suficientemente alta para satisfacer nuestras necesidades.
Se refiere a la seleccin de las funciones que sern los padres para la primer generacin.
[Holland,1992]
34
Diseo del Algoritmo Gentico para la Asignacin de Horarios
Necesitamos conocer el problema para definir la funcin de evaluacin, pero despus, durante la bsqueda,
slo nos concentramos en los cromosomas.
35
Diseo del Algoritmo Gentico para la Asignacin de Horarios
36
Diseo del Algoritmo Gentico para la Asignacin de Horarios
Figura 6.
37
Diseo del Algoritmo Gentico para la Asignacin de Horarios
38
Diseo del Algoritmo Gentico para la Asignacin de Horarios
39
Diseo del Algoritmo Gentico para la Asignacin de Horarios
Una funcin determinstica indica en que lugar deben ser asignadas las materias, mediante el uso
de condicionales.
40
CONCLUSIONES
mano, lo cul puede tardar desde das hasta semanas en hacer la reparticin de
los cursos, reparticin que en muchos casos no es la mejor.
Existen otros mtodos para resolver problemas de asignacin de espacios,
por ejemplo el recocido simulado, la bsqueda tab, etc., algunos de los cules
pueden ser rpidos en trminos de encontrar buenas soluciones, sin embargo un
AG se aproxima ms a la asignacin que es realizada manualmente, no obstante,
cuando esta asignacin es hecha a mano se puede tratar de balancear diferentes
condiciones u objetivos, algunas de estas condiciones no pueden ser expresadas
fcilmente en la funcin de evaluacin. A pesar de esta desventaja un AG produce
ms de un resultado para una sola ejecucin del mismo (sin incrementar el
nmero de generaciones) a diferencia de los mtodos arriba mencionados que
producen un nico resultado.
41
Conclusiones
eficientes
producen
resultados
aceptables
en
problemas
de
administracin de espacios.
Al inicio de este trabajo se plante el objetivo de crear una herramienta que
fuera til en la asignacin de horarios en la Universidad Tecnolgica de la Mixteca,
utilizando para ello los Algoritmos Genticos. Con la construccin del Sistema para
la Asignacin de Horarios, se considera que este objetivo fue alcanzado
satisfactoriamente, aunque se presento un problema de sobreespecificacin en el
caso de las salas de cmputo ya que las materias a impartir rebasan en mucho el
nmero de espacios disponibles y esto es solucionado utilizando condiciones que
no pudieron ser representadas en la funcin de evaluacin, por lo que se decidi
incluir estas materias en la asignacin de cursos en aulas, dejando al criterio de la
persona que realiza la asignacin de horarios manualmente, la adaptacin de los
resultados de este sistema a sus necesidades.
Este trabajo de Tesis pretende ser una alternativa eficaz para realizar esta
asignacin, utilizando apropiadamente los Algoritmos Genticos con punto de
cruza. Cabe mencionar que en este trabajo se usaron parmetros reales, propios
de una asignacin (nmero de aulas, nmero de grupos de cada semestre por
carrera, etc.), lo que hace que la asignacin de cursos propuesta en este trabajo
sea una mejor aproximacin a una calendarizacin de cursos ptima que la que
hasta ahora es hecha a mano en la Universidad Tecnolgica de la Mixteca. Aunque
posteriormente puede ser modificado agregando lmites que reduzcan an ms el
espacio de bsqueda de las posibles soluciones.
42
Conclusiones
43
REFERENCIAS
44
Gutirrez Miguel Angel; De los Cobos Sergio & Prez Blanca. [1999],
45
APNDICE A
46
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
47
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
48
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
49
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
50
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
"ContabilC" = Contabilidad
"IngSoftwC" = Ingeniera de Software
"BasDatosI" = Bases de Datos I
"ProgOObII" = Programacin Orientada a Objetos II
"SistDigiC" = Sistemas Digitales
"EstAdmvsC" = Anlisis y Diseo de Estructuras Administrativas
"TeoAlgort" = Teora de Algoritmos
"BsDatosII" = Bases de Datos II
"MicroComC" = Arquitectura de Microcomputadoras
"IntArtifiC" = Inteligencia Artificial
"DisProgAd" = Diseo de Programas Administrativos
"ArqCompuC" = Arquitectura de Computadoras
"MercadotC" = Mercadotecnia
"DiProgFin" = Diseo de Programas Financieros
"SExpertoI" = Sistemas Expertos I
"OCTInforma" = Organizacin de Centros de Teleproceso e Informtica
"ProgTecno" = Diseo de Programas Tecnolgicos
"InvOperaC" = Investigacin de Operaciones
"DireccioC" = Direccin
"SExpertII" = Sistemas Expertos II
Lista de las Materias de Ingeniera en Electrnica:
"MecanicaE" = Mecnica Clsica
"Calculo E" = Clculo
"PensFiloE" = Historia del Pensamiento Filosfico
"ProgEstrE" = Programacin Estructurada
"IntIngEle" = Introduccin a la Ingeniera en Electrnica
"ElectrosE" = Electrosttica
51
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
52
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
53
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
54
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
"MercadotD" = Mercadotecnia
"DesDeProd" = Desarrollo de Producto
"ProyCompt" = Proyecto por Computadora
"Vidrios " = Materiales y Procesos. Vidrios
"DesProducto" = Desarrollo de Producto
"Comercial" = Produccin y Comercializacin
"DireccioD" = Direccin
"DiseoUyA" = Diseo Urbano y Ambiental
"TProdyDis" = Tcnicas Avanzadas de Produccin y Diseo
55
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
"FisicoQuI" = Fisicoqumica I
"QuimAlimt" = Qumica de Alimentos
"BioQuimiII" = Bioqumica II
"MicroAlim" = Microbiologa de Alimentos
"ProbyEstA" = Probabilidad y Estadstica
"TeorEconA" = Teora Econmica
"FisicoQII" = Fisicoqumica II
"FenTransI" = Fenmenos de Transporte I
"QuimAnali" = Qumica Analtica
"Nutricion" = Nutricin
"AdministA" = Administracin
"AnalisExp" = Diseo y Anlisis de Experimentos
"FQAliment" = Fisicoqumica de Alimentos
"FenTranII" = Fenmenos de Transporte II
"TecFrutas" = Tecnologa de Frutas y Hortalizas
"AnalisisI" = Anlisis Instrumental
"ContabilA" = Contabilidad
"IngAlimeI" = Ingeniera en Alimentos I
"TCereales" = Tecnologa de Cereales
"TPCarnico" = Tecnologa de Productos Crnicos
"DibIngAli" = Dibujo de Ingeniera en Alimentos
"AnalisisA" = Anlisis de Alimentos
"EstAdmvsA" = Anlisis y Diseo de Estructuras Administrativas
"IngAlimII" = Ingeniera en Alimentos II
"TPLacteos" = Tecnologa de Productos Lcteos
"IngBioQuim" = Ingeniera Bioqumica
"DesProduc" = Desarrollo de nuevos Productos
"Sensorial" = Evaluacin Sensorial
"MercadotA" = Mercadotecnia
56
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
57
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
58
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
59
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
60
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
61
Manual del usuario del Algoritmo Gentico para la asignacin de horarios
62
APNDICE B
63
Cdigo documentado del Sistema para la asignacin de horarios
del archivo
Call num_azar(val) ' rutina que busca una posicin al azar en
las funciones
Get #1, NmeroRegistro, MiRegistro ' Lee la materia del
archivo
valmat1 = MiRegistro.Materia1
Call asignacionmateria1 'Asigna la materia a la funcin en la
posicin indicada
Call num_azar(val)
64
Cdigo documentado del Sistema para la asignacin de horarios
65
Cdigo documentado del Sistema para la asignacin de horarios
de evaluar el cromosoma
End Sub
66
Cdigo documentado del Sistema para la asignacin de horarios
'Revisa que materia esta asignada hora por hora en cada aula
For i = 1 To 7
For j = 8 To val
If bandera = 1 Then
j=8
bandera = bandera + 1
ElseIf (bandera = 3) Then
j=j+1
bandera = bandera + 1
ElseIf (bandera = 5) Then
j=j+2
bandera = bandera + 1
ElseIf (bandera = 7) Then
j=j+3
bandera = bandera + 1
ElseIf (bandera = 9) Then
j=j+4
bandera = bandera + 1
67
Cdigo documentado del Sistema para la asignacin de horarios
semestre
c = calif_tercersem(a) 'Analiza las materias del tercer semestre
e = calif_quintosem(c) 'Analiza las materias del quinto semestre
g = calif_septimosem(e) 'Analiza las materias del sptimo semestre
q = calif_novenosem(g) 'Analiza las materias del noveno semestre
calificacion = q
j=j+6
Next j
bandera = bandera + 1
Next i
68
Cdigo documentado del Sistema para la asignacin de horarios
69
Cdigo documentado del Sistema para la asignacin de horarios
poblacin
v = selec()
reproducirn
70
Cdigo documentado del Sistema para la asignacin de horarios
v1 = selec()
Call copia_padre1 'procedimiento que realiza una copia de los cromosomas
guarda la nueva
w=w+2
Loop
End Sub
En donde select es la funcin que selecciona las funciones segn su
aptitud:
/*Funcin que realiza la seleccin de los mejores cromosomas
segn el valor de su aptitud, siguiendo el criterio de la rueda de la
ruleta*/
Public Function selec()
Call calificaciones 'procedimiento que realiza la suma de las evaluaciones de
los cromosomas
suma = 0
i=0
aleatorio = Int((evaluacin * Rnd) + 1) 'genera un nmero al azar
71
Cdigo documentado del Sistema para la asignacin de horarios
del cromosoma se hace una copia de los padres en los hijos desde la
posicin inicial hasta el punto de cruza
hijo1(i) = padre1(i)
hijo2(i) = padre2(i)
Next i
For i = punto + 1 To val ' se hace una copia de los padres en los hijos
72
Cdigo documentado del Sistema para la asignacin de horarios
hijo1(i) = padre2(i)
hijo2(i) = padre1(i)
Next i
End If
End Sub
ANEXO
En esta asignacin puede observarse que no existe ningn choque para los
alumnos, ya que las materias no se repiten, ni estn asignadas dos materias del
mismo grupo a la misma hora.
En esta asignacin puede observarse que no existe ningn choque para los
alumnos, ya que las materias no se repiten, ni estn asignadas dos materias del
mismo grupo a la misma hora.