Resumen | En este trabajo hacemos un estudio sobre los algoritmos evolutivos, centrándonos en la estrategia evolutiva,
para lo que nos serviremos de programas desarrollados en Matlab 2016. Hablaremos también del diseño
de aeronaves ...
En este trabajo hacemos un estudio sobre los algoritmos evolutivos, centrándonos en la estrategia evolutiva,
para lo que nos serviremos de programas desarrollados en Matlab 2016. Hablaremos también del diseño
de aeronaves y trataremos de aplicar lo estudiado en un caso práctico de desarrollo de algoritmos
evolutivos para automatizar parte del diseño preliminar de una aeronave convencional de transporte,
procedimiento que a día de hoy es un tanto ‘artesanal’.
El diseño de una aeronave es un proceso complejo, que empieza con un diseño conceptual muy básico, prosigue
con un diseño preliminar, del que tiene que salir un avión muy bien definido, y finaliza con un diseño de detalle,
del que salen diseños de todos los elementos listos para fabricar. El programa que se desarrollará nos permite
iniciar el diseño preliminar, en un punto en el que tenemos poca información y en el que un diseño convencional
utilizaría datos de aeronaves semejantes. Para ello, el programa empleará estrategias evolutivas.
Una estrategia evolutiva es un sistema de optimización basado en la teoría de la evolución darwinista. El
concepto general es crear una población de individuos con unas características aleatorias. Posteriormente se
evalúan numéricamente en la función a optimizar cómo de ‘buenos’ son estos elementos y se eliminan los que
presenten una peor puntuación. Los elementos restantes se mezclan, se reproducen y se mutan, para crear una
población nueva que tendrá, en general, mejores características que la anterior. Comúnmente este procedimiento
converge al máximo absoluto de la función a optimizar, evitando quedarse atascado en máximos locales y de
forma relativamente rápida si los parámetros del algoritmo están bien escogidos.
En el caso concreto del problema de diseño de avión nos encontramos con un tema interesante y complejo. Esto
es, el problema de cómo evaluar numéricamente lo ‘bueno’ que es un avión. Para ello se valorarán diversos
parámetros, se adimensionalizarán para poder compararlos, y se fusionarán dando más importancia a lo que el
usuario del código prefiera, llegando a una especie de función de optimización ‘hecha a medida’ para el usuario
del programa, denominada función de fitness.
Además, es importante escoger adecuadamente los elementos de la población. El elemento ‘avión’ a optimizar
es un vector que contiene información de la aeronave. Esta información debe ser adecuada para el algoritmo
evolutivo, así como relevante en la evaluación de la aeronave. El problema de encontrar un grupo de parámetros
que definan un avión de forma preliminar, que sean relevantes en la evaluación de la aeronave y que permitan
funcionar correctamente el algoritmo evolutivo se tratará en un apartado dedicado a ello.
Finalmente, el funcionamiento del programa completo, de forma resumida, es el siguiente:
El usuario del programa introduce requerimientos del diseño del avión.
El programa crea una población de elementos ‘avión’ al azar.
La población de elementos se optimiza mediante algoritmo evolutivo, usando una función de
optimización de acuerdo a los criterios introducidos por el usuario.
Cuando se cumple un criterio de parada, se detiene el algoritmo de optimización.
Se presenta al usuario el mejor elemento creado.
Por último, con el código desarrollado haremos distintos ejemplos para llegar a conclusiones.
|