Cromosoma (computación evolutiva)
- Para más información sobre los cromosomas en biología, véase cromosoma.
En el ámbito de los algoritmos genéticos (AG) y, de manera más general, en los algoritmos evolutivos (AE), el término “cromosoma” (también conocido como “genotipo”) se refiere a un conjunto de parámetros que definen una propuesta de solución al problema que el algoritmo evolutivo intenta resolver. Este conjunto de soluciones, siguiendo el modelo biológico, se denomina “población”.[1][2]
El genoma de un individuo está compuesto por uno o, en casos menos frecuentes, varios cromosomas.[3][4] Este genoma representa la codificación genética de la tarea a resolver. Un cromosoma está constituido por un conjunto de genes, donde cada gen consiste en uno o más parámetros semánticamente conectados, comúnmente denominados “variables de decisión”. Estos genes determinan o influyen en una o más características fenotípicas del individuo.[2]
En la forma básica de los algoritmos genéticos, los cromosomas se representan como cadenas binarias.[5] Sin embargo, en variantes posteriores[6][7] y en los algoritmos evolutivos en general, se emplea una amplia variedad de otras estructuras de datos para representar los cromosomas.[8][9][10]
Diseño cromosómico
editarAl diseñar la representación genética de una tarea, es fundamental determinar qué variables de decisión y otros grados de libertad deben ser optimizados por el Algoritmo Evolutivo (AE) y posibles heurísticos adicionales. Además, es crucial definir cómo debe realizarse el mapeo entre el genotipo y el fenotipo. El diseño de un cromosoma traduce estas consideraciones en estructuras de datos concretas, para las cuales se debe seleccionar, configurar, ampliar o, en el peor de los casos, crear un AE específico.
Encontrar una representación adecuada del dominio del problema para un cromosoma es una consideración esencial, ya que una buena representación facilita la búsqueda al limitar el espacio de búsqueda. Por el contrario, una representación inadecuada puede ampliar innecesariamente el espacio de búsqueda.[11] En este contexto, también es necesario definir o rediseñar operadores de mutación y recombinación que se ajusten al diseño del cromosoma elegido.[2] Un requisito importante para estos operadores es que no solo permitan alcanzar, en principio, todos los puntos del espacio de búsqueda, sino que también faciliten esta tarea al máximo.[12][13]
Un cromosoma bien adaptado debe cumplir los siguientes requisitos:
- Debe permitir la accesibilidad a todos los puntos admisibles en el espacio de búsqueda.
- El diseño del cromosoma debe cubrir únicamente el espacio de búsqueda relevante, evitando zonas adicionales innecesarias.
- Debe minimizar la redundancia en la medida de lo posible.
- Pequeños cambios en el cromosoma deben provocar solo pequeños cambios en el fenotipo[14], lo que también se conoce como localidad de la relación entre el espacio de búsqueda y el espacio del problema.
- El diseño del cromosoma debe excluir por completo, o en la mayor medida posible, las regiones prohibidas en el espacio de búsqueda.
Aunque el primer requisito es indispensable, dependiendo de la aplicación y del AE utilizado, generalmente se debe aspirar a cumplir el resto de los requisitos en la mayor medida posible. Sin embargo, es importante tener en cuenta que la búsqueda evolutiva se ve apoyada y posiblemente acelerada considerablemente por un cumplimiento lo más completo posible de estos requisitos.
Ejemplos de cromosomas
editarCromosomas para codificaciones binarias
editarEn su forma clásica, los Algoritmos Genéticos (AG) utilizan cadenas de bits para representar las variables de decisión que se desean optimizar. A continuación, se presenta un ejemplo con una variable booleana y tres variables enteras con los siguientes rangos de valores , y que puede ilustrar esto:
variable de decisión: | |||||||||||||||||
bits: | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
posición: | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
Tenga en cuenta que aquí el número negativo se da en complemento a dos. Esta representación directa utiliza cinco bits para representar los tres valores de , aunque bastaría con dos bits. Se trata de una redundancia importante. Una alternativa mejorada, en la que se añada 28 para la correspondencia genotipo-fenotipo, podría ser la siguiente:
variable de decisión: | ||||||||||||||
bits: | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
posición: | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
donde
Cromosomas con genes de valor real o entero
editarPara el procesamiento de tareas que involucran variables de decisión con valores reales o enteros mixtos, se recomienda el uso de Algoritmos Evolutivos (EA) como la estrategia evolutiva,[15] o Algoritmos Genéticos (AG) de codificación real.[16][17][18] En el caso de variables con valores enteros mixtos, a menudo se recurre al redondeo, aunque esto puede violar el requisito de no redundancia. Si las precisiones necesarias de los valores reales pueden reducirse de manera razonable, esta violación puede ser mitigada utilizando AG codificados por enteros.[19][20]
Para lograr esto, los dígitos significativos de los valores reales se convierten en enteros mediante la multiplicación por un factor adecuado. Por ejemplo, el valor 12,380 se convierte en el número entero 12380 al multiplicarlo por 1000. Es importante tener en cuenta este factor en el mapeo genotipo-fenotipo para la evaluación y presentación de resultados. Una forma común de representar esto es mediante un cromosoma compuesto por una lista o matriz de valores enteros o reales.
Cromosomas para permutaciones
editarLos problemas combinatorios se centran principalmente en la identificación de una secuencia óptima dentro de un conjunto de elementos básicos. Un ejemplo clásico de este tipo de problema es el del viajante de comercio, quien debe visitar un número determinado de ciudades exactamente una vez, siguiendo la ruta más corta posible.
La forma más sencilla y directa de asignar esta tarea a un cromosoma consiste en numerar las ciudades de manera consecutiva, interpretar la secuencia resultante como una permutación y almacenarla directamente en un cromosoma. En este contexto, cada gen del cromosoma corresponde al número ordinal de una ciudad específica.[21]
Es importante destacar que los operadores de variación en este modelo solo pueden alterar el orden de los genes, sin eliminar ni duplicar ninguno de ellos.[22] De esta manera, el cromosoma representa la ruta de un posible recorrido por las ciudades. Por ejemplo, consideremos la secuencia para un conjunto de nueve ciudades. Esta secuencia se traduce en el siguiente cromosoma:
3 | 5 | 7 | 1 | 4 | 2 | 9 | 6 | 8 |
Además de esta codificación, frecuentemente denominada representación del camino, existen otras formas de representar una permutación, como la representación ordinal o la representación matricial.[22][23]
Cromosomas para la coevolución
editarLa coevolución se refiere a un proceso en el cual una representación genética incluye, además de las variables de decisión, información adicional que influye tanto en la evolución como en el mapeo del genotipo al fenotipo. Esta información adicional también está sujeta a evolución. Un ejemplo clásico de este fenómeno es la Estrategia Evolutiva (ES), que incorpora uno o más tamaños de paso de mutación como parámetros estratégicos en cada cromosoma.[15]
Otro ejemplo de coevolución es la inclusión de un gen adicional que regula una heurística de selección para la asignación de recursos en una tarea de programación.[24] Este enfoque se fundamenta en la premisa de que las soluciones óptimas dependen de una selección adecuada de los parámetros estratégicos o de genes de control que influyen en el mapeo genotipo-fenotipo. El éxito observado en la aplicación de las Estrategias Evolutivas (ES) respalda esta hipótesis.
Cromosomas para representaciones complejas
editarLos cromosomas descritos anteriormente son altamente adecuados para abordar tareas de optimización continua, mixta entera, entera pura o combinatoria. Sin embargo, cuando se trata de una combinación de estas áreas de optimización, se vuelve cada vez más complejo mapearlas a simples cadenas de valores, dependiendo de la tarea específica. Para abordar esta complejidad, el Algoritmo Evolutivo de Aprendizaje General (GLEAM, por sus siglas en inglés) propone una extensión del concepto de gen.[25]
En este contexto, un gen se define como la descripción de un elemento o rasgo elemental del fenotipo, el cual puede tener múltiples parámetros. Para ello, se establecen tipos de genes que contienen tantos parámetros del tipo de datos apropiado como sean necesarios para describir el elemento concreto del fenotipo. Un cromosoma, por lo tanto, se compone de genes que actúan como objetos de datos de los tipos de genes definidos. Dependiendo de la aplicación, cada tipo de gen puede aparecer exactamente una vez como gen o puede estar contenido en el cromosoma en múltiples ocasiones. Esta flexibilidad da lugar a cromosomas de longitud dinámica, necesarios para resolver ciertos problemas.[26][27]
Las definiciones de los tipos de genes también incluyen información sobre los rangos de valores permitidos para los parámetros de los genes. Estos rangos se respetan tanto durante la generación del cromosoma como durante las mutaciones correspondientes, evitando así mutaciones letales. Para las tareas que incluyen una parte combinatoria, existen operadores genéticos adecuados que pueden mover o reposicionar los genes en su totalidad, es decir, junto con sus parámetros.
Como ejemplo, consideremos una tarea de programación en la que deben diseñarse flujos de trabajo que requieren distintos números de recursos heterogéneos. Un flujo de trabajo especifica qué pasos pueden procesarse en paralelo y cuáles deben ejecutarse secuencialmente. En este contexto, los recursos heterogéneos implican tiempos de procesamiento diferentes, costos variados y capacidades de procesamiento distintas.[24] Por lo tanto, cada operación de programación requiere uno o más parámetros que determinen la selección de recursos, donde los rangos de valores de los parámetros dependen del número de recursos alternativos disponibles para cada paso de trabajo.
Un cromosoma adecuado proporciona un tipo de gen por cada paso de trabajo y, en este caso, un gen correspondiente que tiene un parámetro para cada recurso requerido. El orden de los genes determina el orden de las operaciones de programación y, por tanto, la precedencia en caso de conflictos de asignación. Por ejemplo, la definición del tipo de gen para el paso de trabajo 15, que requiere dos recursos con cuatro y siete alternativas respectivamente, se vería como se muestra en la imagen de la izquierda. Dado que los parámetros representan índices en listas de recursos disponibles para el respectivo paso de trabajo, su rango de valores comienza en 0. La imagen de la derecha muestra un ejemplo de tres genes de un cromosoma pertenecientes a los tipos de genes en representación de lista.
Cromosomas para representaciones en árbol
editarLas representaciones en forma de árbol de un cromosoma son empleadas en la programación genética, una rama de los algoritmos evolutivos (EA), para la generación de programas o circuitos informáticos. Estos árboles corresponden a los árboles sintácticos generados por un compilador, los cuales actúan como una representación interna durante el proceso de traducción de un programa informático.
En la figura adyacente se presenta, a modo de ejemplo, el árbol sintáctico de una expresión matemática. Los operadores de mutación tienen la capacidad de reordenar, modificar o eliminar subárboles, basándose en la estructura sintáctica representada. La recombinación, por su parte, se lleva a cabo mediante el intercambio de subárboles adecuados, permitiendo así la combinación de diferentes partes de los árboles para generar nuevas soluciones.
Bibliografía
editar- Thomas Bäck (1996): Algoritmos Evolutivos en Teoría y Práctica: Evolution Strategies, Evolutionary Programming, Genetic Algorithms. Oxford University Press. ISBN 978-0-19-509971-3.
- Wolfgang Banzhaf, P. Nordin, R. Keller, F. Francone (1998): Genetic Programming - An Introduction. Morgan Kaufmann, San Francisco. ISBN 1-55860-510-X.
- Kenneth A. de Jong (2006): Evolutionary Computation: A Unified Approach. MIT Press, Cambridge, MA. ISBN 0-262-04194-4.
- Melanie Mitchell (1996): An Introduction to Genetic Algorithms (Introducción a los algoritmos genéticos). MIT Press, Cambridge, MA. ISBN 978-0-262-63185-3.
- Hans-Paul Schwefel (1995): Evolution and Optimum Seeking. Wiley & Sons, Nueva York. ISBN 0-471-57148-2.
Referencias
editar- ↑ «Genetic Algorithm Description - Introduction to Genetic Algorithms - Tutorial with Interactive Java Applets». www.obitko.com. Consultado el 22 de julio de 2024.
- ↑ a b c Introduction to Evolutionary Computing (en inglés). doi:10.1007/978-3-662-44874-8. Consultado el 22 de julio de 2024.
- ↑ Baine, Nicholas (2008-05). «A simple multi-chromosome genetic algorithm optimization of a Proportional-plus-Derivative Fuzzy Logic Controller». NAFIPS 2008 - 2008 Annual Meeting of the North American Fuzzy Information Processing Society (IEEE). doi:10.1109/nafips.2008.4531273. Consultado el 22 de julio de 2024.
- ↑ Peng, Jin; Chu, Zhang Shu (2010-11). «A Hybrid Multi-chromosome Genetic Algorithm for the Cutting Stock Problem». 2010 3rd International Conference on Information Management, Innovation Management and Industrial Engineering (IEEE). doi:10.1109/iciii.2010.128. Consultado el 22 de julio de 2024.
- ↑ «Adaptation in natural and artificial systems : an introductory analysis with applications to biology, control, and artificial intelligence | WorldCat.org». search.worldcat.org. Consultado el 22 de julio de 2024.
- ↑ «Proceedings of the fourth international conference on Genetic algorithms». www.semanticscholar.org. Consultado el 22 de julio de 2024.
- ↑ Whitley, Darrell (1 de junio de 1994). «A genetic algorithm tutorial». Statistics and Computing (en inglés) 4 (2): 65-85. ISSN 1573-1375. doi:10.1007/BF00175354. Consultado el 22 de julio de 2024.
- ↑ Whitley, Darrell (15 de diciembre de 2001). «An overview of evolutionary algorithms: practical issues and common pitfalls». Information and Software Technology 43 (14): 817-831. ISSN 0950-5849. doi:10.1016/S0950-5849(01)00188-4. Consultado el 22 de julio de 2024.
- ↑ Schwefel, Hans-Paul (1 de enero de 1991). A survey of evolution strategies. Consultado el 22 de julio de 2024.
- ↑ «Genetic programming : on the programming of computers by means of natural selection | WorldCat.org». search.worldcat.org. Consultado el 22 de julio de 2024.
- ↑ «Genetic algorithms». web.archive.org. 22 de octubre de 2019. Consultado el 22 de julio de 2024.
- ↑ Representations for Genetic and Evolutionary Algorithms (en inglés). doi:10.1007/978-3-642-88094-0. Consultado el 22 de julio de 2024.
- ↑ Introduction to Evolutionary Computing (en inglés). doi:10.1007/978-3-662-44874-8. Consultado el 22 de julio de 2024.
- ↑ Galván-López, Edgar; McDermott, James; O'Neill, Michael; Brabazon, Anthony (7 de julio de 2010). «Towards an understanding of locality in genetic programming». Proceedings of the 12th annual conference on Genetic and evolutionary computation. GECCO '10 (Association for Computing Machinery): 901-908. ISBN 978-1-4503-0072-8. doi:10.1145/1830483.1830646. Consultado el 22 de julio de 2024.
- ↑ a b «Evolution and optimum seeking | WorldCat.org». search.worldcat.org. Consultado el 22 de julio de 2024.
- ↑ Eshelman, Larry J.; Schaffer, J. David (1 de enero de 1993). Whitley, L. DARRELL, ed. Real-Coded Genetic Algorithms and Interval-Schemata. Foundations of Genetic Algorithms 2. Elsevier. pp. 187-202. doi:10.1016/b978-0-08-094832-4.50018-0. Consultado el 22 de julio de 2024.
- ↑ «Genetic Algorithms + Data Structures = Evolution Programs | WorldCat.org». search.worldcat.org. Consultado el 22 de julio de 2024.
- ↑ Deep, Kusum; Singh, Krishna Pratap; Kansal, M. L.; Mohan, C. (15 de junio de 2009). «A real coded genetic algorithm for solving integer and mixed integer optimization problems». Applied Mathematics and Computation 212 (2): 505-518. ISSN 0096-3003. doi:10.1016/j.amc.2009.02.044. Consultado el 22 de julio de 2024.
- ↑ Wang, Fuchang; Cao, Huirong; Qian, Xiaoshi (2011). «Decimal-Integer-Coded Genetic Algorithm for Trimmed Estimator of the Multiple Linear Errors in Variables Model». En Liu, Baoxiang, ed. Information Computing and Applications (en inglés) (Springer): 359-366. ISBN 978-3-642-25255-6. doi:10.1007/978-3-642-25255-6_46. Consultado el 22 de julio de 2024.
- ↑ «Integer Encoding Genetic Algorithm for Optimizing Redundancy Allocation of Series-parallel Systems». www.semanticscholar.org. Consultado el 22 de julio de 2024.
- ↑ Introduction to Evolutionary Computing (en inglés). doi:10.1007/978-3-662-44874-8. Consultado el 22 de julio de 2024.
- ↑ a b Larrañaga, P.; Kuijpers, C.M.H.; Murga, R.H.; Inza, I.; Dizdarevic, S. (1 de abril de 1999). «Genetic Algorithms for the Travelling Salesman Problem: A Review of Representations and Operators». Artificial Intelligence Review (en inglés) 13 (2): 129-170. ISSN 1573-7462. doi:10.1023/A:1006529012972. Consultado el 22 de julio de 2024.
- ↑ «Evolutionary computation. Vol. 1, Basic algorithms and operators | WorldCat.org». search.worldcat.org. Consultado el 22 de julio de 2024.
- ↑ a b Jakob, Wilfried; Strack, Sylvia; Quinte, Alexander; Bengel, Günther; Stucky, Karl-Uwe; Süß, Wolfgang (2013-06). «Fast Rescheduling of Multiple Workflows to Constrained Heterogeneous Resources Using Multi-Criteria Memetic Computing». Algorithms (en inglés) 6 (2): 245-277. ISSN 1999-4893. doi:10.3390/a6020245. Consultado el 22 de julio de 2024.
- ↑ Blume, C.; Jakob, W. (2002). GLEAM - An Evolutionary Algorithm for Planning and Control Based on Evolution Strategy. Consultado el 22 de julio de 2024.
- ↑ Pawar, Sunil Nilkanth; Bichkar, Rajankumar Sadashivrao (1 de junio de 2015). «Genetic algorithm with variable length chromosomes for network intrusion detection». International Journal of Automation and Computing (en inglés) 12 (3): 337-342. ISSN 1751-8520. doi:10.1007/s11633-014-0870-x. Consultado el 22 de julio de 2024.
- ↑ Blume, Christian (2000). «Optimized Collision Free Robot Move Statement Generation by the Evolutionary Software GLEAM». En Cagnoni, Stefano, ed. Real-World Applications of Evolutionary Computing (en inglés) (Springer): 330-341. ISBN 978-3-540-45561-5. doi:10.1007/3-540-45561-2_32. Consultado el 22 de julio de 2024.