In recent news it’s been announced that Hungry Penguins have inspired a solution to the organisation of code in smart cars.
This particular problem arises from the fact that a car is built from many parts which are all built from many different manufacturers, all of which will run on their own software independently. So when working in such a safety critical industry scheduling, managing and integrating all of this software would be extremely complex. Which is where the Bio-Computing and penguins have come into it.
It was noted that penguins live in large societies with many entities (Like the software in cars), yet they are all fed and seem to hunt very efficiently. This has led to a theory that within the society they perform optimisation to some degree, it’s believed that hunting penguins are able to vocalise and communicate with each other to work out the best ways to catch fish or squid effectively. As well as being able to configure or organise themselves in ways to suit the conditions in which they are hunting. Which has led to the breakthrough of running test software which can slowly work towards the optimal way for code to be organised and this communication and organisation is seemingly key.
This is known more commonly as “Bio-Computing”. It is an approach to programming and software solutions based on solutions within nature. By this I mean that it involves looking at animals and systems in nature, then trying to use these to inspire computational solutions to difficult mathematical problems.
Bio-Computing is often used to solve optimisation problems. Examples of these solutions include:
• ACO (Ant Colony Optimization)
• Genetic Algorithms
• Genetic Programming
• Neural Networks
And now Penguin hunting algorithms.
Ant Colony Optimization
Ant Colony Optimisation as an example can solve many problems, one case it can be used for is the famous travelling salesman problem, and they have also been used in scheduling problems as well vehicle routing applications (Practical application of travelling salesman).
How it works:
ACO works based on ants foraging for food, At first ants will follow all paths and leave behind a trail of pheromones, The paths that are shortest or lead to the most food will be given a stronger scent and as ants keep emerging from the nest looking for food they will follow the trails with stronger scents until they find an optimal path.
In computing this means that all paths must be tried, the path between 2 points will be given a stronger trail or score based on how short the path is. This is then repeated with higher scoring paths being favoured, Repeat this until it won’t change anymore or your solution is within some sort of acceptable parameters (Under a certain length, certain amount of time, Petrol etc.).
Genetic Algorithms are another example of a way of solving optimisation problems. Genetic algorithms however require something that the ACO doesn’t, and that is what is known as a fitness function, this decided usually a percentage of how close the proposed answer is to the correct one.
Genetic algorithms are based upon the theory of evolution. It begins with a set of randomly generated answers to a problem, usually an array of values or a string of characters (such as DNA) they are all evaluated with your fitness function and assigned this fitness.
How it works:
If an answer has a high enough fitness for you to class it as correct then the algorithm is complete, otherwise it will create a new generation of answers to try again.
The population (Set of possible answers) need to reproduce, they are paired together (Usually based in some way on their fitness levels). And “Reproduce”. Chunks of each answer are put together to create a new answer in the new generation. There is then a small chance for a character in the new answer to be mutated (changed value). The generation is then re-evaluated. This repeats until you hit a limit of generations or an answer is found.
So In conclusion Nature has been solving the most complex problems for longer than humans have been around or capable of complex thought, so we should take inspiration from Nature and try to apply it to the issues we face today, whether computational or otherwise.
Bio-Computing can solve a vast array of problems in very impressive yet intuitive ways and is becoming increasingly involved in the latest software and technological advancements.