I remember the first Heathkit that I ever assembled (or, more precisely, that my Father assembled with me — thanks, Dad!). It was a lesson in how to overcome the manifold frustrations of following arcane instructions ... cutting and bending and stripping and routing wires ... sorting and soldering a maze of resistors and capacitors (plus a few inductors) ... and finally debugging and correcting the inevitable mistakes. In the end, there was a miracle: a shortwave radio that (mostly) worked.

When it was finished, I marveled at the magpie's nest of components around the base of each vacuum tube. Why were they there? At 10 years of age I had no conception of bias voltages, Ohm's law, RF filters, and the like. I recall thinking that perhaps all those tiny devices had been put there by quasi-chance, as people experimented and gradually came up with patterns that worked. It seemed improbable, even to me then — but I didn't have a mental model of how circuits could be designed.

This memory surfaced again the other day, in the context of Genetic Algorithms (GA), sometimes called Evolutionary Programming. GA is a new-ish part of computer science, though elements of it have been around for decades. The basic concept is analogous to evolution by natural selection, though for GA the selection is more than a bit unnatural. Begin with a bunch of random, crummy attempts to solve a problem. Mutate them, mix elements of them together, and otherwise come up with new random attempts to solve the problem. Test them, get rid of the worst ones, and make more copies of the relatively better performers. Then repeat.

It works — sometimes, kinda, sorta, maybe. In realms of low dimensionality, where there aren't too many choices to make, there's a chance that blundering about will find a good method. When there's a smooth slope up to the optimum answer, and not a lot of local hills and valleys, there is hope. (see MultidimensionalMountaineering, 13 Dec 1999) If a task can be factored into relatively independent sub-tasks, each of which can be worked on simultaneously, the odds improve. And above all, given eons of time and myriads of competing entities, success becomes more likely, maybe even inevitable.

So depending on one's viewpoint and the problem to be solved, a Genetic Algorithm is either a scam or a certainty. Like Darwinian evolution....

TopicProgramming - TopicScience - 2001-12-21

(correlates: VeryGood, SemioticArsenal, ThanksAndAcknowledgements2, ...)