|
To quickly answer your question: - GPs are normally used in problems where you don't know what the answer looks like, but you know it when you see it, and it is a Global Search algorithm. The biggest problem is the search space of which GPs are used is enormous, so it takes a long time to find a solution. In the practical world this isn't very practical because there are many other good enough approaches that give you approximately the same answer, but there are obviously edge cases (see point 3). - Tuning GPs is also very difficult, there are simply too many control parameters such as population size, crossover rate, mutation rate, crossover method, mutation method, selection method, do you adjust the parameters on the fly or make it fixed from the beginning etc... you get the idea. These parameters play a role into how fast you might find the answer but there are no guarantees because of the randomness nature of the algorithm, example, one set of optimal parameters might be really bad the next run. - In terms of application GP is actually being used in the industry, but you probably don't hear about it because it is either a trade secret or people want a more deterministic solution. One example is testing, a particular company uses it to test their compiler technology, instead of just having humans write test code to test every possible bug, GP can be used to create valid* programs that intentionally make the compiler fail. Others include the great work done at Nutonian (http://www.nutonian.com/), where they use GP to evolve equations out of data (aka Symbolic Regression). Lastly, a shameless plug but if you want to play around with GPs I have written my own GP framework here: http://chutsu.github.io/playground/ (very much a work in progress) |