Evolutionary Computation — Part 2 (Different Sections and Abilities)

Ardavan Khalij
4 min readJul 10, 2021

Evolutionary Computation algorithms have seven steps:

1. Determine the structure of each member of the population

2. Primary population production

3. Evaluate the answers produced

4. Choosing parents

5. The production of children from selected parents

6. Selection of remainings

7. Repeat the algorithm until a termination condition is reached

In the first step, the structure of the population should become clear. For example, in the knapsack problem, the structure of the population members is a binary array with the size of the number of available objects. This structure could make the process of the algorithm significantly more straightforward in the following steps if it chose the right and proper.

The second step is to produce the primary population. This step should be done randomly, but the important thing is that the number of population members is not random, and it can be chosen.

In the third step, members of the population should be evaluated, so each member gets a number that is the value or fitness of that member. We need to choose the evaluation function right. Otherwise, we receive an optimum based on some other quality that we do not need.

After that, in the fourth step, parents should be chosen based on their values. There are various methods to do this. One of them that is the simplest is the Roulette wheel. It is based on the value of the members. For instance, The chance to choose a member with the value of two is twice the chance to choose a member with the value of one.

In the fifth step, the children should be produced. For producing children, there are two operators in the Evolutionary Computation algorithms. They are Crossover and Mutation. Each of these operators has different types. Crossover is combining two parents and creating new members. This operator is based on what happens when any person or animal is born. Our DNA is based on our parents’ DNAs. Therefore we have some qualities from each of our parents. The other operator is Mutation. After creating children, some of them can be chosen randomly for some changes in their qualities. For example, in the knapsack problem, one of the zeros of a new member can become a one, or the opposite can happen. Notice that crossover is the first operator that should be used in this step, and after creating all the next generation, Mutation can be used. This can help the functionality of Evolutionary Computation algorithms.

The sixth step is to choose the next generation from the population. In any population, some of the members will die at a point. In these algorithms as well, some of the members will be deleted from the population. In order to make the next generation better, members have a chance based on their value. For instance, the chance to choose a member with the value of two is half the chance to select a member with the value of one; therefore, more valuable members will remain for the next generation.

And finally, in the last step, we should find a good termination condition. This condition is a way to stop these algorithms. Most of the time, choosing the number of generations for this condition is a good choice for these algorithms; however, there are many choices.

Evolutionary Computation algorithms can be used in many different subjects. I believe that using Evolutionary Computation algorithms can be very useful in Data Mining. Rules can be extracted from a dataset with them and a little help from Fuzzy systems. I recently started to study this kind of algorithm, and I found them very interesting. I also started to study some of these algorithms, such as the Michigan approach, and I think they can become more beneficial by being a little simpler. One of the things that can become simpler in this algorithm is the Evaluation function. So I started to write a program to see if it is possible to make the Evaluation function simpler, and I got some acceptable results. My goal was to write a classification algorithm based on the Michigan approach. So after I wrote this program, I started to compare this algorithm with some of the classification algorithms in the SKL library in Python, and the accuracy was better in my newly developed algorithm.

Overall, Evolutionary Computation is a fantastic kind of algorithm, with the advantages far outsizing the disadvantages. It can also give better results if it is combined with Fuzzy systems. I think Evolutionary Computation is the most useful subject I learned in my bachelor studies. It can be used quite successfully across many applications where other algorithms find a hard time. It is also a gleam that shows me what artificial intelligence can do. Interestingly, big things can be done even with a small part of AI.

--

--

Ardavan Khalij

I am a graduate student in Computer Science, AI at VUB. I am a writer in MLearning.ai and NerdForTech