Una función de aptitud es un tipo particular de función objetivo que se utiliza para resumir, como una única cifra de mérito , lo cerca que está una solución de diseño determinada de lograr los objetivos establecidos. Las funciones de aptitud se utilizan en la arquitectura de software y en algoritmos evolutivos (EA) , como la programación genética y los algoritmos genéticos, para guiar las simulaciones hacia soluciones de diseño óptimas. [1]
Los programadores de software saben que no deben publicar código incorrecto, pero esa prioridad compite con muchas otras prioridades de los desarrolladores ocupados. Por eso deben usar funciones de aptitud para mantener su software bajo control. [2]
En el campo de los EA, cada solución de diseño se representa comúnmente como una cadena de números (denominada cromosoma ). Después de cada ronda de prueba o simulación, la idea es eliminar las n peores soluciones de diseño y generar n nuevas a partir de las mejores soluciones de diseño. Por lo tanto, cada solución de diseño debe recibir una cifra de mérito, para indicar qué tan cerca estuvo de cumplir con la especificación general, y esto se genera aplicando la función de aptitud a los resultados de la prueba o simulación obtenidos a partir de esa solución. [3]
Existen dos clases principales de funciones de aptitud: una en la que la función de aptitud no cambia, como en la optimización de una función fija o la prueba con un conjunto fijo de casos de prueba; y otra en la que la función de aptitud es mutable, como en la diferenciación de nicho o la coevolución del conjunto de casos de prueba. [4] [5] Otra forma de ver las funciones de aptitud es en términos de un paisaje de aptitud , que muestra la aptitud para cada cromosoma posible. A continuación, se supone que la aptitud se determina en función de una evaluación que permanece sin cambios durante una ejecución de optimización.
Una función de aptitud no necesariamente tiene que poder calcular un valor absoluto, ya que a veces es suficiente comparar candidatos para seleccionar el mejor. Una indicación relativa de aptitud (el candidato a es mejor que b) es suficiente en algunos casos [6] , como la selección en torneos o la optimización de Pareto .
La calidad de la evaluación y el cálculo de una función de aptitud es fundamental para el éxito de una optimización EA. Implementa el principio de Darwin de "supervivencia del más apto". Sin mecanismos de selección basados en la aptitud para la selección de pareja y la aceptación de la descendencia, la búsqueda EA sería ciega y difícilmente distinguible del método de Monte Carlo . Al establecer una función de aptitud, uno siempre debe ser consciente de que se trata de algo más que simplemente describir el estado objetivo deseado. Más bien, la búsqueda evolutiva en el camino hacia el óptimo también debe ser apoyada tanto como sea posible (ver también la sección sobre objetivos auxiliares), siempre y cuando esto no sea ya realizado por la función de aptitud por sí sola. Si la función de aptitud está mal diseñada, el algoritmo convergerá en una solución inadecuada o tendrá dificultades para converger en absoluto.
La definición de la función de aptitud no es sencilla en muchos casos y, a menudo, se realiza de forma iterativa si las soluciones más adecuadas producidas por un EA no son las deseadas. Los algoritmos genéticos interactivos abordan esta dificultad subcontratando la evaluación a agentes externos que, normalmente, son humanos.
La función de aptitud no solo debe estar estrechamente relacionada con el objetivo del diseñador, sino que también debe ser eficiente desde el punto de vista computacional. La velocidad de ejecución es muy importante, ya que un algoritmo genético típico debe repetirse muchas veces para producir un resultado utilizable para un problema no trivial.
La aproximación de aptitud [7] [8] puede ser apropiada, especialmente en los siguientes casos:
Como alternativa o además de la aproximación de aptitud, los cálculos de aptitud también se pueden distribuir a un ordenador paralelo para reducir los tiempos de ejecución. Dependiendo del modelo de población del EA utilizado, tanto el EA en sí como los cálculos de aptitud de todos los descendientes de una generación se pueden ejecutar en paralelo. [10] [11] [12]
Las aplicaciones prácticas suelen tener como objetivo optimizar objetivos múltiples y al menos parcialmente conflictivos. Para ello se suelen utilizar dos enfoques fundamentalmente diferentes: la optimización de Pareto y la optimización basada en la aptitud calculada mediante la suma ponderada . [13]
En la optimización con suma ponderada, primero se normalizan los valores individuales de los objetivos para poder compararlos. Esto se puede hacer con la ayuda de los costes o especificando valores objetivo y determinando el valor actual como grado de cumplimiento. A continuación, los costes o grados de cumplimiento se pueden comparar entre sí y, si es necesario, también se pueden asignar a una escala de aptitud uniforme. Sin pérdida de generalidad , se supone que la aptitud representa un valor que se debe maximizar. A cada objetivo se le asigna un peso en forma de valor porcentual para que la aptitud bruta general se pueda calcular como una suma ponderada:
Una violación de las restricciones puede incluirse en la aptitud determinada de esta manera en forma de funciones de penalización . Para ello, se puede definir una función para cada restricción que devuelva un valor entre y en función del grado de violación, siendo el resultado si no hay violación. La aptitud bruta previamente determinada se multiplica por la(s) función(es) de penalización y el resultado es entonces la aptitud final : [14]
Este enfoque es sencillo y tiene la ventaja de poder combinar cualquier número de objetivos y restricciones. La desventaja es que los diferentes objetivos pueden compensarse entre sí y que los pesos deben definirse antes de la optimización. [13] Además, es posible que no se obtengan determinadas soluciones, véase el apartado sobre la comparación de ambos tipos de optimización .
Una solución se denomina óptima en el sentido de Pareto si la mejora de un objetivo solo es posible con un deterioro de al menos otro objetivo. El conjunto de todas las soluciones óptimas en el sentido de Pareto, también llamado conjunto de Pareto, representa el conjunto de todos los compromisos óptimos entre los objetivos. La figura de abajo a la derecha muestra un ejemplo del conjunto de Pareto de dos objetivos que se deben maximizar. Los elementos del conjunto forman el frente de Pareto (línea verde). A partir de este conjunto, un tomador de decisiones humano debe seleccionar posteriormente la solución de compromiso deseada. [13] Las restricciones se incluyen en la optimización de Pareto en el sentido de que las soluciones sin violaciones de restricciones son per se mejores que aquellas con violaciones. Si dos soluciones que se van a comparar tienen cada una violaciones de restricciones, el grado respectivo de las violaciones es decisivo. [15]
Se reconoció desde el principio que los EA con su conjunto de soluciones consideradas simultáneamente son muy adecuados para encontrar soluciones en una ejecución que cubran suficientemente bien el frente de Pareto. [15] [16] Además del SPEA2, [17] el NSGA-II [18] y el NSGA-III [19] [20] se han establecido como métodos estándar.
La ventaja de la optimización de Pareto es que, a diferencia de la suma ponderada, ofrece todas las alternativas que son equivalentes en términos de los objetivos como una solución global. La desventaja es que la visualización de las alternativas se vuelve problemática o incluso imposible a partir de cuatro objetivos. Además, el esfuerzo aumenta exponencialmente con el número de objetivos. [14] Si hay más de tres o cuatro objetivos, algunos deben combinarse utilizando la suma ponderada u otros métodos de agregación. [13]
Con la ayuda de la suma ponderada, el frente de Pareto total se puede obtener mediante una elección adecuada de pesos, siempre que sea convexo . [21] Esto se ilustra en la imagen adyacente a la izquierda. El punto en el frente de Pareto verde se alcanza con los pesos y , siempre que el EA converja al óptimo. La dirección con la mayor ganancia de aptitud en el conjunto de soluciones se muestra con las flechas dibujadas.
Sin embargo, en el caso de un frente no convexo, las secciones frontales no convexas no son alcanzables mediante la suma ponderada. En la imagen adyacente a la derecha, esta es la sección entre los puntos y . Esto se puede remediar en cierta medida utilizando una extensión de la suma ponderada, la suma ponderada en cascada . [14]
Comparando ambos enfoques de evaluación, el uso de la optimización de Pareto es ciertamente ventajoso cuando se sabe poco sobre las posibles soluciones de una tarea y cuando el número de objetivos de optimización se puede reducir a tres, como máximo cuatro. Sin embargo, en el caso de la optimización repetida de variaciones de una misma tarea, las líneas de compromiso deseadas suelen ser conocidas y el esfuerzo para determinar todo el frente de Pareto ya no está justificado. Esto también es cierto cuando no se desea o no es posible una decisión humana después de la optimización, como en los procesos de decisión automatizados. [14]
Además de los objetivos primarios que resultan de la propia tarea, puede ser necesario incluir en la evaluación objetivos auxiliares para apoyar la consecución de uno o más objetivos primarios. A modo de ilustración, se utiliza un ejemplo de una tarea de programación. Los objetivos de optimización incluyen no sólo un procesamiento rápido general de todos los pedidos, sino también el cumplimiento de un plazo de finalización tardío. Esto último es especialmente necesario para la programación de pedidos urgentes. El segundo objetivo no se consigue con el cronograma inicial ejemplar, como se muestra en la figura adyacente. Una mutación posterior no cambia esto, sino que programa antes el paso de trabajo d , que es un paso intermedio necesario para un inicio más temprano del último paso de trabajo e del pedido. Sin embargo, mientras sólo se evalúe el plazo de finalización tardío, la adecuación del cronograma mutado permanece inalterada, aunque represente un paso relevante hacia el objetivo de una finalización oportuna del pedido. Esto se puede remediar, por ejemplo, mediante una evaluación adicional del retraso de los pasos de trabajo. El nuevo objetivo es un objetivo auxiliar, ya que se introdujo además de los objetivos de optimización reales para apoyar su consecución. Se puede encontrar una descripción más detallada de este enfoque y otro ejemplo en [22] .
{{cite book}}
: |work=
ignorado ( ayuda )