For those who are interested in evolutionary algorithms. This is an introduction to a tutorial i will eventually make. The tutorial will be designed in a way that anyone even of high school education should be able to understand.
There will be source code at the end of it, that you will indeed have to alter and change to adapt to whatever solution you wish.
I will first introduce the concept and help you understand it here.
An evolutionary algorithm is a step by step instruction that solves difficult problems using the pricinples of genetics and evolution.
In biology we have translation crossover mutation and the idea of adaptation. All these things are present in an evolutionary algorithm and they are used in conjunction to reach a global optima answer.
In mathematics we have many "optima" answers sometimes, so EA's often get stuck at locals instead of global. The global is the best possible answer, while local are "satisfactory answers".
Now before we continue talking about evolutionary algorithms we first must discuss a genetic algorithm.
A genetic algorithm is a optimization technique in computer science used to solve difficult problems. In other words if you have a problem with a high chance of failure and you need to minimize the amount of failures to get to the final answer, you can use a genetic algorithm.
Genetic algorithms and evolutionary algorithms are not the best techniques but they are not the worst, they get the job done and are good at what they do for the reasons they do it. It is a matter of learning different techniques and seeing which work best where and why.
Genetic and Evolutionary algorithms because of the nature of their structure exhibit interesting behavior in artificial intelligence. They can adapt well and modify their solutions given the conditions of the enviroment. This can also be good to have in any program what-so-ever. Because instead of constantly re-designing your application to solve new problems you can have an EA or GA redesign the software for you.
The reason i study EA's is because i want an agent (artificially intelligent application) that will react and learn based on opponents behavior and try to defeat an opponent. I want my agents to develop playstyles based on gameplay and not what they think is best or what i tell them is best, my agents should be unique. That is the use i wish to put EAs to and GAs too if i have to.
It is a combination of efforts that do these things.
A basic idea of how EA's and GA's operate is this, they have a population size of potential solutions. Each solution in the population size gets evaluated with a fitness.
The best solutions go on to the next generation to create children while the rest get erased. THere is a mutationrate that determines how things adapt.
In evoluationary algorithms there are things known as evolutionary strategies. They adjust the mutation rates in order to adapt to the eviroment.
While in genetic algorithms that mutationRate is sometimes a final constant variable.
If you have more questions please ask, i summed up the basic knowledge of this concept to the best of my ability. I honestly don't know much more than this.