Optimizaci on de estructuras con enjambres gramaticales
Transcript of Optimizaci on de estructuras con enjambres gramaticales
ESCUELA TECNICA SUPERIOR DE INGENIERIA DE SISTEMAS
INFORMATICOS
Trabajo de Fin de Grado
Optimizacion de estructuras con enjambres
gramaticales
Grado en Ingenierıa del Software
Autor: Maksymilian Jan Szymanski
Tutor: Luis Fernando de Mingo Lopez
Abstract
Nowadays companies devote a lot of money to the investigation and design of new
products that outperform the competition. This is no different in the field of automo-
biles, where even the smallest detail is taken care of when developing new models or
improving old ones. A major factor in these developments is aerodynamics, which has
a great influence on the final performance of a vehicle. The problem with this whole
process is that in order to obtain these adequate results, it is necessary to carry out
complex mathematical calculations and to spend a lot of time on the design of each
part.
Therefore, the aim of this work is to offer a new, more efficient and interesting
alternative to the traditional way of designing aerodynamic parts thanks to artificial
intelligence, trying to solve this problem of complexity and resources. Specifically,
it has been achieved by means of a genetic algorithm at scale that automates the
generation process allowing the obtaining of different elements in each execution. As
an input it accepts a two-dimensional body of certain measures and as an output it
produces an object that resembles greater aerodynamics.
This drastically reduces the time and effort needed to explore new solutions previ-
ously unvalued due to their complexity. It should be noted that it is not about offering
a complete solution that can replace the current production process, but laying the
foundations to show the real potential of these technologies that will establish the
foundations of future societies.
Resumen
Hoy en dıa las empresas dedican mucho dinero a la investigacion y al diseno de nuevos
productos que superen a la competencia. Esto no es diferente en el ambito de la auto-
movilıstica, donde se cuida hasta el mas pequeno detalle a la hora de desarrollar nuevos
modelos o mejorar los antiguos. Un factor super importante en estos desarrollos es la
aerodinamica, la cual tiene mucha influencia en las prestaciones finales de un vehıculo.
El problema de todo este proceso es que para obtener estos resultados adecuados se
necesita la realizacion de complejos calculos matematicos y mucho tiempo dedicado al
diseno de cada parte.
Por lo tanto, en este trabajo se pretende ofrecer una nueva alternativa mas eficiente
y mas interesante a la forma tradicional del diseno de piezas aerodinamicas gracias
a la inteligencia artificial, intentando solucionar este problema de complejidad y re-
cursos. Concretamente, se ha conseguido mediante un algoritmo genetico a escala que
automatiza el proceso de generacion permitiendo la obtencion de elementos diferentes
en cada ejecucion. Como entrada acepta un cuerpo bidimensional de unas medidas
determinadas y como salida ofrece un objeto que aparenta una mayor aerodinamica.
De esta manera se reduce drasticamente el tiempo y el esfuerzo necesario para
la exploracion de nuevas soluciones antes no valoradas debido a su complejidad. Cabe
destacar que no se trata de ofrecer una solucion completa que pueda sustituir al proceso
de produccion actual, sino que sentar las bases para mostrar el potencial real de estas
tecnologıas que sentaran las bases de las sociedades futuras.
Indice general
1 Introduccion 5
1.1 Motivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Algoritmos geneticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Orıgenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.2 Bases biologicas . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Diseno de piezas y vehıculos aerodinamicos . . . . . . . . . . . . . . . . 13
2 Objetivos 19
3 Diseno de la solucion 20
3.1 Algoritmos Geneticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.1 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.1.1 Seleccion . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.1.2 Cruce . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.1.3 Mutacion . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.1.4 Reemplazo . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.1.5 Copia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.2 Evaluacion o Fitness . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Tecnologıas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4 Resultados 27
4.1 Primera aproximacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2 Mejora del algoritmo, pruebas e ideas anadidas . . . . . . . . . . . . . . 30
4.3 Aplicacion y solucion final . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1
4.3.1 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.3.2 Interfaz y ejecucion . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5 Conclusion 41
6 Discusion 42
7 Agradecimientos 46
2
Indice de figuras
1.1 Evolucion y adaptacion al medio de las aves en concreto en referencia a
la forma de sus picos segun Darwin . . . . . . . . . . . . . . . . . . . . . 8
1.2 Logo de la conferencia internacional sobre algoritmos geneticos . . . . . 9
1.3 Representacion simplificada del proceso de la evolucion y el origen de la
especies actuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4 Las cuatro fuerzas actuando sobre un avion . . . . . . . . . . . . . . . . 13
1.5 Modelo de un coche de F1 y el movimiento del aire a su alrededor . . . 14
1.6 Objetos ejemplo que muestran la importancia de la forma sobre el flujo
del aire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.7 Ejemplos de formas simples y sus coeficientes de arrastre donde 0 ex-
presarıa que todo el aire pasa sin ser alterado . . . . . . . . . . . . . . . 16
1.8 Imagen de un vehıculo con el aire formando los vortices al paso por la
forma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.9 Funcionamiento basico de la carga aerodinamica . . . . . . . . . . . . . 18
3.1 Algoritmo genetico simplificado . . . . . . . . . . . . . . . . . . . . . . . 21
3.2 Seleccion por ruleta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3 Cruce de un punto en cromosomas de tipo binario . . . . . . . . . . . . 23
3.4 Mutacion de tipo binaria donde se invierten 3 bits . . . . . . . . . . . . 24
4.1 Figura resultante de la matriz anterior . . . . . . . . . . . . . . . . . . . 28
4.2 Figura con una anchura de 5, 3 escalones arriba y uno abajo siendo su
fitness el maximo posible, 1. . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.3 Interfaz con grafico inicial . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3
4.4 Primera forma de visualizar una matriz de 100x100 con una figura pe-
quena en el centro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.5 Puntos mutables de la matriz (verde y azul) . . . . . . . . . . . . . . . . 33
4.6 Estructura de los objetos en el algoritmo . . . . . . . . . . . . . . . . . . 35
4.7 Estructura general del algoritmo . . . . . . . . . . . . . . . . . . . . . . 36
4.8 Primera ventana que muestra la interfaz al ejecutar . . . . . . . . . . . . 37
4.9 Ventana final tras una ejecucion (l=30, w=10, g=1000, f=80) . . . . . . 38
4.10 Grafico de la evolucion de la calidad media y la del mejor individuo de
cada generacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.11 Algunos datos interesantes mas . . . . . . . . . . . . . . . . . . . . . . . 40
6.1 Analisis de un vehıculo de carreras antiguo con los resultados de aero-
dinamica ofrecidos por la herramienta de MicroCFD 3D Virtual Wind
Tunnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
6.2 Analisis de un vehıculo normal con los resultados de aerodinamica ofre-
cidos esta vez por la herramienta de Altair HyperWorks Wind Tunnel . 44
4
Capıtulo 1
Introduccion
A lo largo de los ultimos 20 anos la inteligencia artifical ha ido pasando de ser un
conjunto de teorıas y proyectos de investigacion a aplicaciones reales en multitud de
campos diferentes de la informatica. Se ha demostrado el inmenso potencial que presen-
tan estas tecnologıas lo que tambien se pretende conseguir con este proyecto. Se trata
de aplicar un algoritmo genetico para acelerar y mejorar el proceso de produccion de
vehıculos en especial aquellos destinados a las carreras deportivas. Concretamente se
quiere optimizar y automatizar el proceso de diseno de ciertas piezas de la carrocerıa
cuya forma depende en gran parte de la resistencia aerodinamica que tengan. Lo que
anteriormente requerıa un equipo especializado que cree figuras y modelos complejos
mediante programas como AutoCad ahora se podrıa conseguir mediante la ejecucion
repetida de este algoritmo.
5
1.1 Motivacion
La razon principal de este trabajo es la fascinacion personal por todo lo relacionado con
la informatica mas vanguardista tratandose en este caso de los algoritmos geneticos.
Ademas siento un profundo interes por las similitudes que se pueden encontrar entre
la tecnologıa y la naturaleza o biologıa. Me parece muy importante intentar analizarlas
debido a que se pueden ver patrones y mecanismos que junto con los conocimientos
actuales de computacion pueden mostrar nuevos caminos de investigacion y desarrollo.
El potencial de estos nuevos posibles descubrimientos es tal debido a que al imitar
la naturaleza se esta basando estas investigaciones en unos fundamentos basados en
cientos de miles de anos de evolucion. Un claro ejemplo de esto son las redes neuronales
basadas en como su propio nombre indica en el funcionamiento de las neuronas del
cerebro o los algoritmos geneticos que basan su funcionamiento en las tecnicas de
reproduccion y evolucion de los seres vivos.
6
1.2 Algoritmos geneticos
Los algoritmos geneticos como ya se ha introducido en la seccion anterior son un
conjunto de tecnicas computacionales que se basan muy firmemente en los patrones
evolutivos presentes en la naturaleza. Su funcionalidad suele ser principalmente la de
encontrar soluciones a problemas que necesitan una gran capacidad computacional si se
realizasen mediante las tecnicas y algoritmos tradicionales. Por otro lado tambien sirven
para optimizar parametros cuyos valores son difıciles de determinar de forma manual
o son muchos y estan correlacionados entre sı como es el caso de las redes neuronales.
Ademas se pueden utilizar como herramientas para la realizacion de pruebas mediante
caja negra ya que pueden producir soluciones desconociendo los procesos internos o las
finalidades de un objeto de estudio. En resumen es una herramienta que otorga dos
ventajas principalmente: acelerar los desarrollos e investigaciones y producir soluciones
nuevas a problemas practicamente imposibles anteriormente.
1.2.1 Orıgenes
Se podrıa decir que todo comenzo con los filosofos griegos de la antiguedad cuyo interes
por la naturaleza y sus propiedades les llevo a la elaboracion de diferentes teorıas sobre
la clasificacion animal y la posibilidad de cambio a lo largo del tiempo. El problema
que estas teorıas no eran mas que ideas que se acercaban a la realidad mezcladas con
mitologıa y desconocimiento cientıfico.
7
Por ello no fue hasta los siglos XVIII y XIX cuando cientıficos como Christian
Pander, Jean-Baptiste Lamarck o Charles Darwin que comenzaron a fundar las bases
de la evolucion biologica negando ası las creencias fijistas de la epoca. Todo esto llevo
a numerosos conflictos con la opinion cientıfica de estos siglos y no fue hasta finales del
siglo XIX y comienzos del XX que estas nuevas teorıas pudieron establecerse.
Figura 1.1: Evolucion y adaptacion al medio de las aves en concreto en referencia a laforma de sus picos segun Darwin
A partir de este momento la evolucion biologica ya era aceptada como un hecho
probado lo que llevo a Alan Turing, uno de los padres de la inteligencia artificial, a desa-
rrollar la idea de una maquina del aprendizaje basada en los principios de la evolucion.
[1] En el artıculo que publico en Octubre de 1950 detalla esta idea donde introduce
conceptos como las mutaciones o la seleccion natural nunca vistas anteriormente en el
ambito de la tecnologıa o la electronica.
[2]Esto dio pie a que en 1957 un cientıfico australiano llamado Alex Fraser comenza-
se a simular los procesos geneticos en ordenadores. Sus esfuerzos en este campo fueron
tan notables que muchos de sus trabajos siguen siendo utilizados como referente hoy
en dıa. A partir de aquı se popularizo esta idea de forma exponencial atrayendo a mas
y mas cientıficos, matematicos y otros expertos en el campo. [3]Especialmente cabe
8
destacar el libro de John Henry Holland publicado en 1975 considerado por muchos la
obra mas importante e innovadora sobre los algoritmos geneticos que fundo la base de
gran parte de las investigaciones y desarrollos posteriores.
[4]Todo esto fue un avance importantısimo para la inteligencia artificial y la in-
formatica pero el problema es que la mayorıa de los artıculos o libros hablaban de
teorıas y potencial pero todavıa no se habıa utilizado de forma real en la industria.
Esto cambio a lo largo de los anos 80 con la primera Conferencia Internacional sobre
Algoritmos Geneticos donde se comenzo a hablar de las aplicaciones y mejoras que
pueden otorgar estas nuevas tecnicas. Esta conferencia se siguio realizando a lo largo
de los anos y en el ano 2018 se celebro la numero 27 lo que demuestra el interes de la
comunidad cientıfica por esta tecnologıa y su potencial.
Figura 1.2: Logo de la conferencia internacional sobre algoritmos geneticos
Volviendo a los anos 80, a raız de todos estos avances y descubrimientos surgio una
nueva tecnica llamada programacion genetica. Consistıa en la creacion y optimizacion
de programas informaticos mediante las tecnicas ya desarrolladas con los algoritmos
evolutivos. La diferencia principal es que aquı se aplicaba el algoritmo directamente al
codigo por lo que automatizaba la escritura de codigo. [5]El primer precursor de esta
nueva tecnologıa fue Richard Forsyth que demostro la evolucion de pequenos progra-
mas representados como arboles binarios. Le siguio el ya mencionado anteriormente
John Holland junto con sus estudiantes que comenzaron la publicacion de importantes
9
artıculos sobre esta materia. En especial el estudiante [6] [7] John Koza patento su
invento de aplicar los algoritmos geneticos a la evolucion de programas informaticos.
Fueron sus cuatro libros que establecieron la programacion genetica y producieron una
enorme expansion en la popularidad de este tema.
[8] Hoy en dıa ambas tecnicas siguen siendo desarrolladas y disponen de un gran
interes por parte de la comunidad cientıfica. Se han utilizado en muchos casos y en
creciente complejidad como por ejemplo el diseno de tecnologıas furtivas o la eleccion
de la trayetoria de robots entre muchos. Esta claro que se trata de una tecnologıa con
mucho potencial que seguira evolucionando a lo largo de los proximos anos.
10
1.2.2 Bases biologicas
[9] En esta seccion se pretende introducir los conceptos presentes en la naturaleza
que mas adelante seran imitados en el algoritmo final. Concretamente se consideraran
relevantes solo dos de los tres problemas que aborda la evolucion biologica. El primero
de ellos es el hecho de evolucionar, es decir, todos tenemos un antepasado comun pero
con diferentes modificaciones. Esto esta virtualmente aceptado en su totalidad por
toda la comunidad cientfica y ademas numerosas pruebas lo confirman. El segundo
problema son los mecanismos por los que ocurre la evolucion. Estos mismos son los que
utiliza de forma similar el algoritmo utilizado en este proyecto. Se basa en mutaciones
y en la reproduccion tanto sexual como asexual a lo largo del tiempo. En la naturaleza
no ocurren a la vez, pero en este algoritmo se utilizaran ambas formas para poder
optimizarlo de forma adecuada.
Figura 1.3: Representacion simplificada del proceso de la evolucion y el origen de laespecies actuales
11
Otro mecanismo base de la evolucion biologica es la seleccion natural por la cual
los individuos mas preparados para el entorno al tener una mayor probabilidad de
sobrevivir tienen una mayor capacidad de transferir sus genes a la generacion posterior.
Esto ha sido demostrado por numerosos experimentos con plantas u otros seres vivos
donde a lo largo del tiempo las nuevas generaciones iban convirtiendose en individuos
cada vez mejor preparados para habitar y desarrollarse en el entorno elegido. Por lo
tanto la evolucion puede verse como un proceso de dos partes: una primera donde
se realizan los cruces y mutaciones y una segunda parte donde mediante la seleccion
natural se eligen los individuos que pasaran sus propiedades a la generacion siguiente.
Volviendo a los conceptos introducidos en el primer parrafo, las mutaciones son
la herramienta que produce las mejoras en los individuos. Esto se debe a que una
mutacion es una variacion aleatoria de al menos de un punto del ADN. Al ser aleatoria
la probabilidad de ser beneficiosa al usuario suele ser muy baja por lo que por lo general
las mutaciones son cambios negativos. Aun ası, gracias a la accion de la seleccion
natural los cambios malos suelen desaparecer a lo largo de las generaciones mientras
que los cambios positivos se van pasando a las generaciones futuras. Por lo tanto, las
mutaciones son el motor del cambio en la evolucion biologica.
Se trata de un proceso complejo con muchas variables en juego y diferentes tipos
de procedimientos. Obviamente simular todo esto con total exactitud resultarıa una
tarea practicamente imposible ya que la realidad es aun mucho mas compleja de lo que
somos capaces de simular en ordenadores. Muchos elementos deben de ser simplificados
o eliminados del proceso al tener un costo de implementacion mucho mas elevado del
beneficio que otorgan. Esto es el caso de elementos como las migraciones entre pobla-
ciones, los aislamientos, el impacto de la realidad, el tamano del ADN, las relaciones
sociales entre individuos, etc.
12
1.3 Diseno de piezas y vehıculos aerodinamicos
[10] La aerodinamica es la ciencia que estudia la forma en la que diferentes gases se
mueven a traves o entre los objetos. Esta relacionada a la dinamica de los fluidos dada
su cercana naturaleza pero se normalmente se utiliza para estudiar el movimiento del
aire ya que es el gas que mas aparece en los entornos.
Figura 1.4: Las cuatro fuerzas actuando sobre un avion
[11] [12] En la practica se han denominado cuatro fuerzas principales de accion a la
hora de que un objeto interactue con el aire: sustentacion, peso, empuje y resistencia.
En el caso de los vehıculos las mas relevantes son el empuje y la resistencia aunque
las otras tambien estan estrechamente relacionadas en ciertas situaciones. El empuje
es la fuerza que consiguen obtener las ruedas gracias a la accion del motor y es la
encargada de hacer que se desplace hacia delante. Por otro lado la resistencia es la
fuerza paralela y contraria al movimiento del objeto, en este caso a la direccion del
vehıculo. Esta ultima fuerza es el factor principal que tienen en cuenta los disenadores
de vehıculos a la hora de crear sus diferentes componentes. Su calculo se basa en el
coeficiente de arrastre (Cd) cuyo valor no depende unicamente de la forma sino tambien
de la direccion, velocidad, rugosidad de la superficie y el tipo de flujo de aire al que es
sometido.
Cd =2Fd
pv2A
[13] Este coeficiente es el que determina como se va a comportar el aire al pasar
por ese objeto determinado y por lo tanto en este caso la fuerza de resistencia a la
que sera sometido el vehıculo. Este calculo se puede realizar para objetos con formas
13
regulares y en entornos muy controlados donde se conocen todos los datos y variables
del gas en cuestion como por ejemplo la viscosidad del aire. En el caso de los coches de
Formula Uno se trata de objetos muy complejos y con multiples partes diferentes lo
que provoca que sea imposible realizar una aproximacion cercana a los valores reales sin
realizar pruebas en simuladores como los tuneles de viento. Estos simuladores se utilizan
tambien en ordenadores donde se introducen modelos tridimensionales en programas
donde se pueden obtener resultados muy similares a los de un tunel de viento real.
Figura 1.5: Modelo de un coche de F1 y el movimiento del aire a su alrededor
[14] Por todo esto la industria automovilıstica ha intentado desarrollar vehıculos
cada vez mas aerodinamicos desde el comienzo del siglo XX siendo un elemento muy
importante a la hora de disenar la forma de un automovil. Las ventajas principales de
disponer de una forma erodinamica son la reduccion del consumo, mejora de capacida-
des de conduccion ademas de otras adicionales como pueden ser el ruido, la ventilacion
o la acumulacion de sucidedad. Esto obviamente tambien se aplica a todos los cam-
pos donde existe un objeto movil cuyo movimiento debe de ser optimizado como la
aeronautica o la balsitica.
14
Figura 1.6: Objetos ejemplo que muestran la importancia de la forma sobre el flujo delaire
[15] En el caso de los vehıculos esto cobra especial importancia cuando se trata de
carreras de competicion donde un segundo puede ser la diferencia entre llegar en primer
puesto o segundo. Se necesita un gran equipo de ingenieros y multiples pruebas para
conseguir mejorar las prestaciones de un vehıculo mediante el diseno de su forma. En el
caso de las carreras de competicion de Formula Uno la aerodinamica es practicamente
el unico campo de desarrollo e investigacion actual en el que los equipos invierten dinero
y tiempo. Esto se debe sobre todo a los mınimos avances que se pueden conseguir en
otras areas como en cambios en el motor u otras partes relacionadas con la automocion.
El objetivo principal de estos avances es el de aumentar la velocidad del vehıculo
de dos formas principalmente: reduciendo su resistencia al aire y aumentando la fuerza
que le empuja en direccion al suelo. La primera de ellas tiene que ver con la fuerza de
resistencia que sufre el vehıculo al pasar por una sustancia gaseosa que en este caso
obviamente es el aire. Esta fuerza es proporcional a la diferencia de velocidades del
objeto y el aire por el que pasa, es decir, si el aire es estatico sera mayor si el objeto se
mueve a 200 km/h que si se mueve a 50 km/h. Por lo tanto en vehıculos de F1 donde
se pueden sobrepasar los 300 km/h se trata de una fuerza a tener muy en cuenta a la
hora del diseno ya que aumenta mucho sus valores.
Ademas, esta fuerza se manifiesta de diferentes formas. La primera de ellas y la mas
15
obvia ocurre cuando las moleculas del aire colisionan con las moleculas de la superficie
del objeto siendo mayor en cuanto menos lisa es esta superficie. Estas moleculas ademas
necesitan una fuerza para ser apartadas de la trayectoria del vehıculo lo que provoca
que la forma de las piezas de este influyan en si este desplazamiento es sencillo o por otro
lado provocara una resistencia negativa. Esto ultimo se mide mediante el coeficiente
de arrastre ya explicado anteriormente.
Figura 1.7: Ejemplos de formas simples y sus coeficientes de arrastre donde 0 expresarıaque todo el aire pasa sin ser alterado
Como se puede observar la forma de los objetos que tienen un coeficiente de arrastre
menor son mas deseables que aquellas que tienen un coeficiente de arrastre mayor ya
que estas ultimas mostraran una mayor resistencia. Otro factor importante a tener en
cuenta son los vortices que se crean detras del vehıculo mientras atraviesa el gas en
16
cuestion. Se trata de un resultado del contacto del aire en movimiento que sigue la
forma del vehıculo con el aire estatico que no ha sido alterado por el paso del objeto
en cuestion. Esto se suele solucionar mediante la introduccion de pequenas piezas en
los laterales de la superficie de paso del aire, como pueden ser los alerones.
Figura 1.8: Imagen de un vehıculo con el aire formando los vortices al paso por la forma
La segunda fuerza importante a tener en cuenta es la carga aerodinamica cuya
funcion es la de pegar mas el vehıculo al suelo para que las ruedas tengan un mejor
contacto con el suelo y por lo tanto la superficie en la que ejerzan su fuerza sea mayor.
Basicamente se comportan igual que las alas de los aviones solamente que al reves. A
lo largo de los anos se ha demostrado que este factor es uno de los mas importantes
a la hora de mejorar las capacidades de los coches de carrera. Gracias al aumento de
esta fuerza se ha conseguido aumentar enormemente las velocidades de un vehıculo
sobre todo en curvas. Esto se debe tambien a que sin estas fuerzas los vehıculos con
una elevada velocidad pueden elevarse sobre la superficie del suelo desestabilizandolo o
directamente eliminando cualquier tipo de control sobre el pudiendo generar situaciones
muy peligrosas para el conductor.
17
Figura 1.9: Funcionamiento basico de la carga aerodinamica
Teniendo en cuenta la forma de estos vehıculos se puede dividir en tres partes
de diseno principales. La primera serıa la delantera con alerones, splitters, endplates,
generadores de vortices y la parte inferior conectada con el difusor. Le segurıa la parte
central con los pontones, bargeboards, turning vanes, vortice generadores y roll hoops.
Por ultimo en la parte trasera, las principales fuentes de downforce son los alerones,
pequenas aletas y el difusor. Esto obviamente es meramente informativo ya que se trata
de conceptos de diseno automovilıstico que escapan al interes de este proyecto y no son
necesarios de explicar, simplemente se han nombrado para mostrar la complejidad del
diseno y produccion de un vehıculo de semejantes caracterısticas. En resumen todo
esto se trata de una tarea importante y a la que se dedica muchos recursos lo que se
va a pretender cambiar o al menos indicar un camino para el cambio en este proyecto.
18
Capıtulo 2
Objetivos
Siguiendo la idea de la ultima seccion, el objetivo de este proyecto va a ser generar un
algoritmo genetico que sea capaz de mejorar el proceso de diseno de piezas de obje-
tos que deban de tener una buena capacidad aerodinamica. Para ello se va a utilizar
un algoritmo genetico con diferentes caractersiticas que pueda ofrecer soluciones au-
tomaticas sin necesidad de calculos manuales o manipulacion por parte del ser humano.
Siendo la entrada del algoritmo una pieza bidimensional, debera ofrecer como salida
otra pieza ya optimizada para el entorno escogido. En este caso se va a realizar una
simplificacion de todo el proceso dadas las limitaciones por tiempo y material pero
aun ası manteniendo el objetivo principal que es el de crear un algoritmo genetico fun-
cional y con posibilidad de mejora para la aplicacion en tareas reales en la industria
aeronautica y automovilıstica.
19
Capıtulo 3
Diseno de la solucion
3.1 Algoritmos Geneticos
introducidos los conceptos mas relevantes conviene profundizar en la teorıa propia y
actual de los algoritmos geneticos. Primero cabe destacar la posicion de esta tecnica
dentro de la inteligencia artificial y la informatica. El primer conjunto es la computacion
evolutiva donde estan presentes los algoritmos geneticos, la estrategias de evolucion y
la programacion genetica. A su vez, este conjunto pertenece a la rama de la inteligencia
artifical llamada [16] soft computing donde tambien estan presentes tecnicas como las
redes neuronales artificales o la logica difusa.
Hablando de forma general, los procesos de esta rama suelen parecerse mas a los
procesos de la biologıa que a los tradicionales de la informatica. Por ello suelen utilizar
conceptos como medias verdades o la incertidumbre en sus algoritmos para ofrecer
resultados mas parecidos a la realidad presente en la naturaleza. Esto no es diferente
en los algoritmos geneticos donde las soluciones nunca suelen ser fijas y casi siempre
varıan entre diferentes ejecuciones.
Concretando en el algoritmo principal, se puede generalizar un flujo que suele apa-
recer como base en casi todos los algoritmos geneticos. El primer paso de este algoritmo
es la creacion de una poblacion inicial que suele ser creada mediante generadores alea-
torios[17]. A continuacion se comienza el proceso de seleccion de padres y cruce entre
ellos. Con esto se consigue una descendencia que tras ser generada puede sufrir muta-
20
ciones que la modifiquen de forma aleatoria. Llegado a este punto se ha de decidir si los
nuevos individuos deben reemplazar a los padres en la poblacion y pasar a la siguiente
generacion. En caso de que los seleccionados sean los padres se descartara la descen-
dencia y una vez completado este proceso para todos los individuos se aumentara el
contador de la generacion y se volvera a empezar el ciclo.
Cabe destacar que existen dos variantes de este proceso, una de ellas con una
poblacion fija en la cual se van realizando selecciones e inserciones, y otra, donde se
trabaja con una poblacion temporal vacıa que se va rellenando mediante inserciones y
que al final reemplaza a la poblacion inicial durante esa generacion.
Figura 3.1: Algoritmo genetico simplificado
[18] Este bucle se repetira hasta que se cumpla una de las condiciones de parada, la
cual puede depender de varias condiciones. El caso obvio es cuando se ha encontrado
una solucion, es decir, que uno de los individuos tenga un valor al evaluarlo superior
o igual al deseado. Este valor se suele denominar fitness o ajuste y se explicara mas
adelante. Otra condicion de parada comunmente utilizada es el maximo de generaciones
que suele ser un valor elevado para permitir encontrar una solucion de forma adecuada.
Por ultimo una condicion mas compleja de explicar que es que toda la poblacion sea
similar en un porcentaje muy elevado, lo que significarıa que ha convergido y ha dejado
de cambiar alcanzado lo que podrıa ser un maximo local.
21
3.1.1 Operadores
Durante el trascurso de cada iteracion, se utilizan una serie de operadores geneticos
que dependiendo de las necesidades del problema se utilizaran o no. Los mas comunes
son los operadores de seleccion, mutacion, cruce, copia y reemplazo.
3.1.1.1 Seleccion
Su funcion recae en decidir que individuos de la poblacion sufriran un cruce para generar
la descendencia. Se basa en el concepto de que se debe de seleccionar a individuos mas
aptos de media si se quiere obtener descendencia mejor preparada para el entorno o
mejor calidad. Esto no siempre se cumple ya que aunque se seleccionen dos padres
con muy buen fitness puede ocurrir que sus hijos sean peores. Aun ası de media suele
mejorar la calidad de la generacion si se utilizan metodos de seleccion que selecciones
padres mejores.
Dentro de sus variantes existen muchas diferentes pero principalmente se dividen
en dos: determinısticas y probabilısticas. Las primeras establecen que siempre se se-
leccionara el que mejor ajuste tenga de la poblacion mientras que el segundo trabaja
con probabilidades dando oportunidades a que los individuos con peores capacidades
puedan sufrir cruces o pasen a la siguiente generacion.
Figura 3.2: Seleccion por ruleta
22
Con esto se consigue que haya mejor variedad y el algoritmo no se pare en maximos
o mınimos locales ya que se permite que los padres o uno de ellos sea de mala calidad.
Un cruce de una pareja ası puede generar mejor descendencia que la de los dos mejores
individuos de la poblacion ya que puede haber genes que por separado no otorguen mu-
cha calidad pero al cruzarles generen soluciones buenas. Los algoritmos mas populares
son la seleccion por ruleta y la seleccion por torneo pero realmente existen muchos mas
tipos en la actualidad.
3.1.1.2 Cruce
El cruce es la tecnica mediante la cual los individuos seleccionados generan una des-
cendencia siguiendo una estrategia de reproduccion sexual. Se trata de que los hijos
tengan genes de ambos padres de forma que hereden caracterısticas mezcladas de los
dos. La idea principal de esto es que si los padres tienen genes buenos la descendencia
tambien tiene probabilidad de tenerlos, por lo que podrıan heredar unicamente estos
genes positivos de cada padre evitando los malos y aumentando el valor de su fitness
individual.
Una vez realizado el cruce, se ha de seguir una polıtica destructiva o no respecto a
la insercion de los hijos en la poblacion. Que sea destructiva significa que se desechan
los padres y los hijos les sustituyen en todos los casos e independientemente de si sus
ajustes son mejores o peores. En cambio una polıtica no destructiva no eliminara a
los padres si tienen un mejor ajuste que los hijos permitiendo la supervivencia de los
mejores individuos.
Figura 3.3: Cruce de un punto en cromosomas de tipo binario
23
Dependiendo de la estructura de los cromosomas se pueden aplicar ciertos algorit-
mos u otros pero los mas comunmente utilizados son el cruce de un punto, el cruce de
dos puntos o el cruce uniforme. Se basan en cortar los cromosomas en ciertas posiciones
e intercambiar las partes con otro cromosoma.
3.1.1.3 Mutacion
La mutacion es el proceso en el cual un gen de un individuo cambia su valor de forma
aleatoria. Se suele implementar despues del cruce para imitar el proceso de la naturaleza
que ocurre precisamente en ese momento. Por otro lado las variaciones pueden ser de
multiples tipos dependiendo de como sean los cromosomas. En caso de los cromosomas
de tipo binario la variacion suele suceder negando el bit adecuado pero muchas veces
los cromosomas son numericos o de formas mas complejas como es el caso de este
proyecto.
Figura 3.4: Mutacion de tipo binaria donde se invierten 3 bits
Para ese tipo de casos se ha de realizar modelos mas complejos o ingeniosos para
poder conseguir mutaciones aleatorias que sean similares a las binarias. Tambien existen
casos donde la longitud de los cromosomas varıa por lo que se pueden anadir genes como
mutacion en vez de solamente modificar los presentes.
3.1.1.4 Reemplazo
El reemplazo ocurre cuando se trabaja con una unica poblacion dentro de la cual
ocurren las eliminaciones e inserciones. Al ser un espacio limitado y finito se necesita
hacer un hueco cada vez que se quiera introducir un nuevo individuo resultante de un
cruce. Muchas de las tecnicas utilizadas son muy similares a las de seleccion pero la
diferencia es que aquı se considera los ajustes de la descendencia a insertar. La tecnica
24
mas simple serıa una seleccion aleatoria del individuo a sustituir pero obviamente
existen soluciones mejores y mas complejas como es el caso del reemplazo de padres
o el de similares. El de los padres como su propio nombre indica es simplemente un
proceso en el cual la descendencia sustituye a los padres de cuyo cruce fueron resultado
mientras que el de similares busca individuos a sustituir con un ajuste similar para que
el reemplazo no sea muy drastico para la poblacion.
3.1.1.5 Copia
La copia es un tipo de reproduccion de tipo asexual donde de un unico padre resulta
un hijo completamente igual a este. Dentro de los algoritmos geneticos es un proceso
bastante poco usado aunque necesario para ciertos casos donde la reproduccion sexual
no ocurre o simplemente no puede ocurrir. El problema es que la copia no altera en
absoluto los cromosomas al generar descendencia por lo que imposibilita el cambio y
por ende la evolucion de una poblacion. Por lo tanto debe de usar en casos concretos
y si aparece que sea en porcentajes mucho menores a los del cruce.
3.1.2 Evaluacion o Fitness
Este metodo se encarga de representar la capacidad que tiene un individuo de sobrevivir
dentro del entorno. Concretando un poco mas se trata de una funcion que devuelva un
valor numeerico llamado ajuste o fitness que exprese la calidad de ese individuo como
solucion del problema que intenta resolver el algoritmo. Por lo tanto esta funcion sera
unica para cada caso que intentemos resolver mediante el uso de algoritmos geneticos.
Su importancia es vital dentro de los operadores geneticos ya que el cruce, la seleccion
y el reemplazo dependen de los valores de cada individuo. Se pueden diferenciar cuatro
tipos de ajuste o fitness [19] diferentes pero se podrıa decir que los mas importantes son
dos: el fitness puro y el fitness normalizado. El fitness puro es la asignacion numerica
individual a cada miembro de la poblacion mediante una funcion simple. En este caso
simplemente se analizan las caracterısticas del individuo y se establece una relacion que
dice lo favorables que son con el dominio del problema. Lo negativo de esta aplicacion es
que trabaja de forma individual y no tiene en cuenta la relacion del individuo analizado
en funcion del resto de la poblacion. Aquı es donde aparece el fitness normalizado que
es una extension del fitness puro donde esta vez si se tiene en cuenta la relacion del
25
ajuste de un individuo con el resto de la poblacion. Por lo tanto en este utlimo caso
si un miembro del grupo tiene un fitness normalizado elevado significa que ademas de
ser una buena solucion, tambien es un individuo mejor que el resto de la poblacion
presente, por lo que tendra mayores posibilidades de cruzar y reproducirse.
3.2 Tecnologıas
En este proyecto se va a utilizar el lenguaje programacion Java para realizar la imple-
mentacion del algoritmo. Se trata de uno muy estructurado y conocido en la actualidad
que ademas es de los que mas ha sido utilizado dentro del ambito de la universidad por
lo que existe una base muy solida que no existirıa si se optase por otras alternativas.
[20] Dentro de este lenguaje se ha utilizado el paquete de JavaFX como eleccion para
la realizacion de la interfaz grafica del programa. Se trata de otra herramienta que ha
aparecido en los trabajos realizados dentro de la universidad por lo que tambien es una
opcion segura. Contiene muchas funcionalidades actualizadas a los estandares graficos
que aparecen hoy en dıa con la creciente popularidad del diseno movil o web pero sobre
todo es sencilla y rapida de utilizar lo que es de importancia en este proyecto al ser la
interfaz un elemento de poca prioridad.
26
Capıtulo 4
Resultados
Una vez introducidos los conceptos que se van a utilizar en este proyecto, se va a
explicar el procedimiento seguido para alcanzar los objetivos de forma aceptable.
4.1 Primera aproximacion
La idea inicial era realizar una version muy basica del algoritmo e ir anadiendo poco
a poco nuevas funcionalidades. Antes de esto se experimento con los diferentes opera-
dores geneticos para la creacion de un algoritmo genetico muy simple que sirviera de
ejemplo para el proyecto. Una vez conocida la manera de funcionar de estos elementos
se procedio a la creacion de un nuevo algoritmo esta vez bien estructurado.
Por lo tanto llegados a este punto se necesitaba decidir como iban a ser constituidos
los individuos del algoritmo, es decir, el tipo y la forma de sus genes. Se barajaron
multiples posibilidades para esto y una de las mas prometedoras era el uso de puntos en
el espacio separados por lıneas representadas como funciones matematicas. El problema
de esta implementacion era la complejidad que representaba el uso de estas funciones y
la difıcil mutacion y cruce al existir la posibilidad de diferentes longitudes de los genes.
Dicho esto se decidio utilizar otra opcion mucho mas simple y escalable. En este
caso los individuos iban a ser simples vectores de dos dimensiones o matrices rellenos
de unos y ceros donde un uno significa existencia material del objeto en ese punto
del espacio. Al tratarse de piezas fısicas no tendrıa sentido que hubiera grupos de
unos y ceros separados dentro de la matriz, por lo que durante todo el proyecto se
27
ha controlado que no hubiera divisiones. Las mutaciones serıan simples al tratarse de
tipo binario y los cruces podrıan ser simples cruces de un punto. El tamano de esta
matriz serıa de 10 x 10 inicialmente simplemente para acelerar el tiempo de ejecucion
al comienzo del desarrollo y poder ir anadiendo funcionalidades de forma eficaz.
M =
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 1 0 0
0 0 0 0 1 1 1 1 0 0
0 0 0 1 1 1 1 1 0 0
0 0 1 1 1 1 1 1 0 0
0 0 1 1 1 1 1 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
Figura 4.1: Figura resultante de la matriz anterior
Una vez establecido como iban a ser los individuos de la poblacion se necesitaba de-
cidir como iba a funcionar otro punto basico de los algoritmos geneticos: la evaluacion.
Esto es ası ya que la evaluacion es la que dirige a la evolucion y es la que va a decidir lo
28
que va a pasar dentro del algoritmo. Por lo tanto como el objetivo era obtener piezas
mas aerodinamicas se formo una funcion de evaluacion que atribuıa mas puntos a una
figura menos alta. La razon de esto es que se ha considerado que existe un flujo de aire
imaginario en direccion izquierda-derecha de la figura intentando llevar a cabo es un
sımil entre el algoritmo y la realidad, que serıa probar la pieza resultante en un tunel de
viento del que obtener el valor fitness. Como el uso de un tunel de viento es imposible
dado el caracter de este proyecto y la base economica disponible para su realizacion,
se ha optado por realizar una simulacion matematica de los posibles resultados de una
evaluacion real.
fitness = 1 − (altura
alturamax)
Por lo tanto la pieza usada de ejemplo tendrıa una altura de 6 sobre 10 que serıa
el maximo siendo su fitness resultante 0,4. Como se puede deducir, la pieza optima al
usar este tipo de evaluacion serıa una pieza de altura 1 y cualquier tipo de anchura.
Por ultimo ya solamente falta por implementar los operadores de cruce y mutacion.
El primero de ellos ha sido realizado de la forma mas simple posible, es decir, cruce en
un unico punto a lo largo del eje x de las piezas. Esto es debido a que el cruce conlleva
la dificultad de que puede crear piezas partidas en varias partes al cruzar dos padres
muy diferentes, lo que generarıa una descendencia disfuncional que no podrıa continuar
el proceso de evolucion. Este problema sigue existiendo en el cruce por un unico punto
pero mas adelante se aborda para no permitir la aparicion de errores. Por otro lado
las mutaciones en un principio eran simples negaciones en los bits pero unicamente los
positivos. Esto se realizo para la simplificacion del proceso y el poder establecer una
buena base para las futuras ampliaciones.
29
4.2 Mejora del algoritmo, pruebas e ideas anadidas
Ya habiendo establecido un algoritmo funcional se comenzo a ampliar sus capacidades
siendo una de las partes mas prioritarias la funcion de evaluacion, ya que era demasiado
simple. Para ello se intento crear una nueva forma de obtener el ajuste que fuera mas
similar a los posibles resultados obtenidos por un tunel de viento real. La solucion a
esto fue una funcion que contaba los aumentos o escalones que aparecıan en la cara
frente al flujo del aire, es decir, lo que se buscaba era una forma con apariencia de pico
triangular que tuviera un gradiente para una forma mas aerodinamica.
Noescaloness + NoescalonesiAncho− 1
Basicamente en una forma de la forma adecuada existirıan tantos escalones como
es el ancho de la pieza menos uno, dado que este es el maximo que puede haber. Es
decir, en una pieza de anchura 10 podrıa haber 5 escalones arriba y 4 abajo, 9 arriba
y ninguno abajo o 3 arriba y 6 abajo. Durante las ejecuciones se puede observar como
esto varıa de muchas maneras obteniendo cada vez una forma diferente.
Figura 4.2: Figura con una anchura de 5, 3 escalones arriba y uno abajo siendo sufitness el maximo posible, 1.
30
Como se puede observar, una figura con esta forma sufrira una menor fuerza de
arrastre provocando un desplazamiento mas sencillo a traves del aire y unas veloci-
dades mayores en los supuestos vehıculos finales. Esto sigue siendo una aproximacion
super sencilla ya que no tiene en cuenta muchısimos factores como, por ejemplo: la im-
portancia de las otras tres fuerzas, la rugosidad del material o la velocidad del objeto
a traves del entorno.
Otro elemento que se modifico varias veces fue la estructura de las clases del pro-
grama. Esto se debe a que en un principio no se planeo bien el diseno de los diferentes
objetos y sus relaciones, por lo que al ir anadiendo elementos iban apareciendo proble-
mas difıciles de solucionar con la estructura presente. Era esencial para el desempeno
del programa una actualizacion de la estructura lo que supuso un esfuerzo adicional
pero cuyo resultado fue un diseno de clases optimo para la realizacion del proyecto.
Para poder entender el desempeno del algoritmo se ideo un grafico que mostrase
la evolucion de los valores del ajuste de cada individuo de la poblacion a lo largo de
las generaciones. En un principio solamente aparecıa representado el valor maximo del
fitness en cada generacion, pero mas adelante se anadio el valor medio de los fitness
de los individuos de cada generacion para observar si existıa mejora conjunta o eran
simples individuos que tuvieron mutaciones favorables de forma aleatoria. Con esto
se podıa ver si el ajuste crecıa de forma continua o por el contrario se basaba en
crecimientos esporadicos basados en mutaciones buenas.
Figura 4.3: Interfaz con grafico inicial
31
Se busca conseguir una mezcla de ambos, ya que el crecimiento espontaneo se basa
en mutaciones concretas cuyo numero debe ser menor a la cantidad de cruces que deben
de ser el principal motor de un crecimiento continuo. Esto obviamente no descarta que
se pueda producir un cruce que provoque una subida muy grande del fitness del mejor
individuo ,pero como regla general los aumentos de los cruces no deben de ser muy
grandes. Esto se puede corroborar en la naturaleza donde la evolucion es un mecanismo
que necesita de muchos anos de desarrollo en el mismo entorno y ademas suele ocurrir
siguiendo casi un crecimiento lineal.
Por otro lado se necesitaba una forma de visualizar la figura final de forma reducida
ya que se pretendıa aumentar el tamano de la matriz y por consiguiente el tamano de
la figura, lo que provocaba que se dejase de ver bien en la salida del compilador. Por
lo tanto se ideo una zona de cuadrados pequenos que serıan mas adelante negros o
blancos correspondiendo a los valores de 0 y 1 de la matriz correspondientemente. De
esta manera se puede ver los resultados y comprobar si realmente existe una relacion
entre la funcion fitness y la evolucion seguida.
Figura 4.4: Primera forma de visualizar una matriz de 100x100 con una figura pequenaen el centro
32
Otro punto que habıa que revisar era el tamano de la matriz que contenıa la figura.
En el apartado anterior ya se introduce que el tamano aumenta, lo que parece ser una
evolucion mas que obvia ya que al aumentar el tamano se puede permitir mayor com-
plejidad de las formas finales. Eventualmente se podrıa considerar un aumento mucho
mayor, del orden de cien veces o mas, para poder simular los pıxeles que conforman
una pantalla y en resumen pudiendo generar imagenes o visualizaciones realistas de lo
que serıan las piezas finales. Con esto serıa posible conseguir objetos que directamente
se podrıan aplicar a la realidad de forma directa o muy cercana a esta.
El problema de esta implementacion es mas que obvio, la cantidad de recursos
que necesitarıa una ejecucion con matrices de semejante tamano serıa enorme y no
es posible en el estado actual de la investigacion ni en un futuro cercano. Tambien
existirıa el problema de que aumentar tanto el tamano y aumentar el detalle podrıa
provocar figuras imposibles ya que hay que tener en cuenta las limitaciones fısicas de
los materiales que construyen las figuras. Un giro demasiado acentuado en el borde
o un pico de un grosor demasiado pequeno pueden ser formas que al ser sometidas a
la fuerza del aire o las vibraciones de un vehıculo pueden romperse o doblarse lo que
puede afectar al rendimiento del vehıculo o incluso a su seguridad. Por lo tanto se ha
decidido que en este proyecto se limitaran las ejecuciones a matrices de tamanos de
100x100 o similares.
Figura 4.5: Puntos mutables de la matriz (verde y azul)
33
Por ultimo una mejora muy interesante que se anadio fue la variacion de las pro-
babilidades de mutacion de los puntos en funcion del tamano de la figura respecto a
la capacidad maxima de la matriz. Como las mutaciones son de dos tipos, de 1 a 0
o viceversa, se pretende conseguir con esta mejora que la pieza obtenga mas puntos
cuanto mas pequena sea y que esta probabilidad vaya disminuyendo mientras se hace
mas grande hasta invertir las probabilidades al completo. Estos conceptos se entienden
mejor con las funciones representadas a continuacion.
TamanopiezaTamanomatriz ∗ Equilibrio
∗ 0,5
Equilibrio es en este caso un valor que determina el punto en el que las probabilida-
des invierten la relacion de tamanos pasando una a ser mas grande que la otra. Varıa
entre 1 y 0 siendo normalmente la preferencia por valores que mantengan la figura en
los lımites razonables de la matriz. El valor que devuelve esta funcion es un valor entre
1 y 0 tambien, y es el que determina que tipo de mutacion va a suceder en ese objeto.
34
4.3 Aplicacion y solucion final
Ya habiendo concluido todos los pasos en el analisis y la mejora del algoritmo, se
procede a la presentacion de la version final de la aplicacion que lo contiene.
4.3.1 Algoritmo
El algoritmo final se define como un algoritmo genetico de 32 individuos en la poblacion
donde por medio de un sistema de mutaciones y cruces sexuales y/o asexuales se
puede conseguir una variacion de los individuos para que asimilen su forma a una
mas aerodinamica. La poblacion va sustituyendo a algunos de sus miembros en cada
generacion lo que tambıen se podrıa considerar una iteracion del algoritmo.
Figura 4.6: Estructura de los objetos en el algoritmo
Como se puede observar en el diagrama de flujo a continuacion, los procesos mas
importantes son la mutacion y el cruce de los individuos ya que ahı es donde se realizan
los cambios en los individuos.
35
Figura 4.7: Estructura general del algoritmo
Estos dos procesos contienen una complejidad bastante elevada por lo que no se va
a entrar mucho en los detalles de su implementacion. En rasgos generales el cruce de los
individuos se produce mediante la seleccion de un primer padre de la poblacion para
acontinuacion intentar encontrar a otro padre adecuado que produzca una descendencia
no erronea. Si no se encuentra una combinacion con alguno de los otros padres se realiza
una reproduccion asexual.
36
Por otro lado las mutaciones dependen del tamano actual de la figura ya que se ha
establecido que cuanto mas grande sea, mas se favorece las mutaciones destructivas,
es decir, quitar puntos de la figura. Con esto se consigue que el tamano de la figura
siempre se mantenga dentro de unos rangos razonables.
4.3.2 Interfaz y ejecucion
Se trata de una aplicacion basada en una interfaz JavaFX bastante basica que permite
al usuario la ejecucion en cualquier maquina con la version adecuada de Java instalada.
La primera ventana que aparece permite la modificacion de varios valores relevantes a
la hora de la ejecucion.
Figura 4.8: Primera ventana que muestra la interfaz al ejecutar
La longitud es paralela al movimiento imaginario del aire por lo que no tiene una
relevancia muy grande sobre la ejecucion final, de ahı que se permitan valores elevados.
En cambio en la anchura, al ser perpendicular a la direccion del aire, es la superficie
que tiene el primer contacto con su fuerza de empuje. Por esto, cuanto mas ancha sea
una pieza, mas mutaciones tendran que ocurrir para que el algoritmo consiga que esta
fuerza disminuya.
A continuacion aparece la posibilidad de modificar los puntos de parada de la
ejecucion. Por un lado el numero maximo de generaciones y por otro el ajuste que
se desea alcanzar. Existe la posibilidad de que un valor fitness muy alto resulte en una
ejecucion muy larga o directamente llegue al maximo de generaciones sin obtener un
resultado favorable. Se recomienda mantener el valor fitness en el rango de 60-80 como
37
mucho. Por otro lado es obvio que cuantas mas generaciones se permitan mas larga
puede ser la ejecucion.
Una vez establecidos los parametros de entrada se puede proceder a la ejecucion.
El programa dejara de responder durante unos segundos mientras realiza todos los
procesos sobre la pieza. Al finalizar, se mostrara esta otra ventana con el resultado
final de la pieza
Figura 4.9: Ventana final tras una ejecucion (l=30, w=10, g=1000, f=80)
Como se puede observar la pieza resultante es un elemento de dudosa aerodinamica
pero esto se debe a que es a pequena escala, como se ha mencionado ya antes. Lo que
si se puede observar es como la forma ha conseguido un relieve en forma de pico en
el lateral izquierdo ya que es el lado que tiene contacto directo con la fuerza del aire
imaginario.
38
Tambien se puede observar que en la interfaz aparecen otras dos pestanas en la
zona superior. En la segunda aparece lo que se puede observar en la siguiente figura,
un grafico donde se puede ver la evolucion del ajuste medio en cada generacion (en
rojo) y el mejor ajuste de cada generacion (naranja).
Figura 4.10: Grafico de la evolucion de la calidad media y la del mejor individuo decada generacion
39
La ultima pestana muestra varios datos de interes general como pueden ser los
valores introducidos antes de la ejecucion o el ajuste final de la pieza resultante. Por
ultimo tambien se puede ver el tiempo que ha tardado el algoritmo en segundos y la
generacion final en la cual se ha detenido.
Figura 4.11: Algunos datos interesantes mas
40
Capıtulo 5
Conclusion
Dentro del analisis expuesto, es posible vislumbrar la utilidad en los resultados y con-
cretamente el algoritmo final obtenido. Tras la exposicion e investigacion del problema
inicial se ha desrrollado una aplicacion completamente funcional con un algoritmo
genetico que simula el comportamiento de la realidad misma. El conjunto de procesos
y operadores geneticos consiguen de forma efectiva ofrecer una solucion a escala del
problema real, usando de esta forma el potencial que ofrece la inteligencia artificial.
A pesar de esto, sigue siendo una simple aproximacion a la realidad por lo que
no se puede afirmar el haber creado una herramienta de aplicacion directa para el
problema inicial expuesto en la introduccion. Esto se debe a que se ha demostrado
que la escalabilidad de la aplicacion final necesitarıa de muchos recursos por lo que
se ha imposibilitado una comprobacion empırica. De esta manera, lo unico que se
debe de extraer de este trabajo es la apertura de un nuevo camino basado en los
algoritmos geneticos, que demuestra que su utilidad es mucho mayor de lo que la
sociedad considera.
41
Capıtulo 6
Discusion
Como ya se ha explicado varias veces, esta solucion es una simple aproximacion inicial
que pretende establecer unas bases para las investigaciones posteriores. Por lo tanto se
deberıa de realizar un proceso de mejora sobre este proyecto y todas sus partes. Este
proceso tendrıa que considerar la finalidad real que deberıa ser capaz de cumplir el
algoritmo, que en este caso es la de poder producir partes de vehıculos de carreras de
forma automatica. Por lo tanto un primer paso serıa el analizar el proceso utilizado en
la actualidad, deduciendo los formatos de los objetos de entrada y salida. De aquı se
podrıa deducir los cambios que el algoritmo actual deberıa sufrir para transformarse
en una solucion a escala real.
Un primer cambio serıa el paso de dos dimensiones a tres, ya que obviamente
queremos poder trasladar los resultados a la realidad y con solamente dos dimensiones
no se puede valorar de forma adecuada la aerodinamica de una pieza. Por lo tanto
todos los operadores geneticos y elementos del algoritmo sufrirıan una variacion mas
o menos ligera. Lo primero serıa modificar a los individuos de la poblacion, anadiendo
una nueva dimension a la definicion de su forma. En la situacion actual esto serıa
tan sencillo como anadir otra capa a la matriz actual volviendo a multiplicar por N
todo el tamano. Esto obviamente va a ralentizar mucho las ejecuciones futuras por lo
que se debe tambien valorar un cambio en la forma en la que se definen las formas
de las piezas o los individuos. Se ha demostrado que la forma en la que se definen
las figuras actualmente limita mucho la ejecucion del algoritmo a tamanos elevados
42
dada la complejidad. Se puede concluir que la solucion actual es computacionalmente
imposible de aplicar a tamanos realistas como lo serıa un aumento de dimension.
A partir de aquı, una solucion que se puede explorar es la de definir las figuras me-
diante puntos y funciones matematicas que representen los planos entre ellos. De esta
manera se abre la posibilidad de tres tipos de mutaciones, anadir puntos y planos, mo-
dificar la posicion de los puntos en el espacio, sustituir funciones por otras y modificar
los valores concretos de las variables dentro de las funciones. Este proceso tendrıa que
ser estudiado y valorado previamente porque puede resultar demasiado complejo o di-
rectamente imposible debido a la naturaleza del algoritmo y los conceptos matematicos
tratados.
Tambien habrıa que modificar la forma en la que se analiza el fitness de un individuo
ya que es el motor del algoritmo y lo que condiciona a que las soluciones sean adecuadas.
Actualmente la funcion de evaluacion es una simple reduccion de la realidad a un
concepto que no es nada representativo de lo que se quiere obtener. Por lo tanto la
solucion que se propone es el uso de simuladores de tuneles de viento para conseguir
un entorno de pruebas que analice cada individuo de forma individual y automatizada
pudiendo obtener de forma numerica la representacion real de su calidad. Esto se debe
de analizar tanto en situaciones basicas como por ejemplo el desplazamiento de forma
lineal hacia delante de un vehıculo, o en situaciones mas complejas como la toma de un
giro cerrado o la toma de un rebufo de un vehıculo situado delante. La importancia de
esto dependera de la relevancia de una determinada pieza en las diferentes situaciones
del vehıculo y de la capacidad computacional disponible.
Existen multiples herramientas disponibles en el mercado hoy en dıa para la rea-
lizacion de esta simulacion. Se tendrıa que realizar un analisis de las opciones en el
momento de la implementacion real del algoritmo ya que al ser herramientas que simu-
lan la realidad contienen errores que seran mayores en unos y menores en otros. Por lo
general con el avance de los anos se ha ido consiguiendo unos algoritmos de simulacion
de fluidos que permiten una aproximacion casi identica a lo que se obtendrıa en un
tunel de viento real.
Dos de estas herramientas serıan [21] MicroCFD 3D Virtual Wind Tunnel por
un lado, y [22] Altair HyperWorks Wind Tunnel por otro, ambas obtenidas con una
busqueda sencilla por Internet. Como se puede observar en las imagenes que aparecen
43
al final de este parrafo, ambas herramientas ofrecen resultados interesantes que podrıan
ser lo necesario para que el nuevo algoritmo tenga la funcionalidad adecuada a la hora
de obtener el ajuste de un individuo de forma realista.
Figura 6.1: Analisis de un vehıculo de carreras antiguo con los resultados de aero-dinamica ofrecidos por la herramienta de MicroCFD 3D Virtual Wind Tunnel
Figura 6.2: Analisis de un vehıculo normal con los resultados de aerodinamica ofrecidosesta vez por la herramienta de Altair HyperWorks Wind Tunnel
En las imagenes se puede observar que ambos vehıculos son bastante aerodinamicos
dada la ausencia de colores calidos de forma abundante pero siguen existiendo puntos
mejorables que por ejemplo gracias a este algoritmo se podrıan evolucionar. A partir de
44
estos analisis se obtendrıa un valor numerico entre 0 y 1 que estableciera la adecuacion
del individuo al medio, es decir, lo que se acerca a una solucion perfecta.
Una vez visto como se deberıa actualizar la obtencion del ajuste de los individuos
y la definicion de estos cabe determinar la forma en la que se realizaran las mutaciones
y los cruces. Para los cruces se pueden explorar otras opciones mas complejas pero es
cierto que la metodologıa actual funcionaria bien en el espacio tridimensional. Todo
dependerıa en este caso del desempeno de las otras alternativas por lo que habrıa que
realizar pruebas y comparaciones.
Para las mutaciones el paradigma cambia en su totalidad ya que los genes ya no
son simples puntos binarios repartidos en un espacio finito. Como ya se introdujo al
principio de esta discusion se han de considerar mutaciones de tipos mas complejos
como lo pueden ser el anadir puntos y planos, modificar la posicion de los puntos en el
espacio, sustituir funciones por otras o modificar los valores concretos de las variables
dentro de las funciones.
45
Capıtulo 7
Agradecimientos
Quisiera agradecer a varias personas y entidades la ayuda que me han prestado en la
realizacion de este Trabajo de Fin de Grado. Entre ellas, y en primer lugar, a mi profesor
y tutor, Luis Fernando de Mingo Lopez, por todo lo que me ha apoyado durante el
transcurso de este proyecto. Siempre dispuesto a dedicarme su tiempo y conocimiento
pero desde la paciencia y la cordialidad. Tambien a todos los profesores de la ETSISI
que me han ensenado y apoyado en mayor o menor medida durante estos ultimos anos
de mi carrera universitaria. Sin su dedicacion y habilidad docente no serıa quien soy
hoy en dıa. Deseo que sigan realizando su trabajo tan bien como lo hacen muchos anos
mas.
Por otro lado me gustarıa agradecer a mis amigos mas cercanos, en especial a
Javier y a Fernando, que me han apoyado en todo el proceso con sus consejos practicos
y apuntes sobre la escritura del trabajo. No me podrıa olvidar tampoco de Cristina,
que ademas de su indudable apoyo continuo tambien me ha ayudado con el diseno de
ciertas figuras o la escritura de ciertos parrafos.
Por ultimo y no menos importante me gustarıa agradecer a mi familia, la que
siempre ha estado allı para apoyarme o presionarme ademas de ser los que durante
tantos anos se han esforzado en convertirme en el adulto que finalmente soy. En concreto
me gustarıa agradecer a mi tıo Kondrad que tambien es informatico y fue el que
desperto mi interes por esta materia desde joven.
46
Bibliografıa
[1] A. M. Turing, “Computing machinery and intelligence”, en Parsing the Turing
Test, Springer, 2009, pags. 23-65.
[2] A. S. Fraser, “Simulation of genetic systems by automatic digital computers i. in-
troduction”, Australian Journal of Biological Sciences, vol. 10, n.o 4, pags. 484-491,
1957.
[3] J. H. Holland, Adaptation in natural and artificial systems: an introductory analy-
sis with applications to biology, control, and artificial intelligence. MIT press,
1992.
[4] M. Ruffalo. (1 de oct. de 2016). Algorithms in nature, genetic algorithms, direc-
cion: http://www.cs.cmu.edu/~02317/slides/lec_8.pdf.
[5] R. Forsyth, “Beagle: A darwinian approach to pattern recognition”, Kybernetes,
vol. 10, pags. 159-166, mar. de 1981. doi: 10.1108/eb005587.
[6] J. R. Koza, Non-linear genetic algorithms for solving problems, United States
Patent 4935877, filed may 20, 1988, issued june 19, 1990, 4,935,877. Australian
patent 611,350 issued september 21, 1991. Canadian patent 1,311,561 issued de-
cember 15, 1992., 19 6 de 1990.
[7] ——, Genetic Programming: On the Programming of Computers by Means of
Natural Selection. Cambridge, MA, USA: MIT Press, 1992, isbn: 0-262-11170-5.
direccion: http://mitpress.mit.edu/books/genetic-programming.
[8] R. L. Haupt y S. E. Haupt, Practical genetic algorithms. John Wiley & Sons,
2004.
47
[9] E. of Science y Religion. (1 de mar. de 2019). Evolution, biological, Encyclopedia
of Science y Religion, direccion: https://www.encyclopedia.com/science/
news-wires-white-papers-and-books/biological-evolution.
[10] J. Lucas. (2014). What is aerodynamics? J. Lucas, ed., direccion: https://www.
livescience.com/47930-what-is-aerodynamics.html.
[11] B. Dumbar. (2015). What is aerodynamics? B. Dumbar, ed., direccion: https:
//www.nasa.gov/audience/forstudents/k-4/stories/nasa-knows/what-
is-aerodynamics-k4.html.
[12] M. A. M. Navarro. (2010). Principios basicos, 1.3 fuerzas que actuan en el vuelo.
M. A. M. Navarro, ed., direccion: http://www.manualvuelo.com/PBV/PBV13.
html#136_Resistencia.
[13] N. Hall. (2015). The drag coefficient. N. Hall, ed., direccion: https://www.grc.
nasa.gov/www/k-12/airplane/dragco.html.
[14] P. T. Lajos, Basics of vehicle aerodynamics, 2002.
[15] S. D. Groote. (2009). Aerodynamics in racing. S. D. Groote, ed., direccion: https:
//www.f1technical.net/articles/10.
[16] Y. Jin. (2010). Soft computing home page - short definition of soft computing.
Y. Jin, ed., direccion: URLhttp://www.soft-computing.de/def.html.
[17] H. Maaranen, K. Miettinen y A. Penttinen, “On initial populations of a genetic
algorithm for continuous optimization problems”, Journal of Global Optimiza-
tion, vol. 37, pags. 405-436, mar. de 2007. doi: 10.1007/s10898-006-9056-6.
[18] J. Cheng. (2012). Numerical optimization. J. Cheng, ed., direccion: http://www.
jade-cheng.com/au/coalhmm/optimization/.
[19] J. R. Koza, Genetic programming: On the programming of computers by means
of natural selection. ma, 1992.
[20] JavaFX. (2014). 1 javafx overview, direccion: https : // docs . oracle. com /
javase/8/javafx/get-started-tutorial/jfx-overview.htm#JFXST784.
[21] MicroCFD. (2019). Microcfd 3d virtual wind tunnel. MicroCFD, ed., direccion:
http://microcfd.com/3d.htm.
48
[22] Altair. (2019). Advanced meshing to high-fidelity cfd simulation — virtual wind
tunnel. Altair, ed., direccion: https : / / altairhyperworks . com / product /
Virtual-Wind-Tunnel.
49