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.
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.
Ask Sam about APL / Legacy System Support / APL Consultancy
- Stormwind Simulator at Dyalog ’16
- Indexing arrays in APL: Squad indexing on Multi-dimensional Arrays
- How have video games changed our lives?
- APL Full-service Support
- Out of the office…well my usual one at least!
- A Day Trip to Dyalog ’16
- Dyalog 17 begins!
- My First Month (and a half) at Optima Systems
- Neural Networks and APL