miércoles, 29 de septiembre de 2010

Algorithms evolutionary models

This post presents a platform for the design of composite materials based on evolutionary models that I did several years ago for my end career project.
The use of composite materials, for the manufacture of structural elements, has increased significantly, so that many of the traditional materials such as steel, wood or aluminum, have been giving way to these new materials, also known as composites, to achieve better properties.
But, there are many difficulties associated with the production of a composite, because the design of a new design element involves not only the geometry of each fiber, but you also have to design the configuration of the material itself. All this, in order to support all pressures from every angles.





The designed platform, implemented in C++ and MATLAB, where you can see the front page in above figure, enables to select the initial data for the evolutive algorithm:


Also the platform enables to specify the pressure that must support for each angle and the materials for the fibers and the basis:


And the results are in the following figure where the evolution for each algorithm is showed on a chart with the best fibers, angles and materials:


Evolutive algorithms

Genetic algorithms simulate the process of natural selection, where they survive those individuals (potential solutions) that best suit the environment.
Each iteration of the sequence is considered a generation, as follows:
1) Initially, we select an initial population of N individuals and evaluated.
2) Crossover: In each step, selects a subset of individuals, "better" adapt to the environment, and combined to obtain new individuals.
3) Mutation: Each new individual, with a probability close to zero, it undergoes a mutation may alter their genetic coding.
4) These new individuals become part of the population, and according to some criterion, we selected a subset of N individuals to repeat the process.

There are a lot of implementations about the behavior to follow for mutating individuals or for selecting individuals among the generations, etc... In the platform the following ones were implemented:

- Simple Evolutive Algorithm
- Simple Evolutive Algorithm where only the better individuals survive.
- Simple Evolutive Algorithm where the only the better individuals will crossover between each other.
Variable Neighbourhood Search. See http://www.orsoc.org.uk/region/study/local/city-potts.pdf
Simulated Annealing SA. See http://www.cs.sandia.gov/opt/survey/sa.html

But the algorithm that pointed out better results, it was the created in my work named Force Iteration Evolutive Algorithm (FIEA). 


The process carried out by the algorithm is: having two individuals as parents and their two children receive a normal mutation with probability half, we select the best of both and not stop until we find two children improve both his parents. Better detailed in the following scheme:

1. It starts from a population ordered and evaluated.
2. It iterates through each individual is taking the same and immediately following cross and mutate.
3. If any of the children improved one of the two parents, it replaces, if not, go to step two with the same individual, ie without iterating.

This cycle will end when two children have found better alternatives in the next generation both parents or it has achieved over one hundred iterations, this condition is to ensure that if you can not find a child's "best" will not remain indefinitely in this way.

I hope you have insterested in this topic.

Thanks!

No hay comentarios:

Publicar un comentario