Upload
others
View
11
Download
0
Embed Size (px)
Citation preview
i
ASIGNACIÓN DE RECURSOS HUMANOS MEDIANTE ALGORITMOS
GENÉTICOS.
SAMUEL ANTONIO PEÑA NAVARRO
CESAR ANTONIO RIVERO LEIVA
CORPORACIÓN UNIVERSITARIA TECNOLÓGICA DE BOLÍVAR
FACULTAD DE INGENIERÍA DE SISTEMAS
CARTAGENA DE INDIAS D.T. Y C.
2.000.
ii
ASIGNACIÓN DE RECURSOS HUMANOS MEDIANTE ALGORITMOS
GENÉTICOS.
SAMUEL ANTONIO PEÑA NAVARRO
CESAR ANTONIO RIVERO LEIVA
Tesis de grado presentada como requisito parcial para optar el titulo de ingeniero de sistemas
Director. ISAAC ZUÑIGA SILGADO Ingeniero de Sistemas
CORPORACIÓN UNIVERSITARIA TECNOLÓGICA DE BOLÍVAR
FACULTAD DE INGENIERÍA DE SISTEMAS
CARTAGENA DE INDIAS D.T. Y C.
2.000.
iii
Nota de aceptación
__________________________ __________________________ __________________________ __________________________ __________________________ Jurado __________________________ Jurado
Cartagena de Indias D.T. y C., Febrero 2 de 2000.
iv
Dedicamos la culminación de este logro
A Dios por habernos dado la fuerza, voluntad y sabiduría necesaria para
alcanzar nuestras metas.
A nuestros padres, hermanos y familiares por todo el apoyo que nos
brindaron y por todos los sacrificios que realizaron para impulsarnos a
lograr la realización de nuestros sueños, que hoy se han hecho realidad.
A nuestros maestros por su ejemplo de disciplina, valores y exhortarnos a
alcanzar los objetivos profesionales.
A todos, mil gracias
Cesar y Samuel
v
AGRADECIMIENTOS
Los autores expresan su agradecimiento a:
Lic. Martha Céspedes, Jefe del Departamento de Recursos Humanos de la
Empresa Social del Estado Hospital Universitario de Cartagena, por su
colaboración e interés en la ejecución del proyecto.
Carlos Ferriol D, Jefe del Departamento de Sistemas de la Empresa
TUBOCARIBE S.A., por sus valiosos aportes y orientación.
Daniel de las Aguas, Ingeniero de Sistemas, por su asesoría y constante
motivación.
Isaac Zúñiga S, Ingeniero de sistemas profesor de la Corporación
Universitaria Tecnológica de Bolívar, por su apoyo y orientación.
A los funcionarios del Departamento de Recursos Humanos de la Empresa
Social del Estado Hospital Universitario de Cartagena, por su colaboración.
vi
Cartagena de Indias, 10 de Diciembre de 1999.
Señores
CORPORACIÓN UNIVERSITARIA TECNOLÓGICA DE BOLÍVAR
FACULTAD DE INGENIERÍA DE SISTEMAS
ATN: ING. JUAN CARLOS MANTILLA
Decano Facultad
Ciudad
Respetados señores
Comedidamente nos dirigimos a usted con el fin de presentar a
consideración para su estudio y aprobación el trabajo de grado titulado
“Asignación de Recursos Mediante Algoritmos Genéticos”,
con el objeto de optar el título de Ingeniero de sistemas
Atentamente,
CESAR A. RIVERO LEIVA SAMUEL A. PEÑA NAVARRO
vii
Cartagena de Indias, 10 de Diciembre de 1999.
Señores
CORPORACIÓN UNIVERSITARIA TECNOLÓGICA DE BOLÍVAR
FACULTAD DE INGENIERÍA DE SISTEMAS
ATN. COMITÉ DE EVALUACIÓN DE PROYECTOS
Ciudad
Respetados Señores,
Con la presente me dirijo a ustedes, con ocasión a la petición de los
señores CESAR A. RIVERO LEIVA Y SAMUEL A. PEÑA NAVARRO, estudiantes
matriculados en el programa de Ingeniería de sistemas, quienes han
manifestado su determinación de presentar su proyecto titulado
“Asignación de Recursos Mediante Algoritmos Genéticos”,
requisito este indispensable para optar el titulo de Ingeniero de sistemas.
Al respecto me permito comunicar que he dirigido el citado proyecto, el
cual considero de gran importancia y utilidad.
Atentamente
_________________________ Ing. ISAAC ZÚÑIGA S. Director de Proyecto
viii
REGLAMENTO ACADEMICO
(ARTICULO 105)
La Corporación Universitaria Tecnológica De Bolívar se reserva el derecho
de propiedad intelectual de todos los trabajos de grado aprobados y no
pueden ser explotados comercialmente sin su autorización.
ix
LISTA DE TABLAS
pag
Tabla 1. Estructura de la tabla Asignación. 131
Tabla 2. Estructura de la tabla Cargos 131
Tabla 3. Estructura de la tabla Dpto. 132
Tabla 4. Estructura de la tabla Empleado. 132
Tabla 5. Descripción de unidades de código 138
x
LISTA DE FIGURAS
pag
Figura 1. Propiedades de un objeto de la clase automóviles 33
Figura 2. Los atributos compartidos de los objetos se agrupan en la clase. 34
Figura 3. Intercambio de información entre dos objetos. 35
Figura 4. Mensaje de un objeto produce que otro objeto de una clase diferente cambie un atributo. 36
Figura 5. Herencia de propiedades de una clase madre por una clase hija. 38
Figura 6. Diagrama de jerarquía de procesos 58
Figura 7.Diagramas de flujo de datos – proceso asignación 59
Figura 8. Diagrama de flujo de datos opción selección de personas. 60
Figura 9. Evolución del proyecto 75
Figura 10. Interfaz del primer modelo 76
Figura 11. Interfaz del segundo modelo 80
Figura 12. Estructura de datos utilizada en el segundo modelo. 82
Figura 13. Interfaz del tercer modelo. 84
Figura 14. Estructura de datos utilizada en el segundo modelo. 86
Figura 15. Diagrama de jerarquía de procesos - Abrir 96
Figura 16. Diagrama de jerarquía de procesos - Nueva Asignación 97
Figura 17. Diagrama de flujo de datos opción abrir hábitat 98
Figura 18. Diagrama de flujo de datos opción Abrir Hábitat, configuración avanzada. 99
Figura 19. Diagrama de flujo de datos opción Nuevo Hábitat. 100
Figura 20. Diagrama de flujo de datos opción Nuevo Hábitat. 101
Figura 21. Diagrama de estado del objeto Individuo. 116
xi
Figura 22. Diagrama de estado del objeto Población. 121
Figura 23. Diagrama de estado del objeto HiloPoblación 122
Figura 24. Diagrama de estado del objeto Hábitat 126
Figura 25. Diagrama de estado del objeto HiloHabitat 127
Figura 26.Modelo relacional de la base de datos del sistema. 133
Figura 27. Descripción de objetos según enfoque Coud y Yourdon. 134
Figura 28. Estructura de un cromosoma. 139
Figura 29 Interfaz del cuarto modelo 150
Figura 30. notación de representación de objetos según enfoque coad y yourdon 190
xii
CONTENIDO
pag
INTRODUCCIÓN 1
1 MARCO TEÓRICO 3
1.1 ALGORITMOS GENÉTICOS 3
1.1.1 Orígenes 3
1.1.2 Algoritmo Genético. 5
1.1.3 Algoritmo Genético como técnica de optimización. 9
1.1.4 Bases matemáticas. 10
1.1.4.1 Elementos Básicos de un Algoritmo Genético Tradicional 10
1.1.5 Qué Ventajas y Desventajas tienen con respecto a otras técnicas de búsqueda? 21
1.1.6 Características que distinguen a los AG de otras técnicas de IA. 22
1.1.7 Algoritmos Genéticos Paralelos 22
1.1.7.1 Clasificación de los AGPs 23
1.1.7.1.1 AGPs de Grano Burdo 25
1.1.7.1.1.1 Formación de especies 26
1.1.7.1.1.2 Interrupción del equilibrio 27
1.1.7.1.1.3 Migración 29
xiii
1.1.7.1.1.4 Aplicaciones 31
1.2 HILOS DE EJECUCIÓN 31
1.3 PROGRAMACIÓN ORIENTADA A OBJETOS 32
1.3.1 Objeto =codigo + datos. 33
1.3.2 Clases. 34
1.3.3 Mensajes. 35
1.3.4 Encapsulación 36
1.3.5 Herencia 38
1.3.6 Polimorfismo 40
2 ASIGNACIÓN DE RECURSO HUMANO EN EL HOSPITAL UNIVERSITARIO DE CARTAGENA 41
2.1 CLASIFICACIÓN DE TURNOS 43
2.1.1 Nomenclatura de la Asignación. 43
2.2 PROCESO DE ASIGNACIÓN 44
2.2.1 Tiempo Laboral 44
2.2.2 Algoritmo 45
2.3 PLAN DE CARGOS 47
2.4 DETERMINACIÓN DEL ESPACIO MUESTRAL 47
3 SISTEMA DE INFORMACIÓN PARA ELABORACIÓN DE HORARIOS EN EL HUC 50
3.1 REQUERIMIENTOS DEL SISTEMA 50
3.1.1 Descripción del sistema 50
3.1.1.1 Sistema de administración y control de recursos humanos 50
xiv
3.1.1.1.1 Administración del Recurso Humano. 51
3.1.1.1.2 Control y Liquidación de Nómina. 52
3.1.1.2 Delimitación del sistema 52
3.1.1.3 Frecuencia 53
3.1.1.4 Personal encargado 53
3.1.1.5 Restricciones 53
3.2 DISEÑO DE ENTRADA DE DATOS 54
3.2.1 Datos variables ó suministrados por el usuario 54
3.2.2 Datos de identificación o almacenados en el sistema. 55
3.2.3 Datos invariables o constantes 55
3.3 DISEÑO DE SALIDA DE DATOS 56
3.3.1 Salidas por pantalla 56
3.3.2 Salidas por Impresora 56
3.3.3 Salidas a archivos 57
3.4 DIAGRAMA DE JERARQUÍA DE PROCESOS 58
3.5 DICCIONARIO DE DATOS. 61
3.5.1 Definición de flujos de datos 61
3.5.2 Definición de almacenes de datos 63
3.5.3 Descripción de procesos 64
4 METODOLOGÍA DE INVESTIGACIÓN 66
4.1 DETERMINACIÓN DE REQUERIMIENTOS 66
4.1.1 Investigación preliminar 66
xv
4.1.2 Técnicas para encontrar hechos 67
4.1.3 Requerimientos del sistema 68
4.1.3.1 Requerimientos para el algoritmo 68
4.2 ESTRATEGIA DE DESARROLLO. 69
4.3 DESARROLLO DE UN MODELO DE TRABAJO. 70
4.3.1 Esquema de desarrollo 71
4.3.2 Herramientas de Desarrollo. 71
5 EVOLUCIÓN DEL PROYECTO. 73
5.1 DESARROLLO DEL PROYECTO 74
5.1.1 Primer Modelo (Asignar) 74
5.1.1.1 Diseño 77
5.1.1.2 Estructuras de datos utilizadas 78
5.1.1.3 Conclusiones 78
5.1.2 Segundo Modelo (AG) 79
5.1.2.1 Diseño 80
5.1.2.2 Estructuras de datos utilizadas 82
5.1.2.3 Conclusiones 83
5.1.3 Tercer Modelo (Ag Manager ) 84
5.1.3.1 Diseño 85
5.1.3.2 Estructura de Datos 86
5.1.3.3 Conclusiones 86
6 SISTEMA DE ASIGNACION DE RECURSOS - SAR 88
xvi
6.1 DISEÑO DE ENTRADA DE DATOS 88
6.1.1 Datos variables ó suministrados por el usuario 88
6.1.1.1 Módulo de captura de información básica 89
6.1.1.2 Módulo de captura de información avanzada 89
6.1.2 Datos de Identificación 91
6.2 DISEÑO DE SALIDA DE DATOS 92
6.2.1 Salidas por pantalla 92
6.2.1.1 Módulo de resultados parciales 92
6.2.1.2 Módulo de resultados de la búsqueda 93
6.2.2 Salidas por Impresora 94
6.2.3 Salidas a archivos 95
6.3 DIAGRAMAS DE JERARQUÍA DE PROCESOS 96
6.4 DIAGRAMAS DE FLUJO DE DATOS 98
6.5 DICCIONARIO DE DATOS. 102
6.5.1 Definición de flujos de datos 102
6.5.2 Definición de almacenes de datos 106
6.5.3 Definición de tipos de datos 107
6.5.4 Definición de objetos 114
6.5.4.1 Objeto Individuo 114
6.5.4.1.1 Propiedades 114
6.5.4.1.2 Métodos 115
6.5.4.1.3 Diagrama de Estado 116
xvii
6.5.4.2 Objeto Población 116
6.5.4.2.1 Propiedades 116
6.5.4.2.2 Métodos 118
6.5.4.2.3 Diagrama de Estado 121
6.5.4.3 Objeto HiloPoblacion 121
6.5.4.3.1 Propiedades 121
6.5.4.3.2 Métodos 121
6.5.4.3.3 Diagrama de Estado 122
6.5.4.4 Objeto Hábitat 122
6.5.4.4.1 Propiedades 122
6.5.4.4.2 Métodos 124
6.5.4.4.3 Diagrama de Estado 126
6.5.4.5 Objeto HiloHabitat 126
6.5.4.5.1 Propiedades 126
6.5.4.5.2 Métodos 127
6.5.4.5.3 Diagrama de Estado 127
6.5.5 Descripción de procesos 128
6.5.6 Definición de las estructuras de datos 130
6.5.6.1 Diseño de la base de datos 130
6.5.6.1.1 Estructura de tablas 131
6.5.6.1.1.1 Tabla Asignaci 131
6.5.6.1.1.2 Tabla Cargos 131
xviii
6.5.6.1.1.3 Tabla Dpto 132
6.5.6.1.1.4 Tabla empleado 132
6.5.6.1.2 Modelo Relacional 133
6.5.6.2 Estructura de relaciones entre los objetos de AG. 134
6.6 DESCRIPCIÓN DEL SOFTWARE 135
6.6.1 Estructura del cromosoma. 139
6.6.2 La Función de evaluación. 141
6.6.3 Proceso de selección de individuos. 144
6.6.4 Relevo generacional. 145
6.6.5 Movimiento de individuos. 146
6.6.6 Independencia de las poblaciones. 147
6.6.7 Algoritmo evolutivo. 148
6.6.8 Sincronización de hilos. 148
6.6.9 La interfaz gráfica 149
CONCLUSIONES 151
RESULTADOS 154
RECOMENDACIONES 156
BIBLIOGRAFIA 158
ANEXOS 160
xix
LISTA DE ANEXOS
pag
Anexo A. Plan de cargos del H.U.C. 160
Anexo B. Planillas de asignación de turnos del HUC 168
Anexo C. Manual del Usuario para el Sistema de Asignación de Recursos SAR. 171
Anexo D. Notación de representación de objetos según enfoque Coad y Yourdon. 189
xx
GLOSARIO Adaptación: cualidad que poseen las especies para cambiar características biológicas, con el objeto de sobrevivir a la evolución. Algoritmo: conjunto de pasos lógicos que conllevan a la solución de un problema o alcanzar un objetivo. Algoritmo Genético: algoritmo que emplea tres procesos básicos: evaluación, selección y reproducción. Búsqueda: proceso que realiza el algoritmo genético para la obtención de soluciones. Búsqueda en paralelo: búsquedas simultaneas en espacios distintos. Computación evolutiva: rama de la computación que emula el comportamiento biológico y genético de individuos. La Computación Evolutiva interpreta la naturaleza como una inmensa máquina de resolver problemas y trata de encontrar el origen de dicha potencialidad para utilizarla en nuestros programas. Cromosoma: colección de genes que guarda la información genética de un individuo. Cruce: intercambio genético entre individuos. Función de salud: función objetivo empleada por el algoritmo genético. Gen: estructura básica de los cromosomas. Genotipo: individuo. Granularidad: se define como la razón entre el tiempo dedicado por el algoritmo al procesamiento de los individuos y el tiempo dedicado a la
xxi
comunicación entre las subpoblaciones. Si esta relación es alta, se dice que el procesamiento es de grano burdo. Indicadores de gestión: recomendaciones dictaminadas por el ministerio de salud pública. Individuo: elemento o ser biológico, que posee características propias. Inteligencia Artificial: rama de la computación que emula el comportamiento de los seres vivos a través de algoritmos. Mensaje: intercambio de información entre objetos. Migración: paso de individuos entre poblaciones. Mutación: proceso mediante el cual los individuos alteran su estructura genética. Pila de variables: almacén de información empleado por los hilos de ejecución para guardar o extraer información de los datos residentes en memoria. Plan de cargos: documento de uso privado en el H.U.C. que determina el número de cargos y personal para cada uno de los departamentos. Planilla de asignación: documento que representa la programación de horarios a laborar, por sección. Población: conjunto evolucionable de cromosomas o individuos. POO: programación orientada a objetos. Prototipo de sistemas: modelo que funciona para una aplicación de sistemas de información. el prototipo no contiene todas o lleva a cabo la totalidad de las funciones necesarias del sistema final. Reproducción: proceso mediante el cual los individuos generan nuevos individuos. Turno: espacio de tiempo.
xxii
RESUMEN El objetivo de este trabajo es demostrar la viabilidad de implementar una herramienta de asignación de recursos humanos que sirva de apoyo a el departamento de personal, basada en Algoritmos Genéticos, parte de la computación evolutiva y por tanto de inteligencia artificial; para llegar a esto, se presenta una herramienta prototipo computacional que aplica técnicas de computación evolutiva, para generar asignaciones de turnos de trabajo de forma automática. El proyecto evoluciona a través de cuatro modelos experimentales, a través de los cuales se realizaron ensayos hasta determinar un sistema funcional capaz de generar una asignación de turnos con los requerimientos específicos de la Empresa Social del Estado Hospital Universitario de Cartagena. En el desarrollo de la herramienta se emplearon técnicas avanzadas de programación para la implementación de algoritmos genéticos paralelos.
1
INTRODUCCIÓN La asignación de horarios es una tarea que en la mayoría de las
instituciones de educación, organizaciones, empresas, etc. donde es
requerida, necesita de mucho tiempo y recursos para obtener un
resultado aceptable o factible.
En empresas que organizan su tiempo de operación en turnos que a su vez
requiere de una asignación dinámica de personal, se constituye un
problema para la administración el tratar de optimizar este proceso. Sin
embargo dado la complejidad que conlleva el procedimiento en mención,
este objetivo está lejos de ser cumplido; y en la mayoría de las situaciones
se conforma con una solución funcional, mas no eficiente.
El proyecto toma como base la problemática del Hospital Universitario de
Cartagena (HUC). La entidad presenta dificultades en el proceso de
asignación del recurso humano el cual se realiza en forma manual y es
elaborado mensualmente por los jefes de departamento, empleando estos
2
hasta un 40% de su tiempo laboral para realizar la tarea de asignación. La
población de empleados del Hospital Universitario de Cartagena sobrepasa
actualmente los 800 empleados, redundando esto en una distribución
ineficiente, desde el punto de vista de costos, equidad en los horarios de
trabajo y diferencias respecto a las exigencias reales del personal necesario
en las unidades.
Con los avances de la informática en el campo de inteligencia artificial este
problema es hoy abordable con técnicas emuladoras de selección natural,
entre ellas la más difundida en el campo de la Computación Evolutiva:
Algoritmos Genéticos; alternativa viable ante la asignación metódica de
recursos: Asignación manual, Modelos de programación lineal, pudiendo
incluso superar a estos en aspectos como flexibilidad, optimalidad y costos
(recursos designados para realizar la tarea).
El objetivo de este proyecto es determinar la factibilidad de asignar los
recursos humanos del H.U.C. mediante una herramienta computacional
basada en algoritmos genéticos.
3
1 MARCO TEÓRICO
1.1 ALGORITMOS GENÉTICOS
1.1.1 Orígenes. En los últimos años, la comunidad científica internacional
ha mostrado un creciente interés en una nueva técnica de búsqueda
basada en la teoría de la evolución y que se conoce como el algoritmo
genético. Esta técnica se basa en los mecanismos de selección que utiliza
la naturaleza, de acuerdo a los cuales los individuos más aptos de una
población son los que sobreviven, al adaptarse más fácilmente a los
cambios que se producen en su entorno. Hoy en día se sabe que estos
cambios se efectúan en los genes de un individuo (unidad básica de
codificación de cada uno de los atributos de un ser vivo), y que sus
atributos más deseables (por ejemplo, los que le permiten adaptarse mejor
a su entorno) se transmiten a sus descendientes cuando éste se reproduce
sexualmente.
John Holland, investigador de la Universidad de Michigan lconsciente de la
importancia de la selección natural, a fines de los 60s desarrolló una
4
técnica que permitió incorporarla en un programa de computadora. Su
objetivo era lograr que las computadoras aprendieran por sí mismas. A la
técnica que inventó Holland se le llamó originalmente "planes
reproductivos", pero se hizo popular bajo el nombre "algoritmo genético"
tras la publicación de su libro en 1975.
Una definición bastante completa de un algoritmo genético es la propuesta
por John Koza: Es un algoritmo matemático altamente paralelo que
transforma un conjunto de objetos matemáticos individuales con respecto al
tiempo usando operaciones modeladas de acuerdo al principio Darwiniano
de reproducción y supervivencia del más apto, y tras haberse presentado de
forma natural una serie de operaciones genéticas de entre las que destaca
la recombinación sexual. Cada uno de estos objetos matemáticos suelen ser
una cadena de caracteres (letras o números) de longitud fija que se ajusta al
modelo de las cadenas de cromosomas, y se les asocia con una cierta
función matemática que refleja su aptitud.
La familia de algoritmos genéticos presenta un modo de abordar
problemas inspirado en los mecanismos que descubrió Darwin en la
evolución de las especies biológicas. Así hablando de algoritmos genéticos
enseguida surgen palabras como selección natural, población, adaptación,
5
mutación, genes, etc. tan comunes en biología. Típicamente se aplican en
problemas de optimización y de minimización de funciones.
Básicamente dichos algoritmos plantean el problema de la optimización
como un proceso iterativo de búsqueda de la mejor solución dentro del
espacio de posibles respuestas al problema. Comienza con un conjunto
aleatorio de soluciones tentativas, que constituye la población inicial.
Combinando las mejores respuestas de ese conjunto se crea un nuevo
conjunto que reemplaza al anterior, y que es la generación siguiente. Así
repetidamente. Con cada nueva iteración la población se va refinando más,
consiguiendo mejores respuestas al problema, convergiendo finalmente la
mayoría de los individuos en un entorno de la solución óptima.
1.1.2 Algoritmo Genético1. Para aplicar un AG a un problema se necesita
identificar el espacio de posibles soluciones, de respuestas al
problema, y una codificación de los puntos de ese espacio en un
determinado formato. Por ejemplo supongamos que tenemos un sistema
controlado por 3 parámetros (a, b y c) y queremos saber el valor conjunto
de esos parámetros que hace que el sistema funcione del mejor modo
posible.
1 http://www.faqs.org/faqs/ga/
6
En este caso el espacio de soluciones será el tridimensional con todos los
posibles valores del trío (a-b-c). Cada punto de este espacio es una posible
respuesta al problema y su codificación podría ser la cadena de bits que
representa a los tres números reales en el ordenador. A esta codificación
se le llama cadena cromosómica, cromosoma o genotipo, y a sus
diferentes partes, genes.
El AG se puede ver como un algoritmo de búsqueda dentro del espacio de
las posibles soluciones al problema planteado. Comienza con una
población inicial, que es un conjunto aleatorio de respuestas tentativas al
problema, codificadas. En el ejemplo sería un grupo de tríos con valores
concretos de a-b-c. Cada trío es un individuo de esta generación, que es la
primera de todo el proceso evolutivo.
En el siguiente paso se calcula la función de salud (función de fuerza,
fitness) para cada individuo de la población, que indica el grado en que
cada solución tentativa es adecuada como solución al problema. En
nuestro ejemplo diremos que un trío tiene mucha salud, es bueno, en la
medida en que hace que el sistema se comporte adecuadamente. En
biología sería el grado de adaptación del individuo a su entorno.
7
A continuación se seleccionan los individuos con mayor salud para que
engendren la siguiente generación. Este selecto grupo constituyen los
padres de la nueva población. Aquellos puntos con muy baja adaptación,
esto es, los que son claramente malos como solución al problema
desaparecen al no tener descendencia. Sólo las soluciones más óptimas se
reproducen y sus genes pasan de una generación a otra. Combinando las
soluciones tentativas del grupo de padres se generan nuevas soluciones
tentativas, los hijos. La creación de estos nuevos puntos se lleva a cabo
mediante los operadores genéticos, que principalmente son dos:
Cruce: Se elige un punto dentro de los cromosomas del padre 1 y del
padre 2, y por ahí se cortan sus cromosomas. La cadena
cromosómica del hijo se compone de un trozo de la del padre 1 y de
la parte complementaria en el padre 2. El hijo es una nueva
combinación de los genes que ya existían en los padres, y en cierta
medida mantiene cierta similitud con sus progenitores, pero es un
punto enteramente nuevo en el espacio de posibles soluciones. En
nuestro ejemplo de los padres 23-34-58 y 57-21-44, podrían salir los
hijos 23-34-44 y 57-21-58 si el punto de corte está entre el segundo
y tercer gen.
8
Mutación Provoca un cambio aleatorio en alguno de los genes del hijo,
introduciendo así nuevos genes en la población, a través de este
individuo. Estos cambios serán favorables si aumentan la salud del
individuo que los lleva, es decir, si le hacen ser una solución mejor.
Si los cambios son perjudiciales, esos genes no se propagarán de
una generación a otra porque los individuos que los portan se
extinguirán; al ser peores soluciones nunca serán elegidos como
padres y morirán. Por ejemplo el individuo 57-21-58 podría mutar a
57-29-58.
Para terminar este ciclo la nueva generación reemplaza a la anterior.
Puesto que se seleccionan como padres con mayor probabilidad los puntos
más óptimos y se desechan los de peor comportamiento, la nueva
generación tenderá a tener mejores genes y por ello tendrá soluciones más
óptimas al problema planteado. Iterando este proceso repetidamente se
obtienen sucesivas poblaciones, por ejemplo, conjuntos de soluciones,
cada vez mejores. Se dice entonces que las poblaciones se desplazan, en el
espacio de posibles respuestas, hacia la solución óptima. Finalmente, la
evolución converge situándose las poblaciones en entornos muy pequeños
de ese punto óptimo. El AG converge entonces a puntos cercanos al
óptimo, encontrando así una que cumpla con las expectativas en la
solución del problema que se quería resolver.
9
1.1.3 Algoritmo Genético como técnica de optimización. El problema de la
optimización se puede plantear como un problema de búsqueda del
máximo de una función de bondad, o búsqueda del mínimo de una
función de costo, en el espacio de posibles soluciones. El problema de la
minimización está muy estudiado, y en ciertos dominios eficientemente
resuelto. Están a nuestra disposición, y por supuesto siempre tenemos la
búsqueda exhaustiva como referencia, o determinadas búsquedas
ayudadas por heurísticos.
Los Algoritmos Genéticos emergen también como una técnica de búsqueda
con sus ventajas y sus inconvenientes. Para encontrar el máximo de una
función f con AG basta encontrar una codificación aplicable para todos los
puntos del dominio y asignar como función de salud la propia f. Como
hemos visto el AG desemboca en el punto donde la función de salud es
mayor, que en este caso es precisamente el máximo de f. De modo idéntico
se resuelve la minimización con AG, por ejemplo asignando como "fitness" -
f (el máximo de -f es el mínimo de f).
A diferencia de otras técnicas, como el descenso de gradiente, los AG
prueban con un conjunto de puntos en cada iteración, no con uno solo. Es
decir tienen una búsqueda en paralelo lo cual le permite cierta robustez
frente a mínimos locales. Otra de las ventajas de los AG es su rango de
10
aplicación. Puesto que no exigen cálculo de derivadas, únicamente evaluar
la función, se puede aplicar en dominios no numéricos, definiendo los
operadores genéticos adecuados.
1.1.4 Bases matemáticas2. Tradicionalmente, el espacio de cromosomas G
está constituido por todas las cadenas de una determinada longitud λ
construidas a partir de los símbolos de un alfabeto Σ. A partir de esta
representación de las soluciones, se deriva todo el aparato matemático que
justificaba y, hasta cierto punto, explicaba el funcionamiento de estas
técnicas. Tras describir sumariamente los componentes fundamentales del
algoritmo, dicha justificación será brevemente expuesta.
1.1.4.1 Elementos Básicos de un Algoritmo Genético Tradicional
Un algoritmo genético tradicional puede ser definido como una tupla con
los siguientes elementos:
GA (Σ, λ, f, Ι, S, R, X, KX, M, KM, τ) (1)
donde cada componente tiene el significado que a continuación se indica:
2 http://cs.felk.cvut.cz/~xobitko/
11
√ Σ y λ son los elementos ya comentados consistentes en el alfabeto
empleado para construir los cromosomas y la longitud de las mismas.
Dichos cromosomas forman el espacio de genotipos, por ejemplo,
Genotipos posibles = Σλ.
En su versión más simple, el alfabeto es binario (Σ={0,1}).
√ f es la función de salud que relaciona los cromosomas con la bondad de
las soluciones que representan. Puesto que, estrictamente hablando,
esta salud corresponde en última instancia a dichas soluciones, debe
asumirse la existencia de una función de codificación/decodificación ρ
internamente usada en f. No obstante, en muchas ocasiones dicha
función de decodificación no existe como tal, hallándose fuertemente
incrustada dentro la función de adecuación.
√ I es el operador de inicialización, responsable de generar los individuos
que formarán parte de la población inicial. Usualmente, dichos
individuos se generan de manera totalmente aleatoria, aunque es
posible considerar otras alternativas:
� Inicialización Sistemática: la población inicial es generada mediante
un proceso pseudoaleatorio que asegura que todos los posibles
valores de cada gen se hallan presentes en la misma.
12
� Inicialización Heurística: la población inicial se crea utilizando las
soluciones producidas por un cierto heurístico de construcción.
√ S es el denominado operador de selección. Su misión es determinar
cuáles de los cromosomas presentes en la población pasan a la fase
reproductiva. Dicha selección está guiada por los valores de adecuación
de estos cromosomas, de manera que aquéllos cuya adecuación sea
mayor tendrán una mayor probabilidad de ser seleccionados.
Tradicionalmente pueden considerarse tres mecanismos fundamentales
de realizar esta selección:
• Selección proporcional a la adecuación (fitness-proportionate
selection): Cada componente de la población seleccionada para
reproducirse es escogido de la población actual de manera
independiente. Para ello se realiza una selección aleatoria en la que
el individuo i-ésimo cuya adecuación es fi tiene una probabilidad pi
de ser seleccionado calculada como
. (2)
Idealmente, en una población de N individuos este mecanismo de
selección debería alojar ni = N � pi copias del individuo i-ésimo. La
implementación de este tipo de selección que más se ajusta a este
ideal es el muestreo estocástico universal (Stochastic Universal
13
Sampling). Este mecanismo de selección tiene, no obstante, ciertos
problemas:
a. Asume que los valores altos de adecuación son mejores que los
más bajos. Si bien esto es cierto desde un punto de vista
semánticamente estricto del término adecuación, en muchas
ocasiones el objetivo es la minimización de una cierta función de
coste. Dicha minimización deberá ser reconvertida en
maximización, lo cual puede realizarse de dos maneras
fundamentales:
1. (3)
2. (4)
En la Expresión 1, F es el máximo valor de la función objetivo
(conocido a priori, estimado, o tomado como el mayor valor de la
población actual).
b. Cuando los valores de adecuación son muy similares entre sí, el
algoritmo de selección no es capaz de discriminar entre las
diferentes soluciones. En efecto, compruébese que la Expresión
(2) puede ser expresada como
f
f
f
ff
f
fn iii
i
∆+=
∆+== 1 (5)
14
Claramente, si > > ∆ fi, ni ≅ 1 para cualquier individuo. En esta
situación es necesario emplear algún tipo de mecanismo de
escalado, tendente a aumentar la capacidad de discriminación
del algoritmo. Los más comunes son:
• Escalado lineal: se seleccionan dos parámetros a y b,
reajustándose la adecuación como
bfaf ii +⋅=' (6)
Este ajuste puede provocar valores negativos de adecuación,
los cuales deberán ser tratados adecuadamente (por ejemplo.,
convirtiéndolos a cero).
• Truncado sigma: se calcula la desviación estándar σ, de los
valores de adecuación, ajustándose los mismos como
)(' σ⋅−−= cfff ii . (7)
Típicamente, c=1. Al igual que en el caso anterior, pueden
producirse valores negativos de adecuación, los cuales deben
recibir el tratamiento previamente indicado.
15
• Escalado exponencial: para un determinado parámetro k, la
nueva adecuación se calcula como
( )kii ff =' (8)
Se propone una estimación dinámica de k, de manera que su
valor sea mayor (y por lo tanto más fuerte el escalado) a
medida que evoluciona el algoritmo.
Si bien estos mecanismos descritos pueden solucionar el problema
del escalado, tienen el inconveniente de que la presión selectiva que
ejercen sobre la población varía dinámicamente. Existen, no
obstante, otras soluciones que permiten mantener una presión
constante, como a continuación se verá.
• Selección por Rango: este procedimiento de selección consiste en
construir la población seleccionada atendiendo a la ordenación de
los valores de adecuación en lugar de a sus valores absolutos,
esto es, el mejor individuo es seleccionado con probabilidad p1, el
siguiente con p2, etc. Dichas probabilidades pueden ser
calculadas de muy diversas maneras. La forma más extendida de
hacerlo se denomina ranking lineal:
−−⋅−+= −+−
1
1)(
1
N
i
Npi ηηη (9)
16
donde η+ + η− = 2. Este mecanismo de selección presenta numerosas
ventajas sobre la selección proporcional, como son la transparencia
al sentido de la optimización (maximización o minimización),
invariancia a traslaciones (y por lo tanto, ausencia de problemas de
escalado) y mantenimiento de una presión selectiva constante a lo
largo de la ejecución del algoritmo.
• Selección por torneo: este mecanismo de selección consiste en tomar
un subgrupo de t individuos de la población actual, copiando el
mejor de éstos a la población seleccionada. Frecuentemente se toma
t=2 (torneo binario). Este algoritmo de selección comparte las
mismas propiedades que la selección mediante Rango.
√ R es el operador de reemplazo. Su misión es formar una nueva
población a partir de la ya existente y de los nuevos individuos creados
durante la fase reproductiva. Al igual que el operador de selección, el
reemplazo puede realizarse de diversas maneras:
• Reemplazo del peor: los nuevos individuos creados
substituyen a los peores individuos de la población actual.
• Reemplazo aleatorio: se seleccionan al azar los individuos que
serán reemplazados.
• Reemplazo por torneo: se selecciona un subgrupo de t
individuos y se substituye al peor de éstos.
17
• Reemplazo directo: cada pareja de descendientes reemplaza a
sus progenitores.
Una práctica muy habitual consiste en forzar la permanencia de los
k mejores individuos de la población (k-elitismo). De este manera se
asegura que las mejores soluciones encontradas no se pierden (i.e.,
el mejor individuo de la población final es el mejor individuo
generado durante toda la ejecución del algoritmo).
√ X y KX son un operador de cruce y los parámetros del mismo
respectivamente. La misión del operador de cruce es producir nuevas
soluciones a partir de la combinación de porciones de soluciones ya
existentes
Los operadores de cruce más utilizados hasta principios de los 90 se
basaban en linealidad de los cromosomas y, usualmente, en la
ortogonalidad de los mismos. Dichos operadores son los siguientes:
• Cruce de un punto (one-point crossover o single-point crossover):
se selecciona una posición interior de las cadenas y se
intercambian los segmentos de ambas cadenas a la izquierda de
las mismas
• Cruce de n puntos (n-point crossover): este operador constituye
una generalización del anterior en el que se seleccionan n puntos
18
en el interior de las cadenas y se intercambian los segmentos
entre puntos de corte alternos. Típicamente, n = 2, .
• Cruce uniforme (uniform crossover): este tiene un
funcionamiento similar al del cruce de n puntos con n = λ.
Para ser precisos, se realiza un test aleatorio para decidir de
cuál de los antecesores se toma cada posición de la cadena.
Estos operadores frecuentemente producirán individuos que
representan soluciones inválidas cuando se aplican a problemas con
restricciones. En dicha situación existen diversas posibilidades:
1. Eliminar los individuos inválidos. Esta opción tiene el inconveniente
de desperdiciar el esfuerzo computacional empleado en generar
dichas soluciones.
2. Emplear un mecanismo de reparación para producir soluciones
correctas.
3. Usar una función de penalización que haga que las soluciones
inválidas tengan una adecuación menor que las válidas.
Ninguna de estas opciones es plenamente satisfactoria, siendo la mejor
solución modificar los operadores de cruce para que manipulen
adecuadamente los individuos
√ M y KM son un operador de mutación y los parámetros del mismo
respectivamente. La misión del operador de mutación es producir
19
nuevas soluciones a partir de la modificación de un cierto número de
posiciones de una solución ya existente.
En las versiones más clásicas del operador, KM indica la proporción de
posiciones de la cadena que sufrirán modificación. Esta modificación se
considera necesaria para introducir nuevo material genético en la
población.
√ τ es el criterio de terminación que determina cuando se debe concluir la
ejecución del algoritmo. Existen numerosas posibilidades en este
aspecto:
• Finalizar la ejecución tras realizar un número máximo de
evaluaciones de la función objetivo.
• Finalizar la ejecución cuando tras un determinado número de
iteraciones no se ha obtenido ninguna mejora global de la
solución.
• Finalizar la ejecución cuando se obtiene una solución cuya
calidad se estima suficiente.
Estos criterios pueden combinarse libremente entre sí, terminándose la
ejecución del algoritmo cuando se cumpla un subconjunto determinado de
las condiciones de parada indicadas.
20
Debe reseñarse que la elección de los operadores de selección y reemplazo
determina uno de los parámetros fundamentales del algoritmo: el modelo
de evolución. En este sentido pueden considerarse tres opciones:
a. Modelo generacional: en cada iteración del algoritmo se renueva
completamente la población del algoritmo.
b. Modelo de estado estacionario: en cada iteración del algoritmo
únicamente se generan uno o dos individuos nuevos, los cuales son
reinsertados en la población siguiendo el mecanismo de reemplazo
elegido.
c. Modelo gradual: este modelo generaliza los dos anteriores. En cada
iteración se genera un porcentaje g de la población (gap), el cual es
acto seguido reinsertado en la población.
En general, cuanto menor sea el porcentaje de solapamiento, esto es,
cuantos menos individuos se generen en cada iteración, más rápida será la
convergencia del algoritmo. Esto puede ser ventajoso, aunque debe tenerse
en cuenta que puede redundar en una prematura degeneración de la
población.
21
1.1.5 Qué Ventajas y Desventajas tienen con respecto a otras técnicas de
búsqueda?.
• No necesitan conocimientos específicos sobre el problema que
intentan resolver.
• Operan de forma simultánea con varias soluciones, en vez de
trabajar de forma secuencial como las técnicas tradicionales.
• Cuando se usan para problemas de optimización - maximizar una
función objetivo- resultan menos afectados por los máximos locales
(falsas soluciones) que las técnicas tradicionales.
• Resulta sumamente fácil ejecutarlos en las modernas arquitecturas
masivamente paralelas.
• Usan operadores probabilísticos, en vez de los típicos operadores
determinísticos de las otras técnicas.
• Pueden tardar mucho en converger, o no converger en absoluto,
dependiendo en cierta medida de los parámetros que se utilicen
(tamaño de la población, número de generaciones, etc.).
• Pueden converger prematuramente debido a una serie de problemas
de diversa índole.
• Tolerancia a la información difusa.
22
1.1.6 Características que distinguen a los AG de otras técnicas de IA.
• Codificación. Trabajan sobre una codificación del conjunto de
parámetros, conocida como cromosoma o individuo.
• Búsqueda múltiple. Realizan la búsqueda sobre una población de
puntos, no un sólo punto.
• Búsqueda ciega. La única información que guía la búsqueda es la
función objetivo, sin usar otro conocimiento auxiliar.
• Estocásticos. Combinan en proporción variable, reglas
probabilísticas y determinísticas.
• Paralelismo implícito. Procesan externamente vectores de código,
al hacer esto se procesan internamente patrones de similitud, que
son muchos más que los vectores considerados.
1.1.7 Algoritmos Genéticos Paralelos. Los Algoritmos Genéticos son
técnicas de optimización y búsqueda basados en principios biológicos.
Para aumentar su velocidad de ejecución se han desarrollado Algoritmos
Genéticos en arquitecturas paralelas, que, como beneficio adicional, han
mejorado también la calidad de sus soluciones.
23
A pesar de que los AGs son eficientes, las funciones de evaluación de
algunos problemas complejos requieren un tiempo de procesamiento
considerable. En estos casos el AG necesita grandes cantidades de tiempo
de procesamiento para alcanzar una solución satisfactoria. Por esta razón
se han desarrollado AGs en computadoras con arquitecturas paralelas que
permiten reducir el tiempo de respuesta de los AGs. Uno de los fenómenos
más importantes que se observan al utilizar AGPs es que no sólo reducen
el tiempo de procesamiento, sino que en muchas ocasiones entregan
mejores resultados que los AGs seriales [4, 5, 6]. Este hecho, aunado a la
creciente disponibilidad de computadoras paralelas, ha provocado que el
número de personas interesadas en los AGPs haya aumentado
significativamente en los últimos años.
1.1.7.1 Clasificación de los AGPs. Se pueden distinguir cuatro niveles de
paralelismo entre los distintos modelos de AGPs que existen. Estos niveles
establecen de alguna manera la complejidad de los algoritmos y su
capacidad de explotar eficientemente los recursos de diferentes
arquitecturas paralelas.
Los primeros dos niveles de paralelismo procesan la población de la misma
manera que un AG serial pero obtienen resultados en un menor tiempo. El
primer nivel se encuentra al ejecutar un AG serial en una computadora
24
paralela. A pesar de que es muy probable que el compilador paralelice
algún cómputo, no se hace ningún intento por utilizar explícitamente la
arquitectura de la computadora. En el segundo nivel de paralelismo, el AG
utiliza explícitamente varios procesadores para evaluar simultáneamente
diferentes individuos de la población. Esta paralelización es más efectiva
que la anterior ya que en todos los problemas, salvo en los más simples, la
evaluación de los individuos consume la mayor parte del tiempo de
procesamiento de un AG.
El tercer nivel de paralelismo se explota en los AGPs de grano burdo, que
constituyen una forma muy natural y sencilla de paralelizar a un AG. La
población se divide en subpoblaciones, se ejecuta un AG serial en cada
subpoblación y se comunican periódicamente a los mejores individuos
entre las subpoblaciones. A este modelo también se le conoce como
Algoritmo Genético Distribuido, resaltando el hecho de que normalmente
se implanta en máquinas MIMD (Multiple Instruction stream, Multiple
Data stream) con memoria distribuida. Otros lo llaman modelo de isla
porque las subpoblaciones se encuentran aisladas de las demás salvo por
alguna comunicación más o menos frecuente de individuos.
El cuarto y último nivel de paralelismo se encuentra en los AGPs de grano
fino, que explotan eficientemente arquitecturas masivamente paralelas. En
25
los AGPs de grano fino el tamaño de las subpoblaciones es más pequeño y
la comunicación entre los procesadores es mucho más frecuente que en
los AGPs de grano burdo. Normalmente se utiliza un individuo por
procesador, aunque dependiendo del número de procesadores disponibles
se pueden colocar varios individuos en el mismo procesador. Para cada
procesador se define un vecindario, que es un conjunto reducido de
procesadores, y la selección y el apareamiento se limitan al vecindario de
cada procesador. Es importante notar que los vecindarios pueden
traslaparse, por lo que existe intercambio de información entre ellos. El
vecindario de un procesador se define como el conjunto de procesadores
con los que se puede comunicar directamente. A este modelo también se le
conoce algunas veces como AG celular.
Actualmente existe una gran discusión entre cuál de los últimos dos
modelos es mejor. Se han hecho y reportado resultados de experimentos,
algunos favoreciendo a los AGPs de grano burdo y otros a los de grano
fino.
1.1.7.1.1 AGPs de Grano Burdo. La diferencia esencial con el AG básico
es el intercambio de migrantes entre las subpoblaciones. Los migrantes
que recibe cada proceso se incorporan inmediatamente a su población y
son tratados por el mecanismo de selección de la misma forma que los
26
individuos locales. La selección asegura que el tamaño de cada
subpoblación sea constante en
cada generación.
Generar la población inicial
Evaluar a la población
Mientras los criterios de terminación no se cumplan
{ Seleccionar a los individuos más aptos
Aplicarles los operadores de cruce y mutación
Enviar migrantes si es necesario
Recibir migrantes si es necesario
Evaluar a los nuevos individuos
}
En los AGPs de grano burdo ocurren algunos fenómenos similares a los
que ocurren en la naturaleza cuando se tienen varias subpoblaciones
relativamente separadas entre sí. Estos fenómenos son la formación de
especies, la interrupción del equilibrio y la migración.
1.1.7.1.1.1 Formación de especies. Dado que las diversas subpoblaciones
del AGP se inicializan de manera distinta, cada una puede evolucionar
hacia distintas regiones del espacio de búsqueda del problema que se está
resolviendo y converger hacia óptimos locales. Puede considerarse
entonces que las subpoblaciones forman especies distintas.
27
La pregunta relevante ahora es: ¿Qué consecuencias tiene la aparición de
especies para el algoritmo? Si utilizamos un AG serial para maximizar una
función, es predecible que los individuos de la población, después de un
número suficiente de generaciones, converjan en uno solo de los máximos.
Esto se debe a errores de muestreo causados por poblaciones pequeñas.
Si no hay formación de especies los individuos convergen a sólo uno de los
máximos.
Si en cambio, utilizamos AGPs para propiciar la aparición de especies, es
posible esperar que al final de la ejecución existan individuos de la
población que representen a los máximos. Cada máximo equivale a un
nicho en el medio ambiente. Los máximos tienen el mismo valor y no existe
un criterio para preferir a alguno.
En otros problemas, la formación de especies es favorable para el AGP ya
que mantiene cierta diversidad en la población que puede contribuir a
encontrar la solución global
. 1.1.7.1.1.2 Interrupción del equilibrio. Los AGs convergen rápidamente
hacia una solución en las primeras generaciones. Cuando se encuentran
en la región cercana a la solución empiezan a refinar su población
acercándose lentamente a un óptimo. En esta etapa en que los cambios
28
son muy pequeños se dice que la población está en equilibrio. La población
de un AG alcanza rápidamente el equilibrio.
Las poblaciones pueden quedarse en equilibrio durante mucho tiempo
hasta que ocurra algo que favorezca a individuos distintos. Si los
individuos están bien adaptados a su medio no existe una razón para
cambiar, no se exploran variaciones y eventualmente se pierde diversidad
en la población. La aparición de cambios evolutivos se incrementa cuando
ocurre algún fenómeno en la población que tienda a contrarrestar una
estabilidad excesiva.
Uno de estos fenómenos es la migración. Si una especie migra a una zona
en donde existe otra especie similar existirá competencia entre ambas. La
presión de la selección se incrementa y el equilibrio en que se encontraba
la población que recibe a los migrantes se interrumpe. La selección
favorece nuevos cambios que mejoran la supervivencia. Se incrementa la
diversidad y se explora mejor el espacio de búsqueda, reduciendo la
posibilidad de caer en un óptimo local.
29
1.1.7.1.1.3 Migración. El intercambio de individuos entre subpoblaciones
se conoce como migración. Al utilizar migración en un AGP surgen cuatro
cuestiones fundamentales:
1. ¿Con qué frecuencia migran individuos de una población a otra?
2. ¿Cuántos individuos migran cada vez?
3. ¿Hacia dónde migran?
4. ¿Qué individuos migran?
A cada una de estas preguntas corresponde un parámetro para el AGP. La
primera pregunta se resuelve introduciendo el intervalo de migración, que
se define como el número de generaciones que ocurren entre migraciones.
La tasa de migración es la respuesta de la segunda pregunta y define la
proporción de la población que migra en un momento dado.
Al recibir individuos de otras subpoblaciones (migrantes) se introduce
diversidad y se incrementa la presión de la selección (se aumenta la
competencia por sobrevivir) en cada subpoblación. Esto es muy útil para
evitar convergencias prematuras a óptimos locales. Sin embargo, si la
subpoblación ha llegado a un estado de equilibrio, la introducción de
nuevo material puede no ser efectiva porque es posible que cada
subpoblación haya encontrado un nicho adecuado y se hayan formado
30
especies distintas. Igual que en la naturaleza, el cruce de individuos de
especies distintas generalmente no da buenos resultados.
La tercera pregunta, ¿hacia dónde migran los individuos? define la
topología de comunicación entre las subpoblaciones. A pesar de que se
han hecho estudios comparando algunas topologías, hasta ahora no hay
resultados concluyentes que demuestren que una topología sea mejor que
otras en una amplia variedad de problemas.
La cuarta pregunta se refiere al criterio de selección de los migrantes. Es
bastante razonable pensar que en una población natural los individuos
que migran son generalmente los más fuertes, pues migrar implica
recorrer cierta distancia a través de obstáculos. Para continuar imitando
los procesos naturales, en un AGP normalmente los mejores individuos de
una subpoblación son los que se seleccionan para migrar y se envían
copias de ellos a otras subpoblaciones según la topología de comunicación.
Sin embargo, existen otras posibilidades de migración, por ejemplo los
migrantes podrían ser seleccionados aleatoriamente y se podría eliminar a
los migrantes de su subpoblación original.
31
1.1.7.1.1.4 Aplicaciones. Los AGPs se pueden utilizar para resolver todos
los problemas que se resuelven con AGs seriales e intentar mejorar el
tiempo de respuesta y la calidad de los resultados. Específicamente los
AGPs han sido utilizados con éxito para resolver problemas de preparación
de horarios de clases y de trenes, y de asignación de procesos a
procesadores en una computadora paralela con memoria distribuida. Las
ventajas de los AGPs se hacen más evidentes mientras más compleja sea
la función de evaluación del problema que se desea resolver y mientras
mayor sea el espacio de búsqueda que debe explorarse.
1.2 HILOS DE EJECUCIÓN
En Windows 95, como en Windows NT, cada programa de 32 bits que se
ejecuta se llama proceso. Un proceso tiene que ver principalmente con
aspectos de pertenencia. Por ejemplo, un proceso posee su espacio en
memoria. Por lo que le concierne a la ejecución de código, el sistema
operativo utiliza un nuevo objeto llamado hilos de ejecución (Thread).
Cuando se inicia un nuevo proceso, automáticamente se le asigna un hilo
que comienza a ejecutar código en la rutina apropiada. El sistema
operativo usa los hilos para programar el tiempo del procesador. ¿Qué
significa esto? Se trata de un método que se emplea para asignar tiempo a
32
cada hilo (no decimos simplemente proceso porque un proceso puede tener
más de un hilo). El sistema operativo observa todos los hilos que hay en
estado ejecutable y elige uno para ejecutar. Esta asignación de tiempo
determina también la porción o cantidad tiempo que da a cada hilo de
ejecución.
En cualquier momento puede haber más de un hilo ejecutándose. ¿Cuáles
son las propiedades de cada uno? Cada hilo tiene su propia pila de
variables locales y una copia del estado en que se encuentra. Todos los
hilos en un proceso pueden tener acceso a cualquier objeto de memoria
global; por ello, un programa procesador de textos, mientras que el hilo
principal realiza todas las demás tareas.
1.3 PROGRAMACIÓN ORIENTADA A OBJETOS Hoy en día, la mayoría de los programadores han oído el término POO. La
programación orientada a objetos en el método más reciente y actual de
desarrollo de software que existe. Como su nombre implica, la
programación orientada a objetos se basa fuertemente en el concepto de
objeto.
33
1.3.1 Objeto =codigo + datos. Un objeto es una representación en
computadora de alguna cosa o evento del mundo real. Un aeroplano se
puede describir en términos físicos: el número de pasajeros que puede
albergar, el empuje que genera, su coeficiente de resistencia al avance, etc.
Alternativamente, un aeroplano se pude describir en términos funcionales:
despega, asciende y desciende, gira y aterriza, etc. Ni la descripción física
ni la funcional por separado captan la esencia de lo que es un aeroplano –
son necesarias ambas descripciones.
La figura 1 muestra cómo una computadora podría representar un auto.
Por ejemplo, si se trata de un Ferrari F40, la computadora podría guardar
el nombre del modelo, el número del chasis del vehículo (SC717480) y el
tipo de motor(8 cilindros). Los objetos pueden tener tanto propiedades o
atributos (tales como modelo, número del chasis y tipo de motor) como
métodos o comportamientos (tales como “encender luz” y “apagar luz”).
Propiedades y métodos se combinan entonces para formar un objetos.
Figura 1. Propiedades de un objeto de la clase automóviles
34
Al igual que el auto, los objetos hacen que los programas sean un reflejo
más fiel de la forma en que tratamos con el mundo real.
1.3.2 Clases. Una clase es una categoría de objetos similares. Los objetos
se agrupan clases. La figura 2 muestra cómo un grupo de objetos que
representan automóviles podrían estar formados en una clase llamada
“Automóviles”. Una clase define el conjunto de propiedades y
comportamientos compartidos que se encuentran en cada objeto de la
clase. Por ejemplo, todo automóvil tendrá atributos para
fabricante/modelo, número de chasis y motor. Cuando se ejecuta el
programa se pueden crear objetos a partir de las clases establecidas, a
estos se les denomina instancias, en el ejemplo el Ferrari F 40 es una
instancia de la clase Automóviles.
Figura 2. Los atributos compartidos de los objetos se agrupan en la clase.
35
1.3.3 Mensajes. Se puede enviar información de un objeto a otro. En la
figura 3 un objeto (María) de la clase “Operador” está enviando una orden
o mensaje a un objeto (Ferrari) de la clase “Automóviles”. El mensaje es
“arrancar motor”. Estos mensajes no son de forma libre en ningún sentido,
ya que en vez de eso las clases de Operador y Automóviles han sido
programadas cuidadosamente para enviar y recibir un mensaje de
“Arrancar motor”. La clase Operador ha sido programada para transmitir
un mensaje arrancar motor bajo determinadas circunstancias. La clase
Automóviles ha sido programada para reaccionar al mensaje “arrancar
motor” en alguna forma.
Figura 3. Intercambio de información entre dos objetos.
36
1.3.4 Encapsulación. Uno de los elementos primordiales de la POO es la
encapsulación, la creación de objetos que funcionan como entidades
completas. Una de la reglas de la encapsulación es que el programador
nunca necesita acceder directamente a los campos de datos de un objeto.
En vez de esto, se deben definir métodos dentro del objeto que gobiernen
toda la manipulación de datos.
Típicamente, la información acerca de un objeto está encapsulada por su
comportamiento. Esto significa que un objeto mantiene datos acerca de
cosas del mundo real a las que representa en un sentido verdadero.
Figura 4. Mensaje de un objeto produce que otro objeto de una clase diferente cambie un atributo.
37
Típicamente, a un objeto se le debe “pedir o decir” que cambie sus propios
datos con un mensaje, en vez de esperar tales datos de procesos externos
cambien la naturaleza de un objeto. En la figura 4 el objeto Pedro (Clase
Mecánico) envía un mensaje Quitar motor al objeto Ferrari (Clase
Automóviles). La clase Automóviles reacciona a este mensaje con un
comportamiento (también llamado “Método” o Procedimiento”) que cambia
el atributo de motor a Ninguno. Este método es llamado Quitar motor.
Vemos que l objeto Jeep reacciona al mensaje cambiando uno de lo a
atributos a Ninguno.
Puede parecer trivial el que un atributo de un objeto sea cambiado
alterando directamente sus datos o enviando un mensaje al objeto para
que active el comportamiento interno que cambia ese dato. Pero esta
diferencia es una características extremadamente importante de los
programas O-O.
Los datos encapsulados pueden ser protegidos en forma tal que solamente
el objeto mismo puede hacer tales cambios por medio de su propio
comportamiento. Esta construcción facilita la construcción de objetos que
son muy confiable y consistentes, debido a que ellos tienen control
completo sobre sus propios atributos. También hace que sea mucho más
fácil en el mantenimiento y cambio de programas. Por ejemplo, la clase
38
Mecánico está aislada completamente de los detalles internos de la clase
Automóviles. La clase Automóviles puede ser reprogramada totalmente sin
cambiar nada de la clase Mecánica, siempre y cuando la clase Automóviles
continúe recibiendo adecuadamente el mensaje Quitar motor. Este
aislamiento hace que sea mucho más fácil cambiar una parte del
programa sin causar problemas en cascada a otras partes del programa.
1.3.5 Herencia. La Herencia es una de las características más poderosas
de la POO, mediante esta las clases pueden tener hijos, esto es una clase
puede ser creada a partir de otra clase. La clase original, o madre, es
llamada “clase base”. La clase hija es llamada “clase derivada”. Una clase
derivada puede ser creada de forma tal que herede todos las propiedades y
comportamientos de la clase base. En la figura 5. Se crea una clase
derivada (Camión) en forma tal que hereda todos las propiedades y
Figura 5. Herencia de propiedades de una clase madre por una clase hija.
39
comportamientos de la clase base Automóviles. Una clase derivada puede
tener también propiedades y comportamientos adicionales. Por ejemplo, la
clase Camión no solo tiene propiedades para fabricante/modelo, Nº de
Chasis y motor, sino también tiene atributos para carga, remolques y
refrigeración. Los objetos automóviles no tienen estos nuevos atributos. La
herencia reduce la labor de programación reutilizando fácilmente objetos
antiguos; sólo se necesita declarar que la clase Camión hereda de la clase
Automóviles, y luego proporcionar cualquier detalle adicional acerca de las
nuevas propiedades o comportamientos (mostrados en cuadro de línea
continua de la figura). Todos los atributos y comportamientos antiguos de
la clase Automóviles son parte automática e implícita de la parte camión
(se muestra en el cuadro de línea de guiones) y no requiere ninguna nueva
programación.
Algunos lenguajes de programación O-O proporcionan herencia múltiple.
En estos casos especiales se puede crear una clase derivada en forma tal
que herede todos las propiedades y comportamientos de más de una clase
base. Por ejemplo, si hubiera una clase llamada Automóviles y una clase
llamada bicicleta, podríamos crear una clase llamada Motocicletas que
herede parte de sus propiedades y comportamientos de Automóviles y
parte de sus propiedades y comportamientos de Bicicletas.
40
1.3.6 Polimorfismo. El término polimorfismo se refiere a comportamientos
alternos entre clases derivadas relacionadas. Cuando varias clases
heredan atributos y comportamientos, puede haber casos donde el
comportamiento de una clase derivada deba ser diferente de su clase base
o de sus clases derivadas parientes.. Esto significa que un mensaje puede
tener diferentes efectos, dependiendo de exactamente que clase de objeto
recibe el mensaje. El método arrancar tiene un procedimiento y unos
efectos distintos entre los clases Bicicletas y Motocicletas aún cuando una
se deriva de la otra.
41
2 ASIGNACIÓN DE RECURSO HUMANO EN EL HOSPITAL UNIVERSITARIO DE
CARTAGENA
El proceso de asignación del recurso humano de la Empresa Social del
Estado Hospital Universitario de Cartagena - HUC, se realiza de forma
manual; éste es realizado por los jefes de departamento. La asignación
comprende una programación de horarios que cubre un mes de trabajo
para cada empleado.
Los parámetros y criterios utilizados en el proceso de asignación, varían de
acuerdo a la sección o departamento, dado que cada uno tiene políticas
distintas para asignar horarios a sus funcionarios. Estas se originan en
pactos administrativos o logros de los empleados en convenciones. Además
la ley laboral presenta unas normas que regulan la intensidad horaria
obligatoria para cargos o funciones especiales que deba desempeñar un
trabajador, ejemplo de esto, son las personas que laboran en los
departamentos que están expuestos a enfermedades infectocontagiosas,
recepción de agentes radiactivos y alto riesgo de accidente.
42
Por lo anterior, el horario para un trabajador de la institución varía
dependiendo del departamento o sección para la cual se desee asignar
recursos.
El número de personas asignadas a una sección lo determina los
indicadores de gestión y datos históricos de demanda de personal, para
determinadas áreas. La cantidad de empleados asignados por turnos varía
de acuerdo al turno, el turno nocturno requiere menos demanda de
personal para algunas secciones que el turno de Mañana o tarde. Otro
factor influyente en la determinación del número de empleados a asignar
es la demanda creada por agentes incontrolables o impredecibles como
pueden ser enfermedades virales, catástrofes, Festividades en la Ciudad, o
cualquier otro factor que demande personal. Aunque estos factores no
afecten a todas las secciones de la institución.
La estructura jerárquica de la institución (véase anexo A), está distribuida
por departamentos o centros de costo, los cuales pueden tener
subdivisiones llamadas Secciones. No todos los departamentos presentan
secciones, dado que algunos tienen poco personal a su disposición. El
departamento con mayor volumen de empleados es enfermería, éste a su
vez tiene varias secciones con volumen de personal distinto.
43
2.1 CLASIFICACIÓN DE TURNOS El proceso de asignación comprende tres turnos:
• Turno Mañana
Este turno comprende el horario comprendido entre las 07 horas a las
13 horas ( 7 AM – 1 PM). Tiene una duración de seis horas.
• Turno Tarde
Este turno comprende el horario comprendido entre las 13 horas a las
19 horas ( 1 PM – 7 PM). Tiene una duración de seis horas.
• Turno nocturno
Este turno comprende el horario comprendido entre las 19 horas a las
07 horas del día siguiente ( 7 PM – 7 AM). Tiene una duración de doce
horas.
2.1.1 Nomenclatura de la Asignación. La siguiente es la nomenclatura
empleada por los jefes de departamento para generar las planillas de
turnos (asignación) de un mes de trabajo:
• M: Mañana
• T: tarde
• N: nocturno
44
• L: Libre (descanso)
• Lc: Libre compensatorio
• Lp: Libre pendiente
• Ag: Area general
• Vacaciones (se extiende en los días de la planilla)
• Vacaciones de Riesgo (se extiende en los días de la planilla)
2.2 PROCESO DE ASIGNACIÓN
La programación de turnos de trabajo para las distintas secciones y cargos
que existen en la institución se realiza mensualmente, el funcionario
encargado de realizar la asignación se basa en la planilla de asignación del
mes anterior, verifica los empleados que entran a vacaciones para el
período a asignar y saber hasta que día puede ser programado para
laborar.
Para la asignación de una semana se recomienda que un empleado labore
4 días en turnos de día y dos de noche (4/2) por semana.
2.2.1 Tiempo Laboral. La jornada laboral para un empleado del Hospital
Universitario, depende de la clasificación de la sección en la cual éste se
encuentre laborando; las secciones que presentan riesgos tienen un
45
horario menor que aquellas secciones que no presentan riesgo. La carga
laboral es la siguiente:
♦ Secciones con riesgos de infección laboran 36 horas a la semana.
♦ Secciones sin riesgos de infección o accidente laboran 40 horas a la
semana.
♦ Secciones con riesgos de accidente laboran 36 horas a la semana.
♦ Secciones administrativas laboran 40 horas a la semana, el horario
para estas es de 8 AM a 5 PM en jornada continua.
2.2.2 Algoritmo. Revisar las planillas de asignación del mes anterior.
Verificar los empleados que entran a vacaciones normales o vacaciones por
riesgo, señalando la fecha de inicio. Esto con el objeto de no tenerlos en
cuenta para la asignación
Revisar la demanda de ocupación o requerimiento de personal para cada
sección o departamento. Para determinar la demanda, los jefes de
departamento recurren a los manuales de indicadores de gestión y a datos
históricos, más experiencias y conocimientos de los jefes.
Asignar los turnos, es decir, determinar el horario que debe laborar un
empleado durante un mes. Este proceso es iterativo hasta cubrir todos los
46
empleados de la sección. Las variables a tener en cuenta en este proceso
son las siguientes.
♦ Ultimo turno del mes anterior que le correspondió al empleado a
asignar.
♦ Sí tiene días libres o libres compensatorios pendientes del mes anterior.
♦ Si recibirá vacaciones en el período a asignar, y a partir de que fecha.
♦ Tener en cuenta la clasificación de la sección (sí es de riesgo).
♦ Es recomendable que el empleado labore máximo dos turnos de noche
por semana y cuatro entre los turnos mañana y tarde.
♦ El número de días del período, es igual a los días calendario que tenga
el mes a programar.
♦ Revisión y publicación de la planilla de asignación (véase anexo B).
47
2.3 PLAN DE CARGOS
La disposición de personal para cada una de las secciones, es determinada
por el departamento de recursos humanos; empleando como patrón el plan
de cargos vigente a la fecha. Este es diseñado y aprobado por funcionarios
del ministerio de salud pública.
En el plan de cargo se describen los cargos requeridos por sección, el
número de cargos, el sueldo mensual, horas a laborar, nombre y código del
cargo. (Véase anexo A).
2.4 DETERMINACIÓN DEL ESPACIO MUESTRAL
El espacio muestral está conformado por todas las asignaciones posibles,
estas reciben el nombre de puntos o elementos muestrales. Según las
determinaciones expuestas en la sección 2.2, los empleados nunca
trabajan más de un turno por día. Si E representa el número de empleados
disponibles para asignar, R el número de requisiciones que se necesitan
para la asignación, como por ejemplo 2 camilleros por turno en la sección
de Urgencia del departamento de enfermería, y T los turno por día, el
número de Días Posible (Dp), es decir todos los posibles valores que puede
48
tomar la asignación de un día dados los parámetros expuestos, es la
combinación de E empleados tomando RT :
!)(*)!(
!
RTERT
E
RT
EDP −
=
=
Dado que el alcance de este proyecto se limita al análisis de los turnos de
atención continua (24 horas), el valor de T se torna constante e igual a tres
(3). Por tanto la determinación de los Días Posibles se cambia a:
!)3(*)!3(
!
3 TET
E
T
EDP −
=
=
Teniendo el número de días posibles, podemos encontrar los periodos
posibles PP, es decir todos las posibles maneras en que se presenta un
periodo conformados por un número de D de días. Este valor representa el
número de puntos del espacio muestral, y se halla aplicando una variación
pues una asignación válida puede tener uno a más días con la misma
asignación diaria:
DPP DP )(=
49
El uso de la variación permite la existencia en el espacio de puntos
(asignaciones) que tienen una misma asignación diaria de manera
consecutiva, lo que sería una situación extrema en caso de escasez de
personal.
El número de puntos muestrales para asignar 10 empleados a dos
requisiciones por tres turnos al día, durante 31 días es de 6.117 × 1073.
Siendo esta una asignación pequeña, el resultado nos da una idea de lo
vasto del espacio muestral a explorar.
50
3 SISTEMA DE ELABORACIÓN DE HORARIOS EN EL HUC
3.1 REQUERIMIENTOS DEL SISTEMA El análisis del sistema de asignación de recursos humanos empleado por
el H.U.C. en la actualidad, señala que el desarrollo manual, como lo
describe el capítulo anterior, es el principal obstáculo. A continuación se
presenta el diseño de un nuevo sistema que contempla las exigencias de la
institución para asignar los turnos de trabajo a sus empleados. Este solo
contempla la asignación de personal para secciones y/o departamentos
que laboran de manera ininterrumpida.
3.1.1 Descripción del sistema. La necesidad de contar con una
herramienta de apoyo para la asignación de personal llevada a cabo por los
Jefes de Departamento, motiva a la elaboración de un nuevo sistema que
disminuya la carga laboral de los mencionados Jefes de Departamento.
3.1.1.1 Sistema de administración y control de recursos humanos. El
departamento de recursos humanos del Hospital Universitario de
51
Cartagena (H.U.C.) cumple dos procesos básicos: Administración del
Recurso Humano y Control - Liquidación de Nómina.
3.1.1.1.1 Administración del Recurso Humano. En este proceso se
recolecta y manipula la información correspondiente a los empleados de la
Institución desde el momento de la requisición de un empleado. A cada
empleado activo se le lleva un registro (carpeta) donde se consignan sus
datos personales, historia laboral, copias de certificados emitidos y control
de novedades (memos, resoluciones, incapacidades, vacaciones, etc.); los
registros de los empleados que dejan de laborar se les ubica en un archivo
llamado inactivos. Las hojas de vida recibidas de personas no contratadas
inmediatamente, son guardadas en un archivo llamado “empleados
potenciales”. Además se realiza la contratación y asignación del empleado
al departamento donde fue solicitado, se envían informes, reportes y
documentos periódicos de carácter administrativo y de control a las
directivas, otros departamentos y entidades que los soliciten. Todas las
gestiones administrativas (contratación, incapacidades, vacaciones,
certificados) son basadas en la información consignada en el archivo de
hoja de vida de empleados potenciales, en el archivo de empleados activos
o en el archivo de empleados inactivos.
52
3.1.1.1.2 Control y Liquidación de Nómina. Este proceso se encarga de
realizar la liquidación mensual del salario de los empleados y realizar los
controles necesarios para la alimentación del sistema (aplicación de
nómina hecha en Cobol) y la verificación de los datos emitidos por el
mismo.
Todos los empleados devengan un sueldo básico más ingresos adicionales
que resultan de recargos, horas extras, subsidios, auxilios y prestaciones
sociales; se hacen deducciones por conceptos como préstamos, sindicato,
cooperativas, embargos y otros.
3.1.1.2 Delimitación del sistema. El sistema de información para la
administración de recursos humanos contempla varios procesos, además
de los antes mencionados como elaboración de certificados, banco de hojas
de vidas y seguimiento de novedades del personal. El objeto del proyecto
de asignación de recursos humanos, sólo se limitará a resolver el problema
de la programación de turnos de laborales, pretende ofrecer a las directivas
del H.U.C, una herramienta de apoyo en la obtención de la programación
de turnos en tiempos mínimos, además de la posibilidad de aplicar
políticas de control de costos. Al final esta información servirá como
programación tentativa y el usuario decidirá que aspectos de la asignación
se deben corregir.
53
3.1.1.3 Frecuencia. El proceso de asignación de turnos de trabajo se
realiza mensualmente; empieza los últimos diez días de cada mes, para
poder presentar la asignación del mes siguiente a partir del día veintiocho,
así los empleados reciben la información de su cronograma de trabajo para
el mes venidero antes de la culminación del actual.
3.1.1.4 Personal encargado. Como se mencionó, las personas encargadas
de realizar la asignación de los empleados, son los jefes de cada sección;
que a la vez controlan el cumplimiento del cronograma de trabajo de cada
empleado y reportan las novedades al departamento de Recursos
Humanos.
3.1.1.5 Restricciones. Las siguientes son limitaciones a tener en cuenta
en las asignación elaborada por el sistema, para alcanzar una solución
factible, cuando se pretende asignar turnos de trabajo para una sección
del H.U.C.
• Abarcar el último turno que asignado en el mes anterior.
• Clasificar los empleados que recibirán vacaciones y descansos
acumulados.
• Establecer el número de horas a laborar por semana, dependiendo
para la sección que se asignen turnos.
54
• Cada empleado debe laborar máximo dos turnos de noche por
semana y cuatro entre los turnos mañana y tarde.
3.2 DISEÑO DE ENTRADA DE DATOS
Los datos empleados para realizar asignación de turnos, los podemos
clasificar como datos variables ó suministrados por el usuario, datos de
identificación o almacenados en el sistema y datos invariables o
constantes.
3.2.1 Datos variables ó suministrados por el usuario. Digitados o
recuperados de una previa entrada de datos, normalmente manual se
consideran:
Personas a asignar: Selección de personas que entran al sistema para ser
asignadas.
Personas por turno diurno: Número de personas necesarias por cargo
durante un turno diurno.
Personas por turno nocturno: Número de personas necesarias por cargo
durante un turno nocturno.
Horas semanales: Horas que se laboran durante una semana.
Fecha: Fecha de inicio de la asignación.
55
Días a laborar: Días que se laboran en el período.
Festivos: Días que se clasifican como festivos o de descanso.
3.2.2 Datos de identificación o almacenados en el sistema. Los datos de
identificación, corresponden a la información residente en la base de datos
del departamento de recursos humanos, que necesitan los jefes de
departamento para seleccionar las personas que deben laborar.
Identificador del empleado: Código interno del empleado.
Nombre y apellido: Datos del empleado.
3.2.3 Datos invariables o constantes. Es información que normalmente no
cambia pues están sujetas a normatividades que perduran en el tiempo
por un espacio prolongado.
Turnos: Número de divisiones de un día laboral establecidos en 3
jornadas: mañana, tarde y noche. (solo se consideran los departamentos
de que laboran en jornada continua).
Recargos por horas nocturnas y/o festivos: Coeficientes del número de
horas laboradas en un día festivo o domingo y en las horas nocturnas.
56
3.3 DISEÑO DE SALIDA DE DATOS
Las salidas de datos despliegan la información generada, durante el
proceso de asignación de empleados de una sección y/o departamento. Los
datos de salida del sistema, se clasifican en salidas por pantalla y salidas
impresas.
3.3.1 Salidas por pantalla. La información del resultado del proceso de
asignación contempla los siguientes datos:
Nombre de la sección: Descripción del departamento o sección a la que
corresponde la asignación.
Período: Mes y año correspondientes al período a laborar.
Datos de empleados: Nombre y apellidos de los empleados que laborarán
durante el período.
Matriz de turnos: Cuadro que describe el empleado, día y turno asignado
por empleado.
3.3.2 Salidas por Impresora. Estos datos son requeridos por los
trabajadores de la institución que laboran por turnos, éstos se clasifican
como usuarios finales indirectos.
El usuario del sistema utiliza la impresora para desplegar los resultados
de la asignación, en el reporte se presentan los siguientes datos.
57
Nombre de la sección: Descripción del departamento o sección a la que
corresponde la asignación.
Fecha: Fecha correspondiente al período laboral
Nombre del Empleado: Nombre y apellido del empleado
Cronograma de trabajo: descripción del horario de trabajo, para cada
empleado.
3.3.3 Salidas a archivos. La información resultante del proceso de
asignación, se almacena en un archivo plano, que contiene la siguiente
información:
Nombre de la sección: Descripción del departamento o sección a la que
corresponde la asignación.
Fecha: Fecha correspondiente al período laboral
Nombre del Empleado: Nombre y apellido del empleado
Horario de trabajo: descripción de los turnos en que el empleado laborará
en el periodo asignado.
58
3.4 DIAGRAMA DE JERARQUÍA DE PROCESOS A continuación se describen los diagramas de flujo de datos, que ilustran
sobre el comportamiento de los datos a través de los procesos que se
realizan en la asignación de recursos
Figura 6. Diagrama de jerarquía de procesos
59
Figura 7.Diagramas de flujo de datos – proceso asignación
60
Figura 8. Diagrama de flujo de datos opción selección de personas.
61
3.5 DICCIONARIO DE DATOS.
3.5.1 Definición de flujos de datos. A continuación se detallan los
elementos que conforman los de flujos de datos.
Nombre del flujo de datos Decide elaborar una asignación Descripción
Representa la determinación del usuario, por elaborar una asignación.
Fuente Usuario que realiza la asignación. Para los procesos Asignación Nombre del flujo de datos Opción selección de personas. Descripción Representa la determinación del usuario,
por seleccionar personas. De los proceso Asignación. Para los procesos Selección de personas Nombre del flujo de datos Opción configuración de parámetros Descripción
Representa la determinación del usuario, por configurar los parámetros necesarios para la asignación.
De los procesos Asignación. Para los procesos Parámetros. Nombre del flujo de datos Opción definir el período. Descripción Representa la determinación del usuario,
por establecer el período laboral. De los procesos Asignación. Para los procesos Definir período. Nombre del flujo de datos Parámetros para la asignación Descripción El usuario alimenta el sistema con datos
necesarios para asignación Fuente Usuario que realiza la asignación. Para los procesos Parámetros Estructuras de datos No de horas a laborar por semana, No de
turnos diurnos, No de turnos nocturnos, No de personas por sección.
62
Nombre del flujo de datos Datos constantes de parámetros. Descripción Información de los parámetros, que se
almacena. De lo procesos Parámetros. Para el almacén Estructura para el almacenamiento de
parámetros. Estructuras de datos No de horas a laborar por semana, No de
turnos diurnos, No de turnos nocturnos, No de personas por sección.
Nombre del flujo de datos Días a laborar y festivos. Descripción El usuario selecciona el período a laborar,
incluyendo los días no laborales que comprenda el período.
Fuente Usuario que realiza la asignación. Para los procesos Definir período Estructuras de datos Fecha inicial y final del período, días festivos. Nombre del flujo de datos Período a laborar. Descripción Información de los días a laborar y los no
laborales. De lo procesos Definir período. Para el almacén Estructura para el almacenamiento del
período. Estructuras de datos Fecha inicial y final del período, días no
laborales. Nombre del flujo de datos Opción abrir selección. Descripción Representa la determinación del usuario, por
abrir una selección del período inmediatamente anterior.
Fuente Usuario que realiza la asignación. Para los procesos Abrir selección existente.
Nombre del flujo de datos Opción nueva selección. Descripción Representa la determinación del usuario, por
crear una selección. Fuente Usuario que realiza la asignación. Para los procesos Nueva selección.
63
Nombre del flujo de datos Selección a usar. Descripción El usuario escoge la selección del período
anterior. Fuente Usuario que realiza la asignación. Para los procesos Abrir selección.
Nombre del flujo de datos Modifica la selección. Descripción El usuario modifica los datos de la selección
abierta. De los procesos Abrir selección existente. Para los procesos Modificar selección.
Nombre del flujo de datos Datos constantes de la asignación. Descripción Información de los empleados a ser
asignados. De lo procesos Modificar selección. Para el almacén Estructura para el almacenamiento de la
selección. Estructuras de datos Nombre y apellido del empleado, código,
departamento.
3.5.2 Definición de almacenes de datos
Nombre del almacén de datos Estructura para el almacenamiento de la selección.
Descripción Información de los empleados que serán asignados, para laborar en un período determinado.
Flujo de datos recibidos Datos constantes de la asignación, datos constantes de la nueva asignación.
Descripción de datos Detalles de los empleados a asignar, Volumen La frecuencia depende del número de
asignaciones que genere el usuario encargado de la asignación.
64
Nombre del almacén de datos Estructura para el almacenamiento de
parámetros. Descripción Información de configuración, necesaria
para elaborar una asignación. Flujo de datos recibidos Datos constantes de parámetros. Descripción de datos No de turnos, No de personas a laborar
por turno. Volumen La frecuencia depende del número de
asignaciones que genere el usuario encargado de la asignación.
Nombre del almacén de datos Estructura para el almacenamiento del
período. Descripción Información de las fechas que contempla
el período a laborar. Flujo de datos recibidos Período a laborar. Descripción de datos Fecha inicial y final, días no laborales. Volumen La frecuencia depende del número de
asignaciones que genere el usuario encargado de la asignación.
3.5.3 Descripción de procesos
Nombre del proceso Asignación Descripción Opción que permite crear o establecer los
parámetros que empleará el sistema para realizar la asignación.
Nombre del proceso Selección de personas. Descripción Opción que permite abrir una selección existente,
para modificar los parámetros o crear una nueva selección.
65
Nombre del proceso Nueva selección. Descripción Clasificación de las personas que serán asignadas
para laborar en un determinado período. Entrada Código del empleado, nombre, apellido. Salida Datos de las personas seleccionadas. Resumen de la lógica Realizar una consulta por cargos y
departamentos. Ejecutar la consulta y seleccionar las personas que serán asignadas, el número de personas lo determina el usuario.
Nombre del proceso Modificar selección. Descripción Cambios de las personas que serán asignadas
para laborar en un determinado período. Entrada Código del empleado, nombre, apellido. Salida Datos de las personas seleccionadas. Resumen de la lógica Realizar una consulta por cargos y
departamentos y, reemplazar o eliminar empleados de la lista.
Nombre del proceso Parámetros Descripción Captura de la información correspondiente a la
configuración del sistema para realizar la asignación.
Entrada No de turnos, horas a laborar por semana, No de personas por turno nocturno, No personas por turno.
Salida Datos que serán constantes durante el proceso de la asignación correcta.
Resumen de la lógica Alimentar el módulo de configuración de la asignación.
Nombre del proceso Definir período. Descripción Se determina el período a laborar, incluyendo los
días festivos. Entrada Fecha inicial y final del período, días festivos Salida Período a laborar en días, incluyendo los festivos. Resumen de la lógica Alimentar el módulo de establecer fechas y
festivos, llenado los campos de la fecha inicial y final.
66
4 METODOLOGÍA DE INVESTIGACIÓN
4.1 DETERMINACIÓN DE REQUERIMIENTOS
El proyecto asignación de recursos humanos mediante algoritmos
genéticos, surge de la necesidad de mejorar el desempeño de los jefes de
departamentos y en especial el departamento de Recursos Humanos,
teniendo en cuenta el crecimiento, las proyecciones y los planes de
modernización de la institución.
4.1.1 Investigación preliminar. El proceso de clasificación de información y
comprensión de los distintos procesos y métodos empleados en la
administración de recursos humanos, cubrió gran parte del cronograma
general del proyecto de investigación, dado a las políticas o convenciones
laborales, por lo cual el proceso de asignación cambia de acuerdo a la
clasificación de la sección, como fue antes mencionado.
Los cambios o reestructuración del plan de cargos y modificaciones de
carácter administrativo, conllevaron a cambios en el manejo del recurso
67
humano; en la primera etapa del proyecto, antes de efectuarse la
reestructuración, existía la modalidad de contratación de personal
supernumerario (empleados contratados temporalmente, adicionales a los
de planta), estos empleados conformaban una nómina alterna, de la cual
se seleccionaban y se asignaban a secciones en las cuales hubiese
demanda de recurso. El primer diseño del algoritmo se planteó teniendo en
cuenta este criterio, en el curso del proyecto, por orden del ministerio de
salud pública se eliminan las contrataciones de supernumerarios y se
reestructura el plan de cargos, lo que implica rediseñar y eliminar
variables que hasta el momento tenían un grado alto de incidencia en el
comportamiento y rendimiento del algoritmo.
4.1.2 Técnicas para encontrar hechos. La información recopilada para
determinación del ámbito, se obtuvo mediante técnicas de entrevista,
observación directa del sistema y la revisión de registros. La entrevista
cubrió a todas las personas involucradas en el departamento de recursos
humanos. Además se efectuaron reuniones con personas ajenas al
departamento, pero que poseen conocimiento o requieren información del
sistema, entre ellas: Jefes de Dpto., Jefe de Sistemas y personal
administrativo que hace uso de la información que genera la asignación de
turnos.
68
4.1.3 Requerimientos del sistema. Los requerimientos del sistema de
información para el manejo y control de horarios de las distintas secciones
o departamentos del H.U.C son los siguientes:
♦ Realizar una distribución de turnos de trabajo en forma equitativa para
cada trabajador.
♦ Reducir el margen de error, para no sobrecargar empleados que puedan
ser asignados a horarios nocturnos o doblar el turno.
♦ La asignación del mes próximo, se basa en la asignación del período
anterior, esto con el objeto de clasificar a los empleados que pasan con
descansos acumulados o compensatorios.
4.1.3.1 Requerimientos para el algoritmo. Su espacio de búsqueda (por
ejemplo, sus posibles soluciones) debe estar delimitado dentro de un cierto
rango.
♦ Debe poderse definir una función de aptitud que nos indique qué tan
buena o mala es una cierta respuesta.
♦ Las soluciones deben codificarse de una forma que resulte
relativamente fácil de implementar en la computadora
69
4.2 ESTRATEGIA DE DESARROLLO.
Se consideró prudente emplear como estrategia de desarrollo el Prototipo
de sistemas, teniendo en cuenta que:
♦ No se encontraron referencias anteriores a la asignación de Recursos
Humanos mediante Algoritmos Genéticos.
♦ Los investigadores y colaboradores no contaban con experiencia y/o
conocimiento previo en el campo.
♦ La necesidad de un modelo fácilmente modificable (que permita una
rápida evolución), para el adiestramiento tanto en las técnicas
aprendidas de AGs, como en las técnicas avanzadas de programación y
su aplicación en la herramienta escogida.
♦ Aunque los AGs son aplicables a una gran cantidad de necesidades, no
había garantía de que el modelo resultara operacionalmente factible y
eficaz; de modo que el prototipo brindaba la capacidad de evaluar los
resultados de los tiempos de respuesta en la búsqueda de la solución y
de esta manera evaluar su factibilidad.
♦ El análisis de requerimientos no garantizaba abarcar la totalidad de las
necesidades del sistema por los constantes cambios y reformas de las
políticas laborales y la crisis administrativa de la institución.
70
♦ Las diferentes versiones del sistema evolucionarían con la experiencia
al igual que el desarrollo adicional y el refinamiento de sus
características.
♦ Es difícil establecer la fecha tentativa de terminación dada la naturaleza
del método de desarrollo y la complejidad del campo. La experiencia con
el sistema es la que determina eventualmente cuando el sistema está
terminado.
4.3 DESARROLLO DE UN MODELO DE TRABAJO.
Por recomendación de los colaboradores se optó por omitir la actividad
estipulada en el anteproyecto de Elaboración de Modelos Experimentales
(fundamentalmente juegos) basados en AGs, concebidos inicialmente para
el adiestramiento en el campo; pues el éxito de estas pruebas no
garantizaba el éxito en el campo de asignación de recursos humanos, cada
modelo se crea a partir de problemáticas distintas y conlleva a estrategias
distintas de resolución. El conocimiento adquirido a través de dichos
modelos se puede también obtener mediante modelos sencillos de
asignación con el agregado de estar trabajando en la materia
correspondiente.
71
4.3.1 Esquema de desarrollo. Durante el desarrollo del proyecto se crearon
cuatro modelos experimentales, partiendo desde un problema sencillo de
asignación, con estructuras de datos básicas, hasta llegar al cuarto
modelo que contempla una interfaz amigable y de fácil manejo por parte
del usuario, con estructuras de datos complejas y empleando diseño
orientado a objetos. Gráficamente podemos representar la evolución del
proyecto.
4.3.2 Herramientas de Desarrollo. Para el desarrollo de la Herramienta
Computacional basada en AGs se seleccionó a Borland Delphi de Inprise
Inc. Por ofrecer las siguientes características:
♦ Presenta un ambiente de desarrollo RAD (Desarrollo Rápido de
Aplicaciones) ampliamente reconocido por los sectores especializados en
programación, requerido para el desarrollo del esquema de prototipos
informáticos del proyecto.
♦ El lenguaje que utiliza (Object Pascal) tiene una amplia tradición desde
sus inicios con Turbo Pascal 1.0 que lo han llevado ha ser considerado
como uno de los dos lenguajes más ricos (por no mencionar los
compiladores más rápidos) en el medio.
72
♦ Object Pascal es un lenguaje orientado a objetos, adicionalmente es un
lenguaje ‘fuerte’ en la declaración de tipos de datos, facilitado la
elaboración de objetos y/o nuevos tipos de datos.
♦ El compilador genera código optimizado y con prestaciones
comparables al nivel de C++. Con de más de diez años de evolución
♦ Permite la creación de Hilos necesarios (como se vera más adelante)
para la implementación del paralelismo del modelo.
73
5 EVOLUCIÓN DEL PROYECTO.
Debido a la complejidad que presenta el proceso de asignación del recurso
humano de la Empresa Social del Estado – Hospital Universitario de
Cartagena, el alto coste que demanda y los errores generados (asignación
no eficiente), se ha diseñado una herramienta prototipo como un
mecanismo de gestión que realiza este trabajo con mejores índices de
eficiencias, a una fracción del costo actual.
En la solución a este problema de asignación de recursos humanos se
emplean técnicas de inteligencia artificial, Algoritmos Genéticos, aunque
la inteligencia artificial demanda alto tiempo de proceso (inversamente
proporcional la capacidad de computo); el principal objetivo es liberar de
trabajo a los jefes de departamento para que puedan emplear este tiempo
en actividades netamente administrativas, sin sacrificar la eficiencia de la
asignación de turnos.
74
5.1 DESARROLLO DEL PROYECTO
El resultado del proyecto sobre asignación de recurso humano mediante
algoritmos genéticos proviene del desarrollo progresivo de cuatro modelos.
Se detallan los tres primeros modelos a manera informativa (ver figura 9) y
el modelo final, denominado Sistema de Asignación de Recursos Humanos
– SAR se describe con profundidad en el siguiente capítulo, pues es el
resultado del presente proyecto. SAR esta diseñado para dar soporte a las
decisiones de los funcionarios que realizan la asignación de turnos del
personal sin tener en cuenta el control de vacaciones o descansos
acumulados de los empleados, pues estos son solo una limitación del
espacio muestral y no son relevantes para comprobar la utilidad de los
AGs en la asignación de los recursos del HUC.
5.1.1 Primer Modelo (Asignar). El primer modelo concebido es una
herramienta elemental que sólo aplica los principios fundamentales de una
herramienta computacional basada en algoritmos genéticos para búsqueda
de una solución factible entre muchas posibles soluciones.
75
Este primer modelo aplica los principios de la evolución de las especies,
cruce y mutación genética, empleando una sola población con número
determinado de individuos.
Figura 9. Evolución del proyecto
76
La asignación se realiza para un puesto de trabajo determinado (una sola
asignación por turno) y contempla tres turnos por día. La función de
optimalidad viene dada por la equidad de la distribución de turnos entre el
número de personas a asignar sin importar el costo de esta.
Figura 10. Interfaz del primer modelo
77
5.1.1.1 Diseño. El modelo inicial está conformado por una unidad de
código en la cual se define la estructura de datos, variables,
procedimientos y funciones empleadas.
La interfaz gráfica del usuario es una pantalla sencilla, que despliega los
resultados de una asignación, mostrando la evolución y número de
generaciones alcanzadas y su respectivo peso.
El software presenta una interfaz en la cual el usuario determina los
parámetros que se emplearán en la ejecución y búsqueda de soluciones.
Los datos a suministrar son los siguientes:
♦ Desviación estándar: representa la equidad de las distintas
asignaciones.
♦ Tamaño de la población: Número de individuos que tiene la población.
♦ Número de personas: Cantidad de empleados a ser asignados para un
puesto de trabajo.
♦ Días(período): numero de días para los cuales se requiere asignar
personas.
78
♦ Tasa de mutación de población: porcentaje de individuos que mutan o
cambian su estructura genética en una generación.
♦ Tasa de mutación de gen: porcentaje de genes a mutar en el individuo.
♦ Tasa de apareamiento: porcentaje de individuos que se aparean en una
generación.
♦ La función de evaluación solo tiene en cuenta el valor de la desviación
estándar.
5.1.1.2 Estructuras de datos utilizadas. Para la asignación se utiliza una
matriz variable, que contiene una asignación (individuo) por cada fila.
Los turnos a laborar de un empleado, son representados por un vector. Se
utiliza una posición por cada turno.
5.1.1.3 Conclusiones
♦ Es posible encontrar soluciones factibles implementando un método de
iteración evolutiva con estructuras básicas, evaluando información
mínima.
79
♦ El modelo encuentra asignaciones con distribuciones de turnos en los
empleados cercanos al promedio general.
♦ Este modelo, como está concebido no soporta los requerimientos de la
problemática del HUC, pues fue concebido como modelo didáctico.
♦ Es necesario tener en cuenta variables como el costo de la asignación,
para encontrar soluciones más próximas a la realidad.
♦ Se deben tener en cuenta restricciones de número de horas trabajadas,
turnos dobles y número de personas por turno de noche, que pueden
inhabilitar una asignación.
♦ Las estructuras de datos empleadas son precarias para el soporte de un
algoritmo evolutivo.
5.1.2 Segundo Modelo (AG). En el segundo modelo, se emplean
estructuras de datos más complejas y se implementa la creación de los
objetos, que representan las entidades genéticas, a saber, población e
individuo. Aplica además una concepción más amplia de un algoritmo
genético. A diferencia del primer modelo, este, hace uso de varias
poblaciones, cada una con distinto número de individuos. La información
suministrada por el usuario es la misma, para el primer modelo. El cálculo
80
del peso, en este modelo, se hace basándose en la desviación estándar de
los turnos asignados y el costo de la asignación.
5.1.2.1 Diseño. La interfaz gráfica del usuario es una pantalla, que
despliega los resultados de una asignación, mostrando la evolución y
número de generaciones alcanzadas y su respectivo peso.
♦ Desviación estándar: representa la equidad de las distintas
asignaciones.
Figura 11. Interfaz del segundo modelo
81
♦ Tamaño de la población: Número de individuos que tiene la población.
♦ Número de personas: Cantidad de empleados a ser asignados para un
puesto de trabajo.
♦ Días(período): numero de días para los cuales se requiere asignar
personas.
♦ Tasa de mutación de población: porcentaje de individuos que mutan o
cambian su estructura genética en una generación.
♦ Tasa de apareamiento: porcentaje de individuos que se aparean en una
generación.
♦ Número de asignaciones: cantidad de personas a laborar por turnos.
♦ Valor de parada: valor máximo alcanzado por el paso, para detener el
algoritmo.
♦ Criterio de selección de parejas: Método empleado por el algoritmo para
seleccionar las parejas.
82
5.1.2.2 Estructuras de datos utilizadas.
Para el manejo de la información en el segundo
modelo, se establecieron estructuras de datos
basados en objetos no visuales descendientes de
la clase objeto, tales como población basada en
la clase lista e individuo basado en la clase
objeto,. Las estructuras se implementan en
unidades independientes, las siguientes son las
unidades de código utilizadas.
♦ Individuo. Representa el código – declaración de la estructura que
contiene la información de un individuo (Cromosoma que representa la
asignación de una semana).
♦ Población. Representa el código – declaración de la estructura que
contiene la información de una población (conjunto de posibles
asignaciones).
♦ Ventana. Representa el código que maneja las propiedades de los
objetos visuales empleados para desplegar la información en pantalla.
♦ Tipos. Representa el código y definiciones de los tipos de datos
empleados por las demás unidades que conforman el proyecto.
Figura 12. Estructura de datos utilizada en el segundo modelo.
83
♦ Biblioteca. Esta unidad de código, contiene todas las funciones y
procedimientos genéricos, que pueden ser usados en las unidades
principales.
5.1.2.3 Conclusiones
♦ Al hacer uso de nuevos factores para hallar el peso de los individuos, el
proceso de asignación alcanza mejores resultados.
♦ Dado que el algoritmo, emplea estructuras de datos más complejas y
los requerimientos más amplios, el proceso requiere de un tiempo
mayor.
♦ Es necesario la implementación de nuevas estructuras, que permitan el
manejo de múltiples poblaciones, y así, poder elaborar un algoritmo
genético paralelo.
♦ La interfaz gráfica no brinda un ambiente agradable al usuario.
♦ Además de las estructuras adicionales, para la ejecución de un
algoritmo genético en paralelo; es necesario que la evolución de cada
población sea manejada por un proceso independiente.
84
5.1.3 Tercer Modelo (Ag Manager ). El tercer modelo es una evolución del
segundo modelo. Para el diseño e implementación de éste, se cubrieron
las recomendaciones de mejoras que se detectaron en el segundo modelo.
Las estructuras empleadas soportan las exigencias de un algoritmo
genético paralelo, la interfaz gráfica es más clara, en cuanto a la captura
de información proveniente del usuario; los resultados son presentados en
forma ordenada, y lo más importante, con datos reales.
Figura 13. Interfaz del tercer modelo.
85
5.1.3.1 Diseño. La herramienta consta de una única ventana, que maneja
todos los objetos utilizados mediante una interfaz gráfica, que representa
la estructura del hábitat, utilizando una lista de nodos. Se introducen tres
nuevos tipos de objetos:
♦ Hábitat: descendiente de una lista (igual que población) que agrupa las
diferentes poblaciones que maneja el AG.
♦ Un hilo vinculado al hábitat (como una propiedad de éste), que
coordina la evolución de las poblaciones del hábitat.
♦ Un hilo vinculado a cada población que efectúa el proceso evolutivo de
la población a que pertenece.
En este modelo se tienen nuevos factores en la función de evaluación, que
representan algunas de las restricciones a las que se somete una
asignación, como son: número de horas trabajadas por semana, número
de turnos nocturnos por semana, personal asignado, asignación de turnos
dobles, además del costo y la desviación estándar.
86
5.1.3.2 Estructura de Datos.
En las estructuras de datos
empleadas por el algoritmo
encontramos tres niveles de
jerarquía para intercambio de
información. El diseño
contempla tres estructuras
principales: Hábitat, Población e
individuo; así un hábitat que
puede evolucionar, esto es, está
listo para iniciar el proceso, tiene
una o más poblaciones que a su
vez tienen cero, uno o más individuos.
5.1.3.3 Conclusiones.
♦ Este modelo se aproxima más a la naturaleza del problema, pues
contempla en la función evaluadora restricciones del proceso de
asignación.
Figura 14. Estructura de datos utilizada en el segundo modelo.
87
♦ El soporte a las nuevas estructuras, demanda mayores recursos
computacionales, en aras a un mejor cubrimiento del espacio de
búsqueda.
♦ El paralelismo implica explorar distintos espacios de soluciones al
tiempo, reduciendo la probabilidad de caer en óptimos locales.
♦ Este esquema hace uso eficaz de los recursos, en sistemas
multiprocesador y/o sistemas distribuidos.
88
6 SISTEMA DE ASIGNACION DE RECURSOS – SAR.
6.1 DISEÑO DE ENTRADA DE DATOS.
Los datos empleados para realizar la búsqueda de una solución a la
asignación, los podemos clasificar como datos variables ó suministrados
por el usuario y datos de identificación (véase anexo D).
6.1.1 Datos variables ó suministrados por el usuario. El sistema requiere
de una información mínima, que se denominará datos de configuración del
algoritmo. El algoritmo genético, se compone de elementos hábitat y
población; éstos controlan la información genética y las soluciones a la
asignación, de generación en generación. Estos datos, son ingresados por
el funcionario encargado de realizar la asignación.
Se han clasificado los datos variables, en datos básicos del algoritmo y
para una configuración avanzada del algoritmo.
89
6.1.1.1 Módulo de captura de información básica. Los coeficientes de cada
uno de los factores que inciden en el cálculo del peso de los individuos,
permite establecer niveles de prioridad entre dichos factores par que así,
un determinado factor incida en menor o mayor escala en el valor del peso
del individuo.
Número de personas disponibles: cantidad de empleados aptos para ser
asignados.
Turnos: Número de divisiones de un día laboral.
Personas a Asignar en el turno de mañana ó tarde: Cantidad de
personas a asignar por turnos.
Personas a Asignar en el turno Noche: Cantidad de personas a asignar
para laborar en el turno nocturno.
Horas semanales: Horas que se laboran durante una semana.
Fecha: Fecha de inicio de la asignación.
Días a laborar: Días que se laboran en el período.
Festivos: Días que se clasifican como festivos o de descanso.
6.1.1.2 Módulo de captura de información avanzada.
Nombre del hábitat: Descripción del hábitat
Nombre de la Población: descripción de la población.
Tamaño: Número de individuos que se mantienen en cada generación.
90
Número de migraciones: Cantidad máxima de migraciones por ciclo
evolutivo.
Número de generaciones por migración: Cantidad de generaciones que
se dan por cada migración.
Coeficiente de la desviación estándar: Factor de incidencia de la
desviación estándar en el cálculo del peso.
Coeficiente del costo de la asignación: Factor de incidencia del costo
normalizado del individuo (asignación) en el cálculo del peso.
Coeficiente de turnos dobles: Factor de incidencia de la cantidad de
turnos dobles que se presentan en una asignación, para el cálculo del
peso.
Coeficiente de personas asignadas: Factor de incidencia de la cantidad
de personas asignadas, con respecto a las disponibles, para el cálculo del
peso.
Coeficiente del número personas con horas excedidas por semana ó
fracción: Factor de incidencia de la cantidad de personas, que fueron
asignadas con una sobrecarga laboral, para el cálculo del peso.
Coeficiente del número personas que exceden dos turnos de noche
por semana ó fracción: Factor de incidencia de la cantidad de personas,
que durante la semana laboran más de dos turnos nocturnos, para el
cálculo del peso.
91
Tipo de apareamiento: conducta que emplea una población para
seleccionar los progenitores de las nuevas generaciones de individuos.
Tipo de reproducción: Método de combinar los genes de los padres, para
concebir nuevos individuos.
Tipo de reducción: Práctica empleada por la población, para seleccionar
los individuos a eliminar.
Criterio de reemplazo: Modelo empleado por la población, para
determinar la forma en que los individuos nuevos entran en la población.
Probabilidad de Mutación: Probabilidad, de que un gen de un individuo
nuevo, sea una mutación.
Valor de parada: La iteración del algoritmo, culmina al cumplir con el
valor de parada.
6.1.2 Datos de Identificación. Los datos de identificación, corresponden a
la información residente en la base de datos del departamento de recursos
humanos, que necesita el algoritmo para establecer la asignación. Estos
datos son seleccionados en el módulo de captura de información básica.
Identificador del empleado: Código interno del empleado.
Salario: valor pagado a un trabajador mensualmente.
92
6.2 DISEÑO DE SALIDA DE DATOS.
Las salidas de datos despliegan la información generada, durante el
proceso de búsqueda de una solución para la asignación de empleados de
una sección y/o departamento. Los datos de salida del sistema, se
clasifican en salidas por pantalla y salidas impresas.
6.2.1 Salidas por pantalla. La información del resultado del proceso de
asignación contempla los siguientes datos:
6.2.1.1 Módulo de resultados parciales. Durante las iteraciones, que
realiza el algoritmo genético para la búsqueda de la solución, se generan
datos, que informan al usuario del estado y comportamiento del algoritmo;
estos datos son:
Estado: Indicador de ejecución, puede estar de tenido o evolucionando.
Hora de inicio de la ejecución: Tiempo inicial del proceso
Tiempo empleado: Tiempo acumulado desde el inicio del proceso de
búsqueda.
Población en ejecución: porcentaje de poblaciones que se encuentran
corriendo.
Generación: Número de la generación en la cual se encuentra el proceso.
93
Porcentaje de poblaciones corriendo: Porcentaje de poblaciones que se
encuentran en ejecución con respecto a las iniciales.
Esta información es empleada por el usuario que realiza la asignación de
personas.
6.2.1.2 Módulo de resultados de la búsqueda. La solución a la asignación
de recursos, despliega la información de las poblaciones y de los
individuos. Un hábitat está compuesto de poblaciones, y estas a su vez de
individuos; el sistema presenta en detalle información de cada uno de
estos. Los datos que conforma las soluciones posibles son los individuos,
estos se presentan al usuario encargado de la asignación (véase anexo D).
Estos datos son empleados por el personal encargado de realizar las
asignaciones, éstos se clasifican como usuarios finales directos.
Personal asignado: Personas asignadas, con respecto a las disponibles
para asignación.
Peso: valor establecido en el individuo por la función de idoneidad, que
clasifica a éste, como más o menos apto que los demás (a menor peso,
mejor individuo).
Desviación estándar: Representa la equidad en la distribución de los
turnos por empleado, en una asignación(individuo).
Costo: Valor monetario de la asignación.
94
Media de horas: Promedio de las horas asignadas por empleado.
Matriz de asignación: Cuadro que representa el resultado de una
asignación para un período, con los datos de los empleados y los turnos
que le corresponden laborar.
6.2.2 Salidas por Impresora. Estos datos son requeridos por los
trabajadores de la institución que laboran por turnos, éstos se clasifican
como usuarios finales indirectos.
El usuario del sistema utiliza la impresora para desplegar los resultados
de la asignación, en el reporte se presentan los siguientes datos.
Nombre de la sección: Descripción del departamento o sección a la que
corresponde la asignación.
Fecha: Fecha correspondiente al período laboral
Nombre del Empleado: Nombre y apellido del empleado
Cronograma de trabajo: descripción del horario de trabajo, para cada
empleado.
La impresión emite tres copias: para el archivo del departamento o sección
que se asigna, departamento de recursos humanos y la pública para los
empleados de la sección (véase anexo D).
95
6.2.3 Salidas a archivos. La información resultante del proceso de
asignación, se almacena en un archivo plano, que contiene la siguiente
información:
Nombre de la sección: Descripción del departamento o sección a la que
corresponde la asignación.
Fecha: Fecha correspondiente al período laboral
Nombre del Empleado: Nombre y apellido del empleado
Horario de trabajo: descripción del los turnos en que los empleado
laborará en el periodo asignado.
La información almacenada es utilizada por los usuarios que realizan las
asignaciones, para realizar consultas de datos históricos y por el
departamento de recursos humanos (Véase anexo D).
96
6.3 DIAGRAMAS DE JERARQUÍA DE PROCESOS
Figura 15. Diagrama de jerarquía de procesos - Abrir
97
Figura 16. Diagrama de jerarquía de procesos - Nueva Asignación
98
6.4 DIAGRAMAS DE FLUJO DE DATOS A continuación se detallan los diagramas de flujo de datos, que ilustran
sobre el comportamiento de los datos a través de los procesos que se
realizan en la asignación de recursos.
Figura 17. Diagrama de flujo de datos opción abrir hábitat
99
Figura 18. Diagrama de flujo de datos opción Abrir Hábitat, configuración avanzada.
100
Figura 19. Diagrama de flujo de datos opción Nuevo Hábitat.
101
Figura 20. Diagrama de flujo de datos opción Nuevo Hábitat.
102
6.5 DICCIONARIO DE DATOS.
6.5.1 Definición de flujos de datos. A continuación se detallan los
elementos que conforman los de flujos de datos.
Nombre del flujo de datos Información del hábitat Descripción Detalles de configuración del hábitat Fuente Usuario que realiza la asignación. Para los procesos Nuevo hábitat Estructuras de datos Selección de personas, configuración de la
asignación, fechas y festivos.
Nombre del flujo de datos Opción configuración selección Descripción Representa la determinación del usuario, por
configurar la selección de personas. Fuente Usuario que realiza la asignación. Para los procesos Selección de personas, configuración de la
asignación, fechas y festivos.
Nombre del flujo de datos Personas a asignar Descripción Usuario relaciona los empleados para la
asignación Fuente Usuario que realiza la asignación. Para los procesos Selección de personas
Nombre del flujo de datos Selección de personas a asignar Descripción Información de las personas que serán
seleccionadas para asignar. Proviene de los procesos Proceso selección de personas. Para la fuente Objeto hábitat Estructuras de datos Código del empleado, nombre, apellido, y
salario.
103
Nombre del flujo de datos Opción configuración asignación Descripción Representa la determinación del usuario, por
configurar el módulo de asignación. Fuente Usuario que realiza la asignación. Para los procesos Configuración de la asignación.
Nombre del flujo de datos Parámetros para la asignación. Descripción El usuario alimenta al sistema los datos
básicos para la asignación ( No de turnos, horas a laborar, No de asig. Por turno)
Fuente Usuario que realiza la asignación. Para los procesos Configuración de la asignación
Nombre del flujo de datos Datos constantes para la asignación. Descripción Parámetros que el algoritmo empleará para
realizar la asignación. Proviene de los procesos Configuración de la asignación. Para la fuente Objeto hábitat Estructuras de datos No de turnos a laborar, No de asignaciones
por turno, horas de trabajo por semana, No de asignaciones por turno de noche.
Nombre del flujo de datos Opción configuración fechas. Descripción Representa la determinación del usuario, por
configurar el módulo de establecer fecha y festivos
Fuente Usuario que realiza la asignación. Para los procesos Establecer fecha y festivos.
Nombre del flujo de datos Días a laborar y festivos Descripción Selección de la fecha inicial y final del
período laborar y días festivos, que este contempla.
Fuente Usuario que realiza la asignación. Para los procesos Establecer fecha y festivos.
104
Nombre del flujo de datos Datos de fecha del período. Descripción Información de los días festivos que incluye
el período a laborar y rango del período. Proviene de los procesos Establecer fecha y festivos. Para la fuente Objeto hábitat Estructuras de datos Fecha inicial del período, fecha final y días
festivos.
Nombre del flujo de datos Decide abrir un hábitat Descripción Detalles de configuración del hábitat Fuente Usuario que realiza la asignación. Para los procesos Abrir hábitat Estructuras de datos Selección de personas, configuración de la
asignación, fechas y festivos.
Nombre del flujo de datos Configuración avanzada. Descripción El usuario ingresa al módulo de
configuración avanzada. Proviene de los procesos Nuevo hábitat y abrir hábitat. Para los procesos Explorador / configuración avanzada.
Nombre del flujo de datos Parámetros del hábitat. Descripción Información suministrada por el usuario,
correspondiente a la información genética del hábitat.
Fuente Usuario que realiza la asignación. Para los procesos Configurar hábitat.
Nombre del flujo de datos Datos constantes para el hábitat Descripción Información de los parámetros genéticos para
la ejecución del algoritmo. Proviene de los procesos Configurar hábitat. Para la fuente Objeto hábitat Estructuras de datos Tipo de migración, valor de parada, No de
individuos por migración, No de migraciones por ciclo.
105
Nombre del flujo de datos Opción configurar hábitat. Descripción Representa la determinación del usuario, por
configurar el módulo de establecer parámetros del hábitat.
Fuente Usuario que realiza la asignación. Para los procesos Configurar hábitat.
Nombre del flujo de datos Opción configurar población. Descripción Representa la determinación del usuario, por
configurar el módulo de establecer parámetros de la población.
Fuente Usuario que realiza la asignación. Para los procesos Configurar población.
Nombre del flujo de datos Datos constantes de la población. Descripción Información de los parámetros genéticos de
la población para la ejecución del algoritmo. Proviene de los procesos Configurar población. Para la fuente Objeto población. Estructuras de datos Tamaño de la población, coeficientes de
factores del peso, No de generaciones por migración.
Nombre del flujo de datos Datos de la población. Descripción Información suministrada por el usuario,
correspondiente a la información genética de la población.
Fuente Usuario que realiza la asignación. Para los procesos Configurar población.
Nombre del flujo de datos Datos de la especie. Descripción Información suministrada por el usuario,
correspondiente a la información genética de la especie.
Fuente Usuario que realiza la asignación. Para los procesos Configurar especie.
106
Nombre del flujo de datos Datos constantes de la especie. Descripción Información de los parámetros genéticos de
la especie para la ejecución del algoritmo. Proviene de los procesos Configurar especie. Para la fuente Objeto población. Estructuras de datos Método de selección de parejas, tipo de
reproducción, tipo de reducción, criterio de reemplazo, porcentaje de reproducción, probabilidad de mutación.
6.5.2 Definición de almacenes de datos
Nombre del almacén de datos Objeto hábitat . Descripción Información de parámetros de
configuración, información de empleados, período de asignación.
Flujo de datos recibidos Selección de personas a asignar, datos constantes para la asignación, datos de fechas del período.
Descripción de datos Detalles de los empleados a asignar, información básica y avanzada del algoritmo genético, periodo a laborar y festivos.
Volumen La frecuencia depende del número de hábitat que genere el usuario encargado de la asignación.
Nombre del almacén de datos Objeto población. Descripción información genética de la población
(tasa de mutación, coeficientes de factores del peso, tipo de reproducción.
Flujo de datos recibidos Datos constantes de la especie, datos constantes de la población.
Descripción de datos Detalles avanzada del algoritmo genético, describe el comportamiento del proceso de búsqueda dado los parámetros suministrados.
Volumen La frecuencia depende del número de poblaciones que el usuario determine emplear para búsqueda de la solución.
107
6.5.3 Definición de tipos de datos
Nombre: Lógico
Estructura Simple
Basado en: Genérico
Descripción Valores de verdadero o falso
Rango Verdadero/Falso
Nombre: Entero
Estructura Simple
Basado en: Generico
Descripción Valores enteros con signo
Rango Z
Nombre: Real
Estructura punto flotante
Basado en: Generico
Descripción Valores de punto flotante
Rango R
Nombre: Moneda
Estructura Derivado
Basado en: Real
Descripción Valores de punto flotante para monedas
Rango R
Nombre: TipoFecha
Estructura Derivado
Basado en: Entero
Descripción Vumero de dias con respecto a una fecha inicial
Rango Z
Nombre: Carácter
Estructura Simple
Basado en: Generico
Descripción Representación de una letra o simbolo de escritura
Rango Simbolo
Nombre: Cadena
Estructura arreglo (vector)
Basado en: Caracteres
Descripción Secuencia de caracteres
Rango Simbolo/Simbolo*
108
Nombre: VectorEntero
Estructura arreglo (vector)
Basado en: Entero
Descripción Vector de enteros
Rango Z/Z*
Nombre: VectorMoneda
Estructura arreglo (vector)
Basado en: Moneda
Descripción Vector de valores moneda
Rango R/R*
Nombre: TtipoUsuario
Estructura Tipo enumerado
Basado en: Def usuario
Descripción contiene los valores descriptivos de el tipo de usuario actual del sistema
Rango TuAdministrador, tuOperador
Nombre: TestadoHabitat
Estructura Tipo enumerado
Basado en: Def usuario
Descripción Valores que puede tomar el estado de un habitat
Rango EhNoListo, ehListo, ehEvolucionando, ehExitoso, ehDetenido
Nombre: TestadoPoblacion
Estructura Tipo enumerado
Basado en: Def usuario
Descripción Valores que puede tomar el estado de un habitat
Rango EpNoListo, epListo, epEvolucionando, epExitoso, epDetenido
Nombre: TtipoMigracion
Estructura Tipo enumerado
Basado en: Def usuario
Descripción contiene los valores descriptivos de el tipo migración que se produce en las diversas poblaciones del hábitat
Rango TmSinMigracion, tmEstrella, tmAnillo, tmRed, tmCentralizado
Nombre: TtipoSeleccion
Estructura Tipo enumerado
Basado en: Def usuario
Descripción Forma en que se seleccionan las parejas para aparearse
Rango tsNinguno, tsPeso, tsRango, tsElite, tsTorneo, tsAleatorio
109
Nombre: TtipoCruce
Estructura Tipo enumerado
Basado en: Def usuario
Descripción Valores que especifican la forma en que se recombinan los genes de los padres para dar origen a su prole
Rango tcNinguno, tcUnPunto, tcDosPuntos, tcUniforme
Nombre: TtipoReduccion
Estructura Tipo enumerado
Basado en: Def usuario
Descripción contiene los valores descriptivos de forma de eliminación de individuos
Rango trNinguno, trPeso, trRango, trElite, trTorneo, trAleatorio
Nombre: TcriterioReemplazo
Estructura Tipo enumerado
Basado en: Def usuario
Descripción Valores que indican de que forma los decendientes reeemplazan a la generación antigua
Rango CrNinguno, crInmediato, crInclusion, crInsercion
Nombre: TtipoTag
Estructura Tipo enumerado
Basado en: Def usuario
Descripción contiene los valores descriptivos de la forma en que se calcula el valor de la propiedad Tag (utilizada en la selección de individuos y parejas)
Rango ttNinguno, ttPesoUp, ttPesoDown, ttRangoUp, ttRangoDown
Nombre: Tnormalizador
Estructura Tipo enumerado
Basado en: Def usuario
Descripción contiene los valores que muestran la forma de calcular el normalizador del costo de la asignación
Rango NrNinguno, nrMenor, mrMayor, nrPromedio, nrPromedioExtremos
Nombre: TseleccionIndividuos
Estructura Tipo enumerado
Basado en: Def usuario
Descripción contiene los valores descriptivos de la forma en que se seleccionan los individuos
Rango siNinguno, siPesoUp, siPesodown, siRangoUp, siRangoDown,siEliteUp, siEliteDown, siTorneoUp, siTorneoDown, siRandomUp, siRandomDown
110
Nombre: TipoGen
Estructura arreglo(Vector)
Basado en: VectorEntero
Descripción Arreglo de vectores (matriz si se quiere) en que cada posición representa un turno y cada vector las asignaciones de ese turno. Un gen representa un día de asignación
Rango
Nombre: TipoCromosoma
Estructura arreglo(Vector)
Basado en: Gen
Descripción Arreglo en el que cada possición representa un gen, por lo tanto un cromosoma es un conjunto de días asignados. El cromosoma representa a la asignación completa, una de las muchas soluciones a estudiar
Rango
Nombre: TipoParejas
Estructura arreglo (vector)
Basado en: TipoPareja
Descripción Vector de pareja que guarda una seleccón de parejas
Rango
Nombre: TipoGenero
Estructura Registro
Nombre: NumSimbolos Estructura simple Basado en: entero Descripción Número de valores que se pueden utilizar para contruir un gen
(personas disponibles) Rango Z+ Nombre: NumSegmentos Estructura simple Basado en: entero Descripción Número de Turnos por dia Rango 3 Nombre: NumAsignaciones Estructura simple Basado en: entero Descripción Número puestos a asignar en cada turno Rango =NumSimbolos Nombre: NumAsigNoche Estructura simple Basado en: entero Descripción Número puestos a asignar en cada turno nocturno Rango <=NumAsignaciones Basado en: Def usuario
Descripción Información genetica que comparten los individuos de un mismo habitat
111
Nombre: TipoEspecie
Estructura Registro
Nombre: TipoSeleccion Estructura Derivado Basado en: TTipoSeleccion Descripción Tipo de selección de de parejas Rango Nombre: TipoCruce Estructura Derivado Basado en: TTipoCruce Descripción Tipo de intercambio de genes entre parejas Rango Nombre: TipoReduccion Estructura Derivado Basado en: TTipoReduccion Descripción Forma en que se eliminan los individuos Rango Nombre: CriterioReemplazo: Estructura Derivado Basado en: TCriterioReemplazo Descripción Manera en que la decendencia entra en la población Rango Nombre: SelMultiple Estructura Derivado Basado en: Entero Descripción Cuntas veces se puede seleccionar a un individuo para cruce en
una generacion Rango Z+ Nombre: SelGrupo Estructura Derivado Basado en: Entero Descripción Solo utilizado Fseleccion= Elite o torneo : especifica el numero
de individuos que son escogidos como los mejores(elite) , o los grupos del torneo
Rango Z+ Nombre: PorCruce Estructura Derivado Basado en: Real Descripción porcentaje de individuos a aparearse Rango 0 ~ 1 Nombre: ProbMutar Estructura Derivado Basado en: Real Descripción Probabilidad de que un gen de un individuo mute Rango 0 ~ 1
Basado en: Def usuario
Descripción Repositorio de las caracteristicas de reproducción de los individuos de la población
Nombre: TipoPareja
112
Estructura Registro
Nombre: Papa Estructura Derivado Basado en: Entero Descripción Indice del individuo que actua como padre en la recombinación Rango <=Numero de individuos de la población Nombre: Mama Estructura Derivado Basado en: Entero Descripción Indice del individuo que actua como madre en la recombinación Rango <=Numero de individuos de la población
Basado en: Def usuario
Descripción Guarda los indices de dos individuos distintos de una misma población
Nombre: TipoFactores
Estructura Registro
Nombre: DesEst Estructura Derivado Basado en: Real Descripción Factor desviación estándar Rango R+ Nombre: Costo Estructura Derivado Basado en: Moneda Descripción Factor costo de la asignación Rango R+ Nombre: TurDbles Estructura Derivado Basado en: Entero Descripción Factor turnos dobles de la asignación Rango Z+ Nombre: PerAsig Estructura Derivado Basado en: Entero Descripción Factor personas asignadas Rango <=TipoEspecie.NumSimbolos Nombre: MasHoras Estructura Derivado Basado en: Entero Descripción Factor individuos asignadas con más de las horas semanales Rango Z+ Nombre: MasNoches Estructura Derivado Basado en: Entero Descripción Factor individuos con mas de 2 turnos nocturnos asignados por
semana Rango Z+
Basado en: Def usuario
Descripción Guarda los valores los factores que componen el peso de los individuos
113
Nombre: TipoCoeficiente
Estructura Registro
Nombre: CoeDesEst Estructura Derivado Basado en: Entero Descripción Coeficiente del factor desviación estándar Rango 0 ~ 1000 Nombre: CoeCosto Estructura Derivado Basado en: Entero Descripción Coeficiente del factor costo de la asignación Rango 0 ~ 1000 Nombre: CoeTurDbles Estructura Derivado Basado en: Entero Descripción Coeficiente del factor turnos dobles de la asignación Rango 0 ~ 1000 Nombre: CoePerAsig Estructura Derivado Basado en: Entero Descripción Coeficiente del factor personas asignadas Rango 0 ~ 1000 Nombre: CoeMasHoras Estructura Derivado Basado en: Entero Descripción Coeficiente del factor individuos asignadas con más de las horas
semanales Rango 0 ~ 1000 Nombre: CoeMasNoches Estructura Derivado Basado en: Entero Descripción Coeficiente del factor individuos con mas de 2 turnos nocturnos
asignados por semana Rango 0 ~ 1000
Basado en: Def usuario
Descripción Guarda los valores los coeficientes de los factores que componen el peso de los individuos
Nombre: Lista
Estructura Estructura
Basado en: Def usuario
Descripción Estructura de punteros que referencian a un conjunto de objetos
Rango
114
6.5.4 Definición de objetos. En esta sección se detalla la definición de los
objetos usados en el proceso de evolución usando una terminología
genérica, para no asociarlas al lenguaje utilizado. Se omiten las
propiedades, métodos y eventos que han sido heredados de objetos predefinidos
como: crear, destruir, identificación en el sistema, clase, etc. Por no ser relevantes
al proceso evolutivo. Así mismo en la utilización de las propiedades en los
procesos, no se contemplan los de creación, verificación y acceso, pues en estos
las propiedades no se utilizan para cálculos y/o referencias sino se inicializan o
verifican.
6.5.4.1 Objeto Individuo
6.5.4.1.1 Propiedades
Nombre Edad Tipo de dato Entero Descripción Número de generaciones que ha vivido el individuo Utilización Información Nombre IdPoblacion Tipo de dato Poblacion Descripción Referencia al objeto población al que pertenece el individuo Utilización Referencia para calculos con valores innerentes en la población: GetGen, Idoneidad,
LlenarCromosoma, Evaluar, Cruzar Nombre Hilo Tipo de dato HiloPoblacion Descripción Referencia al objeto HiloPoblacion Utilización Ejecucion de procesos de evolución de la población: GO_T, Reset Nombre Seleccionado Tipo de dato Entero Descripción Especfica cuantas veces ha sido seleccinado el individuo en cada proceso de selección Utilización Contador Nombre Peso Tipo de dato Real Descripción Valor que le confiere al individuo la función evaluadora en virtud de su rendimiento (a
115
menor peso mejor es el individuo) Utilización Referencia para calculos: Idoneidad, Evaluar Nombre Factores Tipo de dato TipoFactores Descripción Valores de los factores que componen el peso de los individuos Utilización Referencia para calculos: Evaluar Nombre Tag Tipo de dato Real Descripción Valor empleado para hacer las selecciones de individuo Utilización Referencia para calculos Nombre Cromosoma Tipo de dato TipoCromosoma Descripción Arreglo de genes que contiene la asignación del individuo Utilización Referencia para calculos: Idoneidad, LlenarCromosoma, Evaluar, Cruzar, Nombre Empleados Tipo de dato Cadena Descripción Contiene los números de los indices de los empleados que fueron utilizados en la
selección, separados por comas Utilización Información: Idoneidad
6.5.4.1.2 Métodos
Nombre GetGen Tipo de método Función Descripción Obtiene un gen aleatoriamente Parámetros No tiene Retorna TipoGen Nombre Idoneidad Tipo de método Procedimiento Descripción Calcula los factores del Peso Parámetros No tiene Retorna No aplica Nombre Cruzar Tipo de método Procedimiento Descripción Realiza una recombinación de genes de dos individuos para crear dos nuevos
individuos con caracteristicas de los padres Parámetros crMadre: cromosoma de la madre Retorna No aplica Nombre LlenarCromosoma Tipo de método Procedimiento Descripción Inicializa un cromosoma aleatoriamente Parámetros No tiene
116
Retorna No aplica Nombre Evaluar Tipo de método Procedimiento Descripción Calcula el peso del individuo y lo almacena en la proiedad peso Parámetros No tiene Retorna No aplica
6.5.4.1.3 Diagrama de Estado
6.5.4.2 Objeto Población
6.5.4.2.1 Propiedades
Nombre Nombre Tipo de dato Cadena Descripción Descripcion de la población para fácil referencia Utilización Información Nombre Especie Tipo de dato TipoEspecie Descripción Repositorio de las caracteristicas de apareamiento y mutación de los individuos de la
población Utilización Rutinas de procesamiento genético : SeleccionarParejas, Reducir, GeneratioNext
Nombre IdHabitat Tipo de dato Habitat Descripción Referencia al objeto Habitat al que pertenece la población Utilización Referencia para calculos con valores innerentes en el habitat: Seleccionar,
Figura 21. Diagrama de estado del objeto Individuo.
117
GeneratioNext, Migrar Nombre Hilo Tipo de dato HiloPoblacion Descripción Referencia al objeto HiloPoblacion Utilización Ejecucion de procesos de evolución de la población: GO_T, Reset Nombre Generaciones Tipo de dato Entero Descripción Numero de generaciones de la población Utilización Contador: GeneratioNext Nombre MejorPeso Tipo de dato Real Descripción Especifica el mejor peso de todas las generaciones de la población, su valor corresponde
a la evaluciación de MejorCromosoma (ver siguiente item) Utilización Información: GeneratioNext Nombre MejorCromosoma Tipo de dato Cromosoma Descripción Especifica el mejor cromosoma de todas las generaciones de la población Utilización Información: GeneratioNext Nombre MediaPeso Tipo de dato Real Descripción Promedio de los pesos de los individuos de la población; es la medida con que se escoje
la mejor población Utilización Cálculo de la mejor poblacion: CalcularPeso, GeneratioNext Nombre NumGeneraciones Tipo de dato Entero Descripción Numero de generaciones que se realizan en la población actual antes de una migración Utilización Referencia para cumplir el número de generaciones: GeneratioNext Nombre Tamano Tipo de dato Entero Descripción Numero de individuos que se mantienen en la población Utilización Referencia para el mantenimiento de la población : Equilibrar Nombre Permitir iguales Tipo de dato Lógico Descripción Establece si se deben eliminar los individuos de igual configuración genética Utilización Referencia eliminar la duplicidad en la población : Equilibrar
Nombre MejorIndividuo Tipo de dato Entero Descripción Indice del mejor individuo de la actual generación Utilización Información: GeneratioNext
118
Nombre Estado Tipo de dato EstadoPoblación Descripción Estado en que se encuentra la población Utilización Información: GeneratioNext Nombre Historial Tipo de dato Cadena Descripción Ruta del archivo de seguimiento de los avances de la población Utilización Ejecucion del resguardo en disco de la evolución de la población Nombre Individuos Tipo de dato Lista Descripción Referencia a todos los individuos que hacen parte de la pobalción Utilización Referencia: Delete, EstablecerTag, Ruleta, Seleccionar, SeleccionarParejas, Reducir,
Cruzar, Equilibrar, GeneratioNext,QuitarSeleccion, Migrar, FindBest Nombre Coeficientes Tipo de dato TipoCoeficiente Descripción Coeficeintes de los factores para el calculo del peso de los individuos Utilización
6.5.4.2.2 Métodos
Nombre Add Tipo de método Procedimiento Descripción Adiciona un individuo a la población Parámetros X : objeto individuo a adicionar Retorna No aplica Nombre AddNews Tipo de método Procedimiento Descripción Adiciona N individuos nuevos a la población Parámetros N: numero de individuos a adiconar Retorna No aplica Nombre Delete Tipo de método Procedimiento Descripción Borra un individuo de la población Parámetros Index : Indice del individuo a eliminar Retorna No aplica
Nombre Clear Tipo de método Procedimiento Descripción Borra todos los individuos de la población Parámetros No tiene Retorna No aplica
119
Nombre Ordenar Tipo de método Procedimiento Descripción Ordena la población en función del peso Parámetros Acendente: especifica si la ordenación es de mayor a menor o vicversa Retorna No aplica Nombre Seleccionar Tipo de método funcion Descripción Selecciona una grupo de individuos de acuerdo a los parámetros Parámetros TipoSel: Tipo de selección de acuerdo a TTipoSeleccion, Numero: numero de
individuos; NumSel: cuantas veces se puede seleccionar el mismo individuo; SelGrupo: tamaño de los grupos a selccionar (si se escoge selección por competencia)
Retorna Vector de enteros con los índices de los individuos seleccionados Nombre SeleccionarParejas Tipo de método funcion Descripción Selecciona un grupo de parejas para el apareamiento Parámetros TipoParejas: vector de registros TipoPareja que guarda los indices de los
progenitores de la nueva especie Retorna Vector de enteros con los índices de las parejas seleccionadas Nombre Check Tipo de método funcion Descripción Verifica que las configuraciones de la población sean las correctas Parámetros No tiene Retorna cadena: mensaje de error, sino una cadena vacía Nombre Reducir Tipo de método Procedimiento Descripción Reduce la población Parámetros N: número de individuos a eliminar; TipoRed: tipo de reducción basado en
TTipoReduccion Retorna No aplica Nombre GeneracioNext Tipo de método Procedimiento Descripción Inica la evolución de la población Parámetros N: número de generaciones que se realizarán enla población Retorna No aplica
Nombre GO_T Tipo de método Procedimiento Descripción Inicia a GeneratioNext en un hilo independiente Parámetros No tiene Retorna No aplica
120
Nombre EstablecerTag Tipo de método Procedimiento Descripción Establece la propiedad Tag de los individuos de la población con los valores
necesarios para su clasificación Parámetros TipoTag: basado en TTipoTag determina la forma en que se calcula el valor la
propiedad Retorna No aplica Nombre Equilibrar Tipo de método Procedimiento Descripción Hace que la población mantenga el tamaño especificado en la propiedad tamano ya
sea eliminando o adicionando individuos Parámetros No tiene Retorna No aplica Nombre CalcularPeso Tipo de método Procedimiento Descripción Recalcula el peso de los individuos y determina el peso promedio de la pobalción Parámetros No tiene Retorna No aplica Nombre Migrar Tipo de método Procedimiento Descripción Inicia la migración de la población de individuos de la población actual a una
población destino Parámetros N: número de individuos a migrar; Destino: indice de la población destino Retorna No aplica Nombre QuitarSeleccion Tipo de método Procedimiento Descripción Establece en 0 los indicadores de selección de los individuos (propiedad
seleccionado) Parámetros No tiene Retorna No aplica Nombre FindBest Tipo de método funcion Descripción Busca el mejor individuos de la población Parámetros No tiene Retorna Entero indice del mejor individuo
Nombre Reset Tipo de método Procedimiento Descripción Detiene la evolución de la población Parámetros No tiene Retorna No aplica
121
6.5.4.2.3 Diagrama de Estado
6.5.4.3 Objeto HiloPoblacion
6.5.4.3.1 Propiedades
Nombre IdHabitat Tipo de dato Habitat Descripción Referencia al poblacion al que pertenece el hilo Utilización se utiliza la referencia para iniciar el proceso evolutivo en un hilo independiente: Execute Nombre Terminar Tipo de dato Booleano Descripción Switche para detener la evolución de la población referenciada por el hilo Utilización Especifica el detenimiento del hilo (en caso de que se este ejecutando): Execute
6.5.4.3.2 Métodos
Nombre Ejecutar Tipo de método Procedimiento Descripción Contiene el código de evolución de la población Parámetros No tiene
Figura 22. Diagrama de estado del objeto Población.
122
Retorna No aplica
6.5.4.3.3 Diagrama de Estado
6.5.4.4 Objeto Hábitat
6.5.4.4.1 Propiedades
Nombre Nombre Tipo de dato Cadena Descripción Descripcion del habitat para fácil referencia Utilización Información Nombre Genero Tipo de dato TipoGenero Descripción Almacén de datos de la configuración genética del individuo Utilización Rutinas de procesamiento genético : CalcularNormalizador Nombre Fecha Tipo de dato Fecha Descripción Fecha del primer día de la asignación Utilización Información Nombre Hilo Tipo de dato HiloHabitat Descripción Referencia al objeto HiloHabitat Utilización Ejecucion de procesos de evolución: DoIncMigraciones, Play Nombre HiloRun Tipo de dato Lógico
Figura 23. Diagrama de estado del objeto HiloPoblación
123
Descripción Indica si el hilo está ejecutandose Utilización Información, procesos de sincronización de hilos Nombre Migraciones Tipo de dato Entero Descripción Numero de migraciones del hábitat en la sesión actual Utilización Contador: DoIncMigraciones Nombre NumMigraciones Tipo de dato Entero Descripción Numero máximo de migraciones que realiza el hábitat Utilización Cota superior: DoIncMigraciones Nombre CountMigraciones Tipo de dato Entero Descripción Contador de migraciones por ciclo evolutivo Utilización Contador: DoIncMigraciones Nombre MejorPoblacion Tipo de dato Entero Descripción Indice de la mejor población del habitat (mejor peso promedio) Utilización Información: DoDecPobsRun, FindBestPob, Migrar Nombre PobsRun Tipo de dato Entero Descripción Número de poblaciones que están evolucionando Utilización Información: ReanudarHilosPob, DoDecPobsRun Nombre StopValue Tipo de dato Real Descripción Valor máximo que se debe encontrar para que el algoritmo pare ed inmediato Utilización Cota inferior Nombre Estado Tipo de dato EstadoHabitat Descripción Estado en que se encuentra el habitat Utilización Información: DoIncMigraciones, Play, DoDecPobsRun, DoEndJumpHab Nombre TipoMigracion Tipo de dato TipoDeMigracion Descripción Forma en que se intercambian los individuos del las porblaciones del habitat Utilización Información de decición: Migrar Nombre NumMigrantes Tipo de dato Integer Descripción Cantidad de individuos que se intercambian entre poblaciones Utilización Cantidad: Migrar Nombre TipoNormalizador
124
Tipo de dato TipoDeNormalizador Descripción Forma en que se calcula el normalizador del costo Utilización Información de decición: SetHabitat Nombre Normalizador Tipo de dato Moneda Descripción Valor del normalizador de costo Utilización Valor calculado: SetHabitat Nombre Fiestas Tipo de dato VectorIntero Descripción Vector con la posicion de los días festivos respecto a la Fecha Utilización Información para calculodel costo de la asignación Nombre CostoHoraEmpleado Tipo de dato VectorMoneda Descripción Vector del costo de la hora del empleado Utilización Información para calculodel costo de la asignación Nombre InfoEmpleado Tipo de dato Cadena Descripción Información adicional del empleado en el mismo orden de CostoHoraEntrada Utilización Información Nombre Poblaciones Tipo de dato Lista Descripción Referencia a todos las poblaciones que hacen parte del hábitat Utilización Referencia: Delete, CrearHilosPob, ReanudarHilosPob, LibararHilosPob, Play,
DoIncMigraciones, DoDecPobsRun, FindBestInd, FindBestPob, Migrar, Reset
6.5.4.4.2 Métodos
Nombre Add Tipo de método Procedimiento Descripción Adiciona una población al hábitat Parámetros X : objeto Poblacion a adicionar Retorna No aplica Nombre Delete Tipo de método Procedimiento Descripción Borra una población Parámetros Index : Indice de la población a eliminar Retorna No aplica Nombre Play Tipo de método Procedimiento Descripción Inicia la evolución Parámetros No tiene Retorna No aplica
125
Nombre DoDecPobsRun Tipo de método Procedimiento Descripción se ejecuta cuando una población cumple el ciclo de genetaciones Parámetros PobIndex : indice de la población que se detuvo Retorna No aplica Nombre DoIncPobsRun Tipo de método Procedimiento Descripción se ejecuta cuando una población inicia su ciclo evolutivo Parámetros No tiene Retorna No aplica Nombre FindBestPob Tipo de método Funcion Descripción Encuentra la mejor población (con mejor peso promedio) Parámetros No tiene Retorna entero, con el índice de la mejor población Nombre findBestIndPob Tipo de método Funcion Descripción Encuentra la población con el mejor individuo y establece en cada poblacion la
propiedad MejorInd como el mejor indiduo de cada una Parámetros No tiene Retorna entero, con el índice de la población que contiene al mejor individuo Nombre CalcularNormalizador Tipo de método Funcion Descripción Calcula el normalizador Parámetros Tipo : tipo de normalizador Retorna modenda: valor del normalizador Nombre Migrar Tipo de método Procedimiento Descripción inicia la migración en las poblaciones del hábitat Parámetros No tiene Retorna No aplica Nombre CrearHilosPob Tipo de método Procedimiento Descripción crea los hilos que iniciaran la evolución de las respectivas poblaciones Parámetros No tiene Retorna No aplica
Nombre ReanudarHilosPob Tipo de método Procedimiento Descripción Reactiva los hilos de las pobalciones respectivas Parámetros No tiene Retorna No aplica
126
Nombre LiberarHilosPob Tipo de método Procedimiento Descripción Reactiva los hilos de las pobalciones respectivas para que terminen su ejecución Parámetros No tiene Retorna No aplica Nombre Check Tipo de método Funcion Descripción Verifica que las configuraciones del habitat sean las correctas Parámetros No tiene Retorna cadena: mensaje de error, sino una cadena vacía Nombre Reset Tipo de método Procedimiento Descripción Detiene la evolución del habitat Parámetros No tiene Retorna No aplica
6.5.4.4.3 Diagrama de Estado
6.5.4.5 Objeto HiloHabitat
6.5.4.5.1 Propiedades
Figura 24. Diagrama de estado del objeto Hábitat
127
Nombre IdHabitat Tipo de dato Habitat Descripción Referencia al hábitat al que pertenece el hilo Utilización se utiliza la referencia para iniciar el proceso evolutivo en un hilo independiente: Execute Nombre Terminar Tipo de dato Booleano Descripción Switche para detener la evolución del hábiata referenciado por el hilo Utilización Especifica el detenimiento del hilo (en caso de que se este ejecutando): Execute
6.5.4.5.2 Métodos
Nombre Ejecutar Tipo de método Procedimiento Descripción Contiene el código de evolución del habitat Parámetros No tiene Retorna No aplica
6.5.4.5.3 Diagrama de Estado
Figura 25. Diagrama de estado del objeto HiloHabitat
128
6.5.5 Descripción de procesos
Nombre del proceso Nueva asignación Descripción Opción que permite crear o establecer los
parámetros que empleará el algoritmo para realizar la búsqueda de la solución.
Nombre del proceso Abrir asignación Descripción Opción que permite abrir una asignación
existente, para realizar una nueva búsqueda o modificar los parámetros de búsqueda y empezar un nuevo proceso.
Nombre del proceso Selección de personas Descripción Clasificación de las personas que serán
asignadas para laborar en un determinado período.
Entrada Código del empleado, nombre, apellido, y salario de personas a ser clasificadas.
Salida Datos de las personas seleccionadas. Resumen de la lógica
Realizar una consulta por cargos y departamentos. Ejecutar la consulta y seleccionar las personas que serán asignadas, el número de personas lo determina el usuario.
Nombre del proceso Configurar la asignación Descripción Captura de la información correspondiente a la
asignación que se desee buscar. Entrada No de turnos, horas a laborar por semana, No de
personas por turno nocturno, No personas por turno.
Salida Datos que serán constantes durante el proceso de búsqueda de la solución de la asignación correcta.
Resumen de la lógica
Alimentar el módulo de configuración de la asignación, empleando las alternativas de respuesta que presenta el formulario.
129
Nombre del proceso Establecer fechas y festivos. Descripción Se determina el período a laborar, incluyendo los
días festivos. Entrada Fecha inicial y final del período, días festivos Salida Período a laborar en días, incluyendo los festivos. Resumen de la lógica
Alimentar el módulo de establecer fechas y festivos, llenado los campos de la fecha inicial y final, mediante el uso de calendarios visuales y seleccionando los días lo laborales.
Nombre del proceso Explorador / opción configuración avanzada. Descripción Opción que permite acceder al módulo de
configuración avanzada.
Nombre del proceso Configurar hábitat Descripción Captura de la información correspondiente a la
configuración del hábitat. Entrada Valor de parada, cálculo normalizador del costo,
tipo de migración, No de individuos por migración, No de migraciones por ciclo.
Salida Datos que serán constantes durante el proceso de búsqueda de la solución de la asignación correcta.
Resumen de la lógica
Alimentar el módulo de configuración del hábitat, empleando las alternativas de respuesta que presenta el formulario.
Nombre del proceso Configurar población Descripción Captura de la información correspondiente a la
configuración de la población. Entrada Tamaño, generaciones por migración,
coeficientes de factores del peso. Salida Datos que serán constantes durante el proceso
de búsqueda de la solución de la asignación correcta.
Resumen de la lógica
Alimentar el módulo de configuración de la población, empleando las alternativas de respuesta que presenta el formulario.
130
Nombre del proceso Configurar población Descripción Captura de la información correspondiente a la
configuración de la población. Entrada Tamaño, generaciones por migración,
coeficientes de factores del peso. Salida Datos que serán constantes durante el proceso
de búsqueda de la solución de la asignación correcta.
Resumen de la lógica
Alimentar el módulo de configuración de la población, empleando las alternativas de respuesta que presenta el formulario.
Nombre del proceso Configurar especie Descripción Captura de la información correspondiente a la
configuración de la especie. Entrada Modo de selección de parejas, tipo de
reproducción, tipo de reducción, criterio de reemplazo, tamaño de selección por grupos, porcentaje de reproducción, probabilidad de mutación.
Salida Datos que serán constantes durante el proceso de búsqueda de la solución de la asignación correcta.
Resumen de la lógica
El usuario determina los parámetros genéticos que empleará el algoritmo. La selección de los parámetros los determina mediante cuadros de alternativas y campos de valores enteros.
6.5.6 Definición de las estructuras de datos.
6.5.6.1 Diseño de la base de datos. La base de datos empleada por el
algoritmo está compuesta de cuatro tablas, formando una estructura
relacional.
131
6.5.6.1.1 Estructura de tablas
6.5.6.1.1.1 Tabla Asignación. En esta tabla se registran las asignaciones
correspondientes a un período.
Campo Tipo de Dato Dimensión Descripción
ACONSEC Numérico Doble Consecutivo o índice
ACODIGO Cadena 254 carac. Código de la asignación
AEMPLEADO Cadena 6 caract. Código del empleado
AFECHA Fecha Corta Día, mes y año del turno
ATURNO Numérico Doble Clasificación del turno
Tabla 1. Estructura de la tabla Asignación.
6.5.6.1.1.2 Tabla Cargos. Esta tabla contiene la información de todos los
cargos registrados en el plan de cargos.
Campo Tipo de Dato Dimensión Descripción
CCODIGO Cadena 3 caract. Código del cargo
CNOMBRE Cadena 254 carac. Nombre del cargo
CDESCRIPCI Cadena 254 caract. Descripción u observaciones
Tabla 2. Estructura de la tabla Cargos
132
6.5.6.1.1.3 Tabla Dpto. Esta tabla contiene la información de las
secciones o departamentos para los cuales se realice el proceso de
asignación automática.
Campo Tipo de Dato Dimensión Descripción
DCODIGO Cadena 4 caract. Código del departamento
DNOMBRE Cadena 254 carac. Nombre del departamento
DDESCRIP Cadena 254 caract. Descripción u observaciones
Tabla 3. Estructura de la tabla Dpto.
6.5.6.1.1.4 Tabla empleado. En esta tabla se registra la información de los
empleados que laboran en el hospital universitario.
Campo Tipo de Dato Dimensión Descripción
ECODIGO Cadena 6 caract. Código del empleado
ENOMBRES Cadena 16 carac. Nombres del empleado
EAPELLIDOS Cadena 16 caract. Apellidos del empleado
ECEDULA Cadena 11 caract. Número de cédula del empleado
ECARGO Cadena 3 caract. Código del cargo que desempeña
EDPTO Cadena 4 caract. Código del departamento
ESALARIO Numérico Doble Salario mensual
Tabla 4. Estructura de la tabla Empleado.
133
6.5.6.1.2 Modelo Relacional
Figura 26.Modelo relacional de la base de datos del sistema.
134
6.5.6.2 Estructura de relaciones entre los objetos de AG. Para el modelo
de AGs se usa una instancia del objeto Hábitat, una del objeto HioHabitat,
Figura 27. Descripción de objetos según enfoque Coud y Yourdon.
135
una o más instancias del objeto Población e igual número de instancias
para el objeto HiloPoblación, en el estado inicial del modelo pueden no
existir instancias de objetos Individuos.
A continuación se muestra el diagrama de las relaciones Gen-Spec y Todo-
Partes del modelo evolutivo utilizado mediante la notación Coad y
Yourdon. (véase anexo C)
6.6 DESCRIPCIÓN DEL SOFTWARE El Sistema de Asignación de Recursos - SAR, Es un prototipo de
herramienta para asignación de recursos humanos desarrollado sobre la
base de la problemática que al respecto tiene el Hospital Universitario de
Cartagena. El sistema tiene por principal objetivo demostrar que es factible
desarrollar un programa de soporte a la asignación de turnos de la
institución basándose en un modelo de algoritmos genéticos que brinde
respuestas en un tiempo considerable. Con este prototipo no se pretende
reemplazar el actual modelo de asignación de recursos. Por la naturaleza
del proyecto se han omitido algunas consideraciones de la asignación que
no son relevantes para probar su objetividad, tal como el caso de las
vacaciones de empleados y las asignaciones de días de descanso que
simplemente delimitan el espacio de búsqueda. Está pues a consideración
de las directivas del HUC determinar la continuación del presente proyecto
136
hasta elaborar un producto que cumpla con todos estándares; sin embargo
cabe resaltar que este prototipo es funcional y puede ser empleado como
soporte para la ejecución de asignaciones tentativas que luego serán
evaluadas por los responsables de la asignación.
Para la elaboración del software se emplearon: dos estaciones Windows 95
con 32 MB en memoria RAM y procesadores Intel® Celeron® de 400 Mhz y
Pentium® de 166 Mhz; como herramienta de programación se utilizó
Borland® Delphi® 4.0 versión profesional; con las siguientes
actualizaciones:
♦ Update Pack 3 para Borland® Delphi® 4 de Imprise® inc.
(Requiere Update Pack 2 para la instalación). Distribuido por
Imprise® para corrección errores y modificaciones de su producto
(d4pupd2.exe & d4pupd3.exe)
♦ Borland Database Engine Versión 5.10. Distribuido por Imprise®
para la actualización de su motor de base de datos relacional.
(bde510en.exe).
♦ Delphi® 4 VCL&RTL Recursos en Español de México: traducción
de los mensajes de la VCL (Visual Component Library) traducidos
por Favio [email protected] (d4RecEsp.zip).
137
Los archivos reseñados se suministran en directorio:
\software\delphi
de el disco compacto que acompaña este documento, o se pueden
encontrar en el web site de Imprise®: www.imprise.com. Se determinó no
usar herramientas, objetos y/o controles de terceros para mantener la
uniformidad del código y facilitar su evaluación.
Se hace uso además de una base de datos Microsoft® Acces® 97
independiente en donde reposa una réplica de la información actualizada
de la información de los empleados de la institución, se seleccionó el
formato de Microsoft® Acces® por su facilidad en la importación y
vinculación de tablas y otros archivos que permiten su fácil actualización
guardando independencia respecto al programa, el cual no fue concebido
como manejador de la información inherente a los empleados del Hospital;
este además a adoptado a esta herramienta como su estándar
institucional. La base de datos además de las respectivas tablas tiene una
interfaz gráfica* amigable basada en cuatro formularios, desarrollada para
mejorar la facilidad de actualizar la información de la base de datos.
* Necesario tener instalado Microsoft® Acces® 97.
138
El proceso evolutivo en sí está soportado por cinco objetos, definidos cada
uno en una unidad, y en dos unidades de código donde se guardan
declaraciones y procedimientos, estos fueron diseñados de forma exclusiva
para esta aplicación. A continuación se presenta una reseña de las
unidades en mención:
Nombre de la Unidad
Descripción
Hábitat Se define la estructura de datos, métodos, eventos y propiedades del objeto THabitat.
HiloHab Se define la estructura de datos, métodos, eventos y propiedades del objeto ThiloHab (hilo de ejecución).
Población Se define la estructura de datos, métodos, eventos y propiedades del objeto TPoblación.
HiloPob Se define la estructura de datos, métodos, eventos y propiedades del objeto Tpoblación (hilo de ejecución).
Individuo Se define la estructura de datos, métodos y propiedades del objeto Tpoblación.
Biblioteca Se implementan las funciones y procedimientos de aplicación general.
Tipos En esta unidad se definen los tipos de datos, registros, constantes y variables globales empleados por las unidades anteriores.
Tabla 5. Descripción de unidades de código
A continuación se detallan las partes del software que se considera
merecen una descripción adicional a las reseñadas en el diccionarios de
datos.
139
6.6.1 Estructura del cromosoma. Como se estableció en la sección 1.1, un
cromosoma representa una posible solución al problema y hace parte del
espacio de búsqueda a explorar que se delimito en la sección 2.4. los
cromosomas son parte fundamental de la estructura de los individuos, de
hecho, los individuos no tienen razón de ser sin un cromosoma. El
cromosoma empleado en el este proyecto es un arreglo dinámico
compuesto por genes, que a su vez son arreglos dinámicos de vectores de
enteros, como se puede apreciar en la figura 9.
Cada posición de los vectores
de enteros guarda un valor que
oscila entre 0 y el número de
empleados a asignar. Este
número es asignado
incrementalmente, empezando
por uno (1), a un empleado
cuando este se selecciona para
su posible asignación de
turnos. El cero se reserva para
una requisición de turno no
asignada. Los vectores de los que se componen los genes representan las
requisiciones por turno que se necesitan, cada gen representa un día y
Figura 28. Estructura de un cromosoma.
140
tiene vectores como turnos tiene el día, es decir cada vector contenido en
un gen guarda las personas asignadas (tantas como requisiciones haya) en
el turno específico, la estructura soporta un número variable de turnos
pero como se especifico la sección 2.2 el problema se ha delimitado a tres
turnos por día se mantienen constantes. Al representar las asignaciones
diarias con genes, como es obvio un cromosoma representa entonces la
asignación de un período, que se normalmente se estipula de un mes. Las
dimensiones de las estructuras genéticas son:
♦ Número de asignaciones: número de requisiciones o
asignaciones por turno.
♦ Número de segmentos: número de turnos por día.
♦ Número de genes: número de días de la asignación.
♦ Numero de símbolos: número de empleados que se
seleccionaron para la asignación.
Estos parámetros se almacenan en la propiedad Genero del objeto Hábitat,
dado que son las mismas para todas las poblaciones, y por ende para
todos los individuos, permite que dos individuos de diferentes especies y
poblaciones, puedan aparearse. La ubicación de los parámetros de la
estructura genética en el Hábitat también hace posible la migración entre
poblaciones.
141
En la creación de los cromosomas se utiliza el método protegido GetGen;
este regresa una variable de tipo Gen que contiene una asignación diaria
válida, esto es, que no permite que un individuo sea asignado más de una
vez al día, acorde con la delimitación del espacio muestral. Este método es
además usado
6.6.2 La Función de evaluación. El objeto Individuo evalúa internamente
su cromosoma utilizando el método público evaluar; este hace un llamado
al método protegido Idoneidad que establece los factores del peso, que son
los parámetros utilizados para la obtención del peso; son estos:
1. Costo: costo en pesos de la asignación.
2. Personal: número de personas asignadas.
3. Desviación estándar: desviación estándar de las horas asignadas
por persona, muestra la equidad de la asignación.
4. Turnos Dobles: número de veces que se le asigna a algún
empleado dos turnos seguidos o dos noches consecutivas.
5. Horas > 40: número de veces que a algún empleado se le asignan
en promedio más de 40 horas semanales.
6. Turnos de noche > 2: numero de veces que a algún empleado se
le asignan en promedio más de dos turnos nocturnos por
semana.
142
En el método idoneidad están implementadas las funciones salud y
castigo. Una función de castigo es aquella que penaliza a los individuos
que han infringido una restricción marcándolos para ser eliminados o
modificando su peso para que sean menos aptos para sobrevivir, en el
caso de este proyecto se utiliza el segundo esquema. Los factores que
determinan la salud de un individuo son:
♦ Desviación estándar.
♦ Costo de la asignación.
♦ Personal asignado.
Estos factores son inversamente proporcionales a la salud del individuo;
por otro lado los factores que determinan el castigo del individuo son:
♦ Turnos dobles.
♦ Horas > de 40.
♦ Turnos noche > 2.
Estos factores representan restricciones al modelo, su valor ideal es de
cero, sin embargo esto no es camisa de fuerza y es posible contemplar
soluciones en que estos factores tengan valores distintos de cero, como en
el caso de escasez de personal o austeridad presupuestal.
143
El método Evaluar normaliza los factores del peso, a excepción de la
desviación estándar, para que sus valores sean equilibrados a la hora de
obtener el peso; de no ser así la variable costo seria la que determinaría de
mayor forma el valor del peso. La normalización se realiza de la siguiente
manera:
Costo: se divide el costo de la asignación por uno de los siguientes valores:
1. El costo de la asignación suponiendo que todos los empleados
devenguen el salario más bajo.
2. El costo de la asignación suponiendo que todos los empleados
devenguen el salario más alto.
3. El costo de la asignación suponiendo que todos los empleados
devenguen el salario promedio.
4. El costo de la asignación suponiendo que todos los empleados
devenguen el salario promedio de los valores extremos.
5. 1, es decir no se normaliza.
Personal: Porcentaje de empleados asignados, es decir, el número de
empleados asignados dividido entre el número de empleados seleccionados
para la asignación.
Turnos Dobles: razón del número de turnos dobles por personas
asignadas.
144
Horas > 40: razón del número promedio de veces que se asignan más de
cuarenta horas semanales por individuo.
Turnos de noche > 2: razón del número promedio de veces que se asignan
más de dos turnos semanales por individuo.
Por último el método Evaluar multiplica los factores por sus coeficientes,
previamente establecidos en la población y la sumatoria de estos
productos representa el peso del individuo.
6.6.3 Proceso de selección de individuos. Para la operaciones de
reproducción y eliminación es necesario hacer una selección de un
determinado número de individuos de la población; esta selección puede
realizarse de cinco maneras:
1. Selección por peso: los individuos con mayor peso tienen mayor
probabilidad se ser escogidos.
2. Selección por rango: la selección por pesos presenta inconvenientes
en el caso de que las diferencias de peso entre un individuo a otro
sea muy grandes o muy pequeñas, pues en el primer caso los
mejores individuos tienen una probabilidad inmensa de ser
escogidos lo que puede ser desventajoso para la exploración del
145
espacio muestral, y en segundo caso los peores individuos tienen
casi la misma posibilidad de ser escogidos que los mejores. Una
alternativa a este problema es la selección por rango en el que se
ordenan por peso los individuos y a se reparten probabilidades de
acuerdo al orden.
3. Selección elitista: simplemente se escoge a los mejores
directamente, sin una probabilidad asociada.
4. Selección por torneo: tomando grupos al azar de se escoge al
individuo con mejor peso y se repite el proceso para el número de
individuos que se necesite seleccionar. Este tipo de selección tiene la
característica de que nunca se escogerá al peor individuo.
5. Selección aleatoria: se escogen los individuos al azar.
En la selección de las parejas se busca a los individuos mas aptos,
mientras que la selección para reducción se buscan los menos aptos.
6.6.4 Relevo generacional. Es importante la forma en que las nuevas
generaciones entran en la población, esto se determina mediante el criterio
de reemplazo que puede ser por:
1. Inmediato: ocurre cuando la descendencia reemplaza directamente
a sus progenitores.
146
2. Inclusión: los nuevos individuos entran a competir directamente a
la población.
3. Inserción: la prole reemplaza a los individuos menos aptos.
6.6.5 Movimiento de individuos. En los AGs paralelos los individuos de
una población pueden relacionarse con los de las demás poblaciones.
Normalmente los escogidos para el intercambio o más bien para la
clonación a otras poblaciones son la elite de la población emisora. La
forma en como se mueven los individuos se especifica por el tipo de
migración:
1. Ninguna: los individuos permanecen en sus respectivas poblaciones.
2. Anillo: los individuos migran hacia la siguiente población.
3. Estrella: al iniciar la migración se escoge la mejor población,
teniendo en cuenta el peso promedio de los individuos de cada
población, y esta intercambia individuos con las restantes.
4. Red: Todas las poblaciones intercambian individuos.
5. Centralizada: se escoge una población que siempre realizará el
intercambio con las demás.
147
6.6.6 Independencia de las poblaciones. Los objetos poblaciones son
totalmente independientes ente sí, esto es necesario para poder
implementar el paralelismo evolutivo. En cada Población se determinan las
características de la especie, que representa el modo de actuar o las
costumbres en las faenas evolutivas como son los modos de reproducción,
mutación, eliminación etc., y la manera en que cada factor del peso
contribuye al cálculo de este. El índice de contribución de los factores del
peso esta determinado, como se vio en la sección anterior, por los
coeficientes de los respectivos factores del peso, estos se establecen en la
población pues es una característica común a los individuos de una
misma población. Este grupo de propiedades a nivel población, de ninguna
manera inhabilitan a los individuos a migrar de una población a otra pues
se respeta su estructura genética, la cual como se mencionó en la sección
5.1.4.8.2 se encuentra definida en el Hábitat. El intercambio de individuos
entre poblaciones es factible entonces por que las dimensiones de sus
cromosomas son iguales, al pasar de una población a otra el individuo
inmigrante se encuentra ante un medio nuevo y posiblemente hostil, que
lo lleva a una competencia desleal frente a individuos que han
evolucionado y luchado durante muchas generaciones para llegar ahí o
que son el producto de la recombinación de individuos aptos en ese medio.
Las poblaciones pueden tener además distinto número de individuos y
148
distinta frecuencia de migración, es decir, pueden variar cada cuantas
generaciones se detienen a migrar.
6.6.7 Algoritmo evolutivo. La ejecución de la evolución de las poblaciones
está implementada en el método público GeneratioNext del objeto
Población. La secuencia de los procesos de este método es como sigue:
Repetir
{
Seleccionar parejas a cruzar
Determinar el criterio de reemplazo
Cruzar parejas seleccionadas (la mutación está implícita aquí)
Eliminar individuos si hay exceso
Adicionar individuos si hay defecto
Seleccionar el mejor individuo
Si se encontró la solución terminar
}
Hasta se cumplan un número de generaciones
Este método es ejecutado, controlado y regulado en un Hilo de Ejecución
independiente propio del objeto Población que es del tipo HiloPoblacion.
6.6.8 Sincronización de hilos. Alternamente al hilo principal del programa,
en el momento en que se inicia la evolución el objeto Hábitat crea un
nuevo hilo del tipo HiloHabitat que es el encargado de llevar la secuencia
de la evolución del modelo. Este HiloHabitat crea los hilos de las diferentes
149
poblaciones del Hábitat y espera a que cada uno de estos termine con la
evolución de su respectiva Población para luego determinar si le faltan
migraciones por cumplir. El manejo de hilos en este modelo permite
manejar un hilo por cada objeto durante toda la evolución, a diferencia del
modelo anterior, que creaba un hilo por objeto en cada migración,
desperdiciando así valiosos recursos.
6.6.9 La interfaz gráfica. El Programa cuenta con una Interfaz Múltiple de
Formularios (IMF) que permite presentar hasta cuatro subformularios al
tiempo cada uno con información inherente al proceso(ver figura 10),
dependiendo del criterio del usuario. Esta facilita la configuración de cada
uno de los objetos, además permite grabar y recuperar el Hábitat con sus
Poblaciones e Individuos, característica útil pues así es posible detener el
proceso para iniciarlo posteriormente y guardar poblaciones de individuos
saludables para usarlos como población inicial de un nuevo proceso. Para
mayor información, véase Manual del Usuario en anexo D.
150
Figura 29 Interfaz del cuarto modelo
151
CONCLUSIONES
• Los algoritmos genéticos resuelven el problema de asignación de
recursos humanos, en turnos de trabajo; de una manera efectiva y
eficiente en comparación con el sistema tradicional de asignación
empleado en el H.U.C.
• Dado el tamaño del espacio muestral de las posibles soluciones al
problema de la asignación, el uso de modelos matemáticos
convencionales como programación lineal resulta ser
operacionalmente infactible para modelos que como éste varían para
cada sección a la que se esté asignando.
• Los tiempos empleados por la herramienta SAR cumplen con las
expectativas operacionales propuestas por las directivas del HUC,
pues las asignaciones de personal se logran a lo sumo en una hora
por sección.
152
• El uso de modelos distintos al de asignación de recursos, no
representan aportes significativos en la obtención de las
codificaciones y configuraciones del algoritmo empleado, pues estos
parámetros varían dependiendo de las características del problema.
• El sistema SAR que emplea una arquitectura de AG en paralelo,
produjo mejores resultados en la obtención de asignaciones
factibles, que los modelos anteriores a éste que se limitaban a
algoritmos seriales.
• Es posible implementar algoritmos genéticos paralelos con
herramientas de desarrollo convencionales y recursos de máquina a
nivel de microcomputadores (PCs).
• La herramienta desarrollada supera ampliamente al modelo
tradicionalmente empleado en el H.U.C.; además, brinda servicios de
valor agregado como son el control del costo de la asignación y la
equidad en la distribución de los turnos.
• El software despliega información detallada de cualquiera de las
asignaciones encontradas, permitiendo analizar y considerar
muchas otras alternativas a la solución recomendada.
153
• EL uso de modelos de AGs con arquitectura paralela, permite tener
una mayor probabilidad de encontrar mejores resultados, por
cuanto se abarca un mayor espacio de búsqueda.
• Se logró implementar exitosamente en la representación de los genes
estructuras de datos (matrices), en lugar de las representaciones
tradicionales : cadena binaria en la que cada posición representa un
gen, y colección de datos numéricos en los que cada número
representa un gen.
154
RESULTADOS ♦ Este proyecto es pionero en la realización de estudios en la
computación evolutiva, área de inteligencia artificial, demostrando la
capacidad académica e investigativa de la facultad de ingeniería de
sistemas para abordar proyectos de Instituciones externas mediante
modelos experimentales.
♦ Con la implantación de una herramienta computacional para la
programación de horarios de trabajo, se centraliza el proceso de la
elaboración de planillas de turno; éste lo efectuaría el departamento de
recursos humanos, y no cada jefe de departamento, como hasta ocurre.
Esto es posible por la disminución del tiempo y la eficacia de la
herramienta para realizar el proceso. Centralizando el proceso de
asignación, se logra controlar los recursos financieros de la institución,
dado que la herramienta contempla restricciones como el costo de la
asignación.
155
♦ El proyecto concebido como proceso investigativo, es una solución de
un problema real del Hospital Universitario de Cartagena, aplicable a
instituciones con requerimientos similares.
♦ Las configuraciones basadas en selecciones por rango y peso
presentaron mejores prestaciones que los basados por elite, torneo y
rango.
156
RECOMENDACIONES
♦ Es de suma importancia un buen diseño de las estructuras genéticas
(cromosoma y genes) de los individuos y la definición de la función
evaluadora, para el correcto funcionamiento de cualquier modelo de
AGs.
♦ La implementación del modelo de AG basados en el análisis y diseño
orientado a objetos tiene ventajas significativas con respecto a las
formas tradicionales, dado que facilita la codificación y relación entre
las estructuras internas del modelo de AG.
♦ El sistema SAR está diseñado para realizar búsquedas en paralelo,
gracias a la implementación de hilos de ejecución que brinda un pseudo
paralelismo al destinar tiempo del procesador a cada hilo según su
prioridad. Las pruebas de SAR se realizaron en PCs con configuraciones
básicas con resultados satisfactorios. Aunque para este caso en
particular los resultados fueron obtenidos de manera satisfactoria con
los recursos descritos, es recomendable en futuros desarrollos utilizar
157
arquitecturas paralelas en hardware y/o sistema operativo (maquinas
con multiprocesadores y/o sistemas distribuidos).
♦ Migrar las estructuras de SAR a un modelo de objetos distribuidos
como CORBA o COM para explotar más a fondo las prestaciones del
paralelismo implícito y explícito de los algoritmos genéticos paralelos.
♦ Dado el alto uso del procesador que tiene la aplicación (aprox. 90%
según el medidor de recursos de Windows 95) es aconsejable no utilizar
otros programas mientras el SAR este en estado de evolución.
♦ En equipos con recursos limitados en la capacidad de procesamiento
(inferiores a Pentium 166 Mhz) y de memoria (menos de 32 MB en Ram)
se sugiere emplear con poblaciones pequeñas.
♦ Este proyecto esta concebido para servir como base a futuras
investigaciones de AGs o nuevas implementaciones del mismo algoritmo
pues los procedimientos evolutivos están desligados de las fórmulas que
calculan el peso de los individuos. Así pues, las modificaciones
significativas solo se llevan a cabo en los objetos individuos gracias a la
encapsulación del código.
158
BIBLIOGRAFIA
♦ DARWIN, Charles. El Origen de las Especies. 6 ed. Fondo Editorial Progreso. Santafé de Bogotá. 1996. 380 p.
♦ DAVIS, Lawrance. HandBook of Genetic Algorithms. 3 ed.
Internationational Thomson Publishing. New York. 1996. 385 p. ♦ INPRISE CORPORATION. Developer’s Guide, Borland Delphi™ 4 for
Windows 95 and Windows NT. Imprise Corp. U.S.A. 1998.968 p. ♦ INPRISE CORPORATION. Object Pascal Language Guide, Borland
Delphi™ 4 for Windows 95 and Windows NT. Imprise Corp. U.S.A. 1998.263 p.
♦ JOYANES, Luis. Programación en turbo pascal 7. 3 ed. Mc Graw-Hill.
Madrid. 1998. 799 p. ♦ JOYANES, Luis. Programación orientada a objetos. 2 ed. Mc Graw-Hill.
Madrid 1998. 658 p. ♦ KENDALL, Kenneth, Julie Kendall. Análisis y Diseño de sistemas de
Información. 3 ed. Pretince Hall. México D.F. 1997. 942 p. ♦ PRESSMAN, Roger S. Ingeniería del software, un enfoque práctico. 4 ed.
Mc Graw Hill. Madrid. 1999. 823 p. ♦ REISDORPH, Kent. Aprendiendo Borland Delphi 4 en 21 días. Pretince
Hall. México DF. 1999. 706 p. ♦ SENN, James A. Análisis y Diseño de sistemas de Información. 2 ed.
Mc Graw Hill. México DF. 1995. 849 p.
159
♦ SILBERSCHATZ, Abraham; etal, Fundamentos de bases de datos. 2 ed. Mc Graw Hill. Madrid. 1998. 884 p.
♦ WALPOLE, Myers. Probabilidad y estadística. 4 ed. Mc Graw Hill.
México DF. 1993. 797 p.
WEBSITES
♦ http://www.faqs.org/faqs/ga/
♦ http://www.vilspa.esa.es/~jrz/mainesp.html
♦ http://www.ing.udec.cl/~ivillavi/
♦ http://www.trajan-software.demon.co.uk/sugal.htm.
Anexo A. Plan de cargos del H.U.C.
161
162
163
164
165
166
167
Anexo B. Planillas de asignación de turnos del HUC
169
170
Anexo C. Manual del Usuario para el Sistema de Asignación de Recursos SAR.
172
SAR
Sistema para Asignación de Recursos Humanos
Manual del Usuario
173
1 ACERCA DE SAR
El Sistema de Asignación de Recursos - SAR, es un prototipo de
herramienta para asignación de recursos humanos desarrollado
basándose en las necesidades y requerimientos del Hospital Universitario
de Cartagena.
SAR, brinda una interfaz gráfica intuitiva y de fácil manejo tanto para el
usuario que realiza la asignación para un período, como para usuarios que
deseen mejorar el comportamiento del SAR, configurando las opciones que
permiten cambiar los parámetros del algoritmo genético; ésta técnica es la
empleada por SAR, para obtener asignaciones factibles de horarios.
174
2 INSTALACIÓN
2.1 CÓMO INSTALAR SAR Para instalar SAR siga las siguientes recomendaciones:
1. Inserte el disco que tiene la etiqueta SAR disco 1.
2. Pulse en Inicio la opción ejecutar.
3. En el recuadro abrir escriba a:\setup ó d:\setup.
4. Pulse el botón aceptar.
5. El asistente le guiará en el proceso, indicando los pasos para
realizar una correcta instalación.
2.2 REQUERIMIENTOS 2.2.1 Software
SAR es una herramienta diseñada para correr en plataforma Windows 95,
Windows 98 ó Windows NT Server 4.0 SP3.
Para ejecutar el entorno gráfico de la base de datos se requiere tener
instalado MS ACCES 97.
2.2.2 Hardware
SAR Requiere ser instalado en equipos con una configuración básica de:
Procesador Pentium 166 Mhz ó mayor
Memoria RAM 32 Mb
175
Espacio en disco 10 MB
Resolución 800 x 600 pixels.
176
3 USANDO SAR En esta sección se describen los componentes de la interfaz principal de
SAR.
La barra de herramientas, situada en la parte superior de la ventana
principal debajo de la barra del menú, consiste en un número de pequeños
botones identificados por las etiquetas.
� Botón Nuevo: despliega una interfaz de captura de información
necesaria para realizar el proceso de generar una asignación de
turnos.
� Botón Abrir: carga la información de una asignación de períodos
anteriores, sobre ésta se pueden realizar cambios en su
información y proceder a generar una nueva asignación.
� Botón Propiedades: despliega la interfaz para establecer los
parámetros de la asignación de horarios para un período.
177
� Botón Explorador: despliega la interfaz para establecer los
parámetros del algoritmo genético, ver Módulo de configuración
avanzada.
� Botón Información: despliega la interfaz que indica el estado de la
búsqueda de la asignación.
� Botón Iniciar: Ejecuta la búsqueda de la solución, previa
configuración del módulo básico.
Barra de estado: Muestra información de estado y propiedades para
elementos seleccionados.
Barra de Menú: Presenta las mismas opciones que la barra de
herramienta, además de las siguientes:
� Opciones: Ejecuta la ventana de configuración de los valores
iniciales de las propiedades de un hábitat.
� Ayuda: Ejecuta el archivo de ayudas de SAR.
1. MÓDULO DE CONFIGURACIÓN BÁSICA 1.1 Configuración de la Asignación
Este formulario permite al usuario determinar los datos básicos que SAR
requiere para ejecutar la búsqueda de una solución.
El usuario debe suministrar la siguiente información:
178
La barra de herramientas proporciona botones para activar comandos: En
el recuadro nombre escriba el nombre de la asignación.
1. En el recuadro descripción información adicional sobre la asignación, es
opcional.
2. En el recuadro No de asignaciones x turno, seleccione el número de
empleados que serán asignados por turno.
3. En el recuadro No de asig. nocturnas, seleccione el número de
empleados que serán asignados para el turno nocturno.
4. En el recuadro horas trabajo X semana, seleccione la cantidad de horas
que se laborarán durante una semana.
1.2 Configuración de Fechas
En la sección fechas el usuario determina el período a laborar en días.
179
1. Pulsando click en la lista desplegable fecha inicial, despliega un
calendario que le permite seleccionar una fecha.
2. Pulsando click en la lista desplegable fecha final, despliega un
calendario que le permite seleccionar una fecha.
3. Pulsando el botón adicionar y ubicado sobre una fecha establece los
días que se clasifican como festivos o no laborables.
4. Pulsando el botón adicionar y ubicado sobre una fecha establece los
días que se clasifican como festivos o no laborables.
5. Ubicado sobre una fecha de la lista, y pulsando el botón eliminar borra
una fecha.
1.3 Selección de empleados
En este módulo el usuario realiza una clasificación de los empleados que
se deseen asignar.
180
1. Pulse el botón consulta.
2. En la lista desplegable cargo seleccione el cargo que desempeñan las
personas que desea asignar.
3. En la lista desplegable departamento seleccione el departamento o
sección en la cual laboran las personas que desea asignar.
4. Pulse el botón ejecutar para procesar la consulta. Posterior a esto se
presenta la siguiente información.
181
5. Puede desplazarse a través de los registros de la matriz inferior.
Pulsando el botón adicionar ó doble clik agrega empleados a la matriz
ubicada en la sección superior; éstos serán los empleados a ser
asignados.
6. Ubicado en un registro de la matriz superior, elimina el registro de la
selección pulsando el botón eliminar
7. Pulse el botón actualizar para confirmar la información suministrada.
8. Luego de haber completado la información de los módulos
asignaciones, fechas y empleados, proceda con la búsqueda de la
solución pulsando el botón iniciar de la barra de herramienta.
182
2. MÓDULO DE CONFIGURACIÓN AVANZADA Al módulo de configuración avanzada se accede pulsando el botón
explorador de la barra de herramienta, la información manejada
corresponde a la estructura y modo de operación de un algoritmo genético
paralelo. SAR, permite al usuario a través de éste módulo aplicar
fundamentos sobre la teoría de los algoritmos genéticos, éste a su vez
puede tener un uso didáctico.
2.1 Configuración del Hábitat
SAR presenta la sección de explorador de hábitat, donde el usuario
configura los parámetros del hábitat, población y especie.
183
Pulsando con el ratón sobre las imágenes del árbol que representa la
estructura genética, accede el usuario a la ventana de configuración del
hábitat, población y especie.
1. Pulsando clic en la imagen hábitat del árbol, activa la sección de
configuración del hábitat.
2. En el recuadro valor de parada, determine el valor máximo para
detener la búsqueda.
3. En la lista cálculo normalizador del costo, seleccione la forma de
normalizar el costo de cada asignación.
4. En la lista tipo de migración, seleccione el método que empleará el
algoritmo para intercambiar individuos entre poblaciones.
5. En la lista No de individuos por migración, seleccione la cantidad de
individuos que serán intercambiados en cada migración.
6. En la lista No de migraciones por ciclo, seleccione la cantidad de
migraciones que se darán durante el proceso evolutivo.
184
2.2.Configuración de la Población
SAR le permite establecer los parámetros de las poblaciones que se usarán
para la búsqueda de la solución. Pulsando click con el ratón en la división
población del árbol, se accede a la ventana de configuración de la
población.
1. En el recuadro tamaño, determine la cantidad de individuos de cada
una de las poblaciones.
2. En el recuadro Gen x migración, determine el número de generaciones
que se darán antes de proceder a migrar, esto re efectúa para cada
población.
3. Active la opción permitir ind. Iguales, si desea que puedan haber
individuos con igual estructura genética en una población.
185
4. En la sección coeficientes de factores del peso, ubicado en el recuadro
de cada uno de los factores, puede mover el selector y configurar los
valores para cada uno de los factores.
5. Pulse el botón actualizar para confirmar la entrada de la información.
Nota: Para agregar y eliminar poblaciones e individuos, pulse los botones
Más / Menos.
2.3 Configuración de la Especie
SAR le permite establecer los parámetros de la especie. Pulsando click con
el ratón en la división especie del árbol, se accede a la ventana de
configuración de la especie.
186
1. Haga click en la lista selección de parejas, para determinar el modelo de
selección para individuos que serán los progenitores de la siguiente
generación.
2. Haga click en la lista tipo de reproducción, para determinar la forma de
división del cromosoma.
3. Haga click en la lista criterio de reemplazo, para determinar el método
que establece la forma en los individuos nuevos entran a una
población.
4. En el recuadro selección múltiple de individuos, determine el número de
veces que un individuo puede ser escogido como padre. El valor cero
representa ilimitado.
5. En el recuadro tamaño de selección por grupos, determine el número de
individuos que serán escogidos como padres, si el tipo de reproducción
es elitista, en el tipo de reproducción por tornero representa el número
de individuos que compiten para ser seleccionados.
6. En el recuadro porcentaje de reproducción, determine el porcentaje de
individuos que se aparean en una población.
7. En el recuadro probabilidad de mutación, determine la probabilidad de
que un gen de un nuevo individuo mute.
3. MÓDULO DE RESULTADOS 3.1 Información de la Asignación
Después de ejecutar el proceso de búsqueda, SAR presenta la ventana de
información de la asignación, donde despliega los resultados de la
búsqueda. Esta información corresponde al individuo con mejor peso.
187
La ventana información de la asignación presenta cuatro secciones:
� Encabezado: nombre y descripción de las asignación.
� Análisis de los factores del peso: valores resultantes de la desviación
estándar, costo de la asignación, numero de personas con turnos
dobles, cantidad de personas que fueron asignadas, número de
personas que pasaron de cuarenta horas de labores por semana,
número de personas que laborarán más de dos turnos nocturnos en
una semana, total del peso del individuo(asignación).
� Cuadrícula de información: datos de los empleados asignados.
� Cuadrícula de factores: valores de los factores del peso por cada
empleado.
� Cuadrícula de asignación: distribución de los horarios de trabajo para
cada empleado.
Si desea imprimir la planilla de asignación pulse en el botón imprimir.
188
3.2 Información del Proceso de Búsqueda
SAR presenta una ventana que informa sobre el comportamiento del
proceso de búsqueda, a ésta se accede pulsando el botón información de la
barra de herramientas de la ventana principal.
Anexo D. Notación de representación de objetos según enfoque Coad y Yourdon.
190
Figura 30. notación de representación de objetos según enfoque coad y yourdon