First thoughts on evolutionary programming

Sam GutsellAPLLeave a Comment

First thoughts on evolutionary programming - a blog.

A talk at the Dyalog ’17 User Meeting that I must admit wasn’t on my radar, took me by surprise and really caught my attention. The talk was from Gilgamesh Athoraya of Data Analytics AB, and it was about Evolutionary Programming.

The talk was a detailed take on using artificial neural networks to enable your programs to evolve. This is all about trying to find the best code to execute intelligently, by finding the best or the best hybrid of artificial neural network scenarios.

What are the uses of Evolutionary Programming?

Evolutionary Algorithms are used to solve optimisation problems and generate artificial intelligence. The inspiration behind this type of neural network is in fact, biological evolution. The algorithm over time will attempt to learn where the ‘weak’ areas of itself are and evolve itself in an attempt to improve performance, hence the name Evolutionary.

How does it work?

When it comes to determining the best algorithm or best parts of different algorithms, we need a selection process. Like in biological evolution, it is survival of the fittest, this can be measured by using different types of selection function, some of the ones that Gilgamesh covered were: Fitness Proportionate Selection, Tournament Selection and Elitist Selection. Each has their pros and cons; ultimately the choice of selection process will probably be guided by what your end goal is.

After going through the Selection process, there is a possibility that more than one algorithm has something you like in it, this is where recombination is considered. This is the process of splicing different genetic algorithms together to create a child algorithm from 2 (or more) parent algorithms.

The process of building, selecting and recombining can continue from this until an endpoint/goal is reached.

A simplified overview of the cycle is:

  • New generation
  • Fitness Selection
  • Terminate ‘unfit’ algorithms
  • Recombine to make the next generation
  • Repeat

Closing thoughts

After Gilgamesh’s talk I feel like I learnt a lot about the fundamental process of Evolutionary Programming. Gilgamesh used a lot of biological terminology which I felt made it easier to follow and understand. It was detailed but easy to follow and I would thoroughly recommend watching this if you didn’t have a chance to catch it at the Dyalog ’17 User Meeting. The full presentation is below, Courtesy of Dyalog.

About the Author

A picture of Sam Gutsell, the author of this blog

Sam Gutsell

APL Developer

Sam is an APL Developer at Optima Systems. He started at Optima in 2012 as an apprentice straight after finishing College. Sam decided to take Computing whilst studying at college, yet, he never intended to but, he thought it sounded interesting at the time. Sam’s original career plans involved studying Meteorology at university, to become a Meteorologist. His plans changed when he realised how much he enjoyed code. More about Sam.

More from Sam

Other Posts