What problems have you solved using genetic algorithms/genetic programming?
stackoverflow.com
stackoverflow.com
In January 2004 I was contacted by Philips New Display Technologies who were creating the electronics for the first ever commercial e-ink book reader, the Sony Librie, that had only been released in Japan, years before Amazon Kindle and the others hit the market in US an Europe. The Philips engineers had a major problem. Few month before the product was supposed to hit the market, they were still getting ghosting on the screen when changing pages. The problem was the 200 drivers that were creating the electrostatic field. Each of these drivers had a certain voltage that had to be set between zero and 1000 mV or something like this. But if you changed one of them, it would change everything. So optimizing each driver's voltage individually was out of the question. The number of possible combination of values was in billions,and it took about 1 minute for a special camera to evaluate a single combination. The engineers had tried many standard optimization techniques, but nothing would come close. The head engineer contacted me (I was in US at the time, they were in Holland) because I had previously released a Genetic Programming library to the open-source community. He asked if GP/GA's would help and if I can get involved. I did, and for about a month we worked together, me writing and tuning the GA library, on synthetic data, and him integrating it into their system. Then, one weekend they let it run live on the real thing. Next Monday I got these glowing emails from him and their hardware designer, about how nobody could believe the amazing results the GA found. This was it. Later that year the product hit the market. I didn't get payed one cent for it, but I got 'bragging' rights. They said from the begining they were already over budget, so I knew what the deal was before I started working on it. And it's a great story for applications of GAs.
"At present, it is not clear whether the appeal of genetic algorithms arises from their performance or from their aesthetically pleasing origins."
Furthermore:
"Most comparisons of genetic algorithms with other approaches (esp. stochastic hill climbing) have found that the GAs are slower to converge."
The discussion at the page below is very enlightening as well.
Most naive uses of GAs I've seen tend to mix two essentially separate things: how to formulate it as an optimization problem and how you're going to optimize if (if with a convex/continuous relaxation, local approximation, stochastic hill-climbing). In general, many GA formulations tend to be really naive, choosing parametrizations where (for example) some bits are highly correlated (this is bad because stochastic bit-flipping methods tend to mix very slowly with correlated inputs) in ways that could be fixable with a better parametrization (that would, however, not necessarily fit the "chromossome" metaphor).
However, let's not diminish the fact that GA is a damn good tool to get hand dirty first on most problems.
* Generating iterated prisoner's dilemma strategies. It's not that this is an intractable problem...but I wanted to see what would happen in a large population of different strategies. This actually resulted in support for some theoretical results I'd read, which was nice. This was for a class paper.
* The Mona Lisa polygon thing that Roger Alsing came up with - wrote this just to test a new GA lib I'd written to learn Python.
* Optimizing a nano-scale emitter for a new scanning electron microscope - I didn't actually solve this problem, as I had to leave the job where I was working on it before the project finished...but I'd like to think that the project will get somewhere one day.
* "Translating" English prose to English verse; that is, trying to increase the metricality of text while minimizing semantic drift. Very, uh, mixed results (I blame Wordnet!). This was also a class project.
I feel like I might be forgetting something, but that's at least most of it.
Happy to send you the paper if you're interested in more depth than the above.
I wonder if y'all ever went looking for 'hidden verse' in published prose, too.
Btw other than to have fun I also tried to use this approach to create a few hash functions with good distributions.
I'd love to hear more about your approach. Email me? I thought of using GP for the tron google challenge but it was too slow to launch that java thing they give you to run the players.
- do it on a GPU
I wrote a solver (conventional style) in Ruby that could solve squares in about 30 minutes, and I was pretty pleased with that, so I challenged a friend of mine to beat me.
He came back an hour later claiming he had code that could solve it in under 10s. He'd written a genetic algorithm that solved squares on my machine in about 6s and in only about 30 lines of Java (less than my Ruby). I was pretty humbled
This system was completely written from scratch, and I didn't use any other libraries. I'm not opposed to using such things, provided that they give a reliable result, but you have to be careful about license compatibility and code portability issues.