One of the first programs I ever wrote, back in the early 1980s, generated a random set list for the band I was playing in at the time, Eddie and the Atlantics (the program was written in Basic on a Timex/Sinclair ZX81). While the program didn’t encapsulate any of the “business” rules we used for planning set lists (start and end with faster tunes, vary the song keys and rhythmic styles, feature each of the singers and soloists, etc.), it did tend to turn up interesting combinations of songs or parts of sets.
I was reminded of this when Jim Bruce sent around this article about Eric Bonabeau’s Hunch Engine software, that uses evolutionary algorithms along with human choice to progressively refine solutions to problems posed.
No software can take all these things into account. So programmers shouldn’t even try, argues Bonabeau. Instead, they should look to nature, in which random mutation and natural selection produce the features that fit an organism to its environment. Evolutionary algorithms start with a few solutions and a set of constraints, then breed generation after generation of new solutions by recombining selected elements from the previous generations. In order to steer the solutions in a certain direction, the algorithms need only be told which solutions in each generation to recombine. The choices can be made automatically, or they can be made by humans.
The article goes on to give an example of how the software has been used to come up with new routes for letter carriers to cover in a French town. Instead of trying to understand all of the reasons the letter carriers have for preferring one route over another, the software generated sets of initial possibilities, the mailmen (and women, one supposes) picked out the ones they liked the best and those were used to generate successive generations, getting progressively more refined. A simple yet elegant approach to problem solving.
Wish I had had the Hunch Engine hooked up to the old random set generator!