Now, it should be clear that genetic algorithms provide scientists with a powerful toolbox with which to optimize problems that:
Are poorly understood.
May have more than one good enough solution.
Have discrete, discontinuous, and nondifferentiable functions.
Can be easily integrated with the rules engine and knowledge bases (for example, learning classifiers systems).
Do not require deep domain knowledge. The genetic algorithm generates new solution candidates through genetic operators. The initial population does not have to contain the fittest solution.
Do not require knowledge of numerical methods such as the Newton-Raphson, conjugate gradient, or BFGS as optimization techniques, which frighten those with little inclination for mathematics.
However, evolutionary computation is not suitable for problems for which:
A fitness function cannot be clearly defined
Finding the global (absolute) minimum or maximum is essential to the problem
The execution time has to be predictable
The solution has to be provided in real time or pseudo-real time (streaming data)