What is Genetic Programming ?

What is Genetic Programming ?

Genetic programming is a term which makes you think about genetic modifications of the human genome. We are still far from common practices like this as we do not fully understand our DNA hardly we can perform any significant changes in the genes of a baby (at least at the time of this writing).

What we are going to explain here is genetic programming in terms of computer programs and software development. 

When we talk about Genetic Programming we intend a technique inspired by biology where we apply Genetic Algorithms to produce a population of programs from which we'll choose an evolved individual that best fits our needs.

Let's understand "technique inspired by biology" better. The genes purpose of a being describes its characteristics and features. When the being breeds the genes (female and male) mix up and creates a new gene which holds the description of the new offspring being. After many generations, the beings evolve to better fit the ambient in which they live. That is why similar species develop different characteristics. Because they adapt to the ambient to be the most efficient possible.

Our Genetic Algorithms (GA) use or at least pretend to use an evolution mechanism which tries to mimic nature, although in a very very primitive way.

GA algorithms are comprised of the following elements or steps.

1 .The initial population generated randomly (yes, it can have hilarious characteristics).

2. Selection of the fittest or best parents. Check which member has the best characteristics and select them for the next step, others will die.

3. Reproduction or mutation

a. Reproduction: two individuals involved in providing the offspring with their best (supposedly) characteristics.

b. Mutation: an individual develops new features, characteristics randomly, or by following a designed pattern of mutation.

4. Do the new offsprings satisfy the requirements? If no repeat the selection and the creation of a new generation until an optimal individual will be born.

In a very simplistic way above you can see that a GA somewhat reproduces what Darwin said about evolution, but at a very fast-paced rhythm. Also, they are part of a larger set, called Evolutionary Algorithms which are again inside the bigger set of Nature Inspired Computation (but that's the topic of another article).

As you can imagine, these algorithms are best used in optimization applications where a normal approach would be too hard, and where there are too many variables to take in consideration.

As an example take the movement control program of a spider. If you were to write a program that takes into consideration all the situations, all the terrain the spider has to walk on it would be just too complicated. 

Instead, if you evolved a Genetic Program, (through the implementation of a GA), by having the program run different scenarios, it would be much faster and it would find an optimal which would be hardly achieved by programming it "manually".

In a nutshell, Genetic Programming, which is nothing more than Genetic Algorithms applied to programs, is a way of achieving some sort of artificial intelligence, or optimal solutions to a given context issue, be it fuel efficiency, area coverage, signal reception, movement control, space saving, etc.

要查看或添加评论,请登录

Andrei Demit的更多文章

社区洞察

其他会员也浏览了