The adjective “Darwinian” is often applied to the dog-eat-dog software industry. But get ready for software that orchestrates natural selection among computer programs so that researchers can harvest the surviving code.
That striking notion underlies genetic programming, a branch of artificial intelligence in which a computer solves problems in biomedicine, electronics and even robotic soccer playing by evolving its own software. Researchers have been working with the concept for many years and have implemented it in a few high-end engineering design applications.
At Stanford, genetic programming research seeks to produce results that are competitive with human problem solving, and to test that by evaluating success in duplicating or infringing upon existing U.S. patents. The research effort now has accomplished just that for patents generated as recently as last year. The work may eventually deliver automated “invention machines,” says John Koza, genetic computing guru and consulting professor of biomedical informatics at Stanford.
Environment for Evolution
Koza says the recipe for perfection of a species goes like this:
- Create a rules-based environment defined by a problem you want to solve-such as designing an analog audio filter, finding a metabolic pathway or creating an antenna design.
- Add a “primordial ooze” of half-a-million or so randomly generated programs, each designed to take a stab at the problem.
- Step back and let the population evolve generation after generation. The programs electronically die off, mutate, crossbreed and adapt to the environment, “until the fittest individual in a late generation solves, or approximately solves, the problem,” Koza says.
Not surprisingly, such forced evolution could bring almost any computing system to its knees. Fortunately, Koza’s resources include a 1,000-node parallel computing cluster at Genetic Programming Inc. in Los Altos, CA, where Koza is president.
Koza, who began his work in genetic programming in the 1980s, has long been fascinated by the question, how do you get a computer to do what needs to be done without telling it how to do it?
Until recently, his organic software-breeding method was able to dream up only inventions that duplicated or infringed on patents filed as early as 1917 and as late as 1974. But Koza has set his sights forward, focusing on patents filed in the year 2000 or later, which demonstrate the state-of-the art for humans assisted with conventional engineering software.
“Five months ago, we didn’t have any results where we duplicated or infringed on very recent patents,” he says. “Now, we’ve got two in our sack and four others that are in various stages of programming.”
Concentrating on what he calls “the black arts”-areas where there’s no known mathematical method to solve the problem quickly-Koza’s recent focuses include controllers, analog circuits and cellular automata.
Competing with Humans
But if genetic programming has advanced to the point where it can duplicate recent patents, how soon will it be before Koza’s genetic programming experiments cook up inventions no one has thought of before?
“I imagine we have done that but we don’t know it,” laughs Koza. To identify valuable, original results rather than simply matching patents, he explains, a human expert in the given field would need to evaluate tens of thousands of survivors.
Koza cautiously acknowledges that companies may eventually be interested in licensing his technology, but he must hit a higher number of contemporary patents first. “Clearly, the next step is to come up with patents that haven’t been invented,” he says.
“When we get a group of six together, we’re going to stop that project and try to take the next step,” he says. “But we haven’t yet. There’s so much bogus stuff in the AI field where people babbled about what they thought they were going to do before they did it. We’re still waiting 30 years later for five percent of it.”
With a little luck, Koza and company will add to that bottom line soon.