Artificial Intelligence by Richard Urwin
Author:Richard Urwin
Language: eng
Format: mobi
Publisher: Arcturus Publishing
Published: 2016-03-17T22:00:00+00:00
Chapter 10
Evolutionary Computing
Neural nets take their inspiration from nature, mimicking the cells that make up living brains. Genetic algorithms and evolutionary computing use the methods of natural selection to create a program that solves the problems we set it. In nature a population of organisms will usually consist of several thousand individuals at any one time. Multiple generations are generally alive at the same time. The form of each individual is stored in its chromosomes. Each chromosome contains many genes. The individuals that are the best adapted to the living conditions are more likely to reproduce. Pairs of organisms mate and their genes are mixed to create the next generation. Sometimes there are spontaneous random mutations.
Genetic algorithms do precisely the same in software. A small computer object called a chromosome is designed that represents all of the variable parameters needed to solve the problem. Each of these parameters is called a gene.
As an example we will return to the robotic insect that hid in the dark but needed to eat. We might give it two genes, one that determined how scared of light it was and the other that made it braver when it was hungry. There will often be many more genes in the chromosome. Unlike in nature, a single chromosome is used to characterize an individual; there is no advantage to be gained in using more. Initially we need a population of different individuals. A thousand or more chromosomes are created with random contents. Then they are tested to find how good they are at solving the problem. Maybe we run our robotic insects through simulated lifetimes and measure their lifespans. The most successful ones are mated in pairs and maybe some of them are mutated. The new children take the place of some of the previous generation and the process is repeated.
This may seem to be a somewhat haphazard method of reaching a solution to a problem. One does not expect random numbers to be involved in an efficient process. It might feel as if we are saying ‘Pick a number ... No not that one; try again,’ but in fact it settles quickly on a chromosome quite close to the solution. Of course, it might quickly settle on an answer that is only good when compared to other answers close to it. Elsewhere there might be an even better solution but no chromosomes happened to get near enough to find it. That is why mutations are used; they create genes that do not exist in the population. Most of those will be disastrous failures but occasionally they will prove to be better than anything else in the population.
The difficulty with genetic algorithms, and with evolutionary programming in general, is knowing when it has finished. Since we do not know how to solve the problem in the first place, we may not even know if an answer that we are given is as close as it is possible to get. Given time it will get as close to the answer as the genes will permit but that might take a long time and be needlessly precise.
Download
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.
Deep Learning with Python by François Chollet(12703)
Hello! Python by Anthony Briggs(10009)
OCA Java SE 8 Programmer I Certification Guide by Mala Gupta(9876)
The Mikado Method by Ola Ellnestam Daniel Brolund(9876)
A Developer's Guide to Building Resilient Cloud Applications with Azure by Hamida Rebai Trabelsi(9817)
Dependency Injection in .NET by Mark Seemann(9421)
Hit Refresh by Satya Nadella(8871)
Algorithms of the Intelligent Web by Haralambos Marmanis;Dmitry Babenko(8387)
The Kubernetes Operator Framework Book by Michael Dame(8002)
Sass and Compass in Action by Wynn Netherland Nathan Weizenbaum Chris Eppstein Brandon Mathis(7841)
Test-Driven iOS Development with Swift 4 by Dominik Hauser(7808)
Exploring Deepfakes by Bryan Lyon and Matt Tora(7797)
Grails in Action by Glen Smith Peter Ledbrook(7772)
Practical Computer Architecture with Python and ARM by Alan Clements(7740)
Implementing Enterprise Observability for Success by Manisha Agrawal and Karun Krishnannair(7704)
Robo-Advisor with Python by Aki Ranin(7690)
The Well-Grounded Java Developer by Benjamin J. Evans Martijn Verburg(7656)
Building Low Latency Applications with C++ by Sourav Ghosh(7588)
Svelte with Test-Driven Development by Daniel Irvine(7572)
