It would be cool to make something like that, but more general. A wider scope of problems, more construction elements, more universal attachments, etc.
The standard method of genetic programming is to represent your algorithm/whatever as a tree. The leaves are data and the nodes are operations that the "universe" supports. Then two parents producing a child via "sex" is just trading subbranches. Mutation is random changes.
That works for a linear sequence of steps because there's a standard way to traverse a tree. The question is, how do you represent a machine in a tree? It's (usually) not a linear thing.
Take a wheel and a stick. They are two leaves, I guess. The node is the operator "attach"? But where? I need to know where on the stick AND where on the wheel. And if the connection is rigid, floppy, powered or what. Where is all that knowledge stored? How can I "break out" each of those things to allow them to mutate separately? Also, you can't have a whole-organism coordinate system, for instance, because a single mutation messes it all up.
Another idea is to use an algorithm to build the machine and represent the algorithm as a tree. But what's the advantage of that? I didn't realize until this morning: This is exactly what embryology is. A machine isn't a linear object, but constructing a machine is a linear process.
So to attach a wheel and a stick, I'd have an embryology something like this:
1) Place stick
2) Locate end of stick
3) Locate center of wheel
4) Attach
Or maybe:
1) Place stick
2) Advertises marker at X
3) Locate marker
4) Locate center of wheel
5) Attach
The marker system would be key. If there's more than one stick in the structure, "locate end of stick" is ambiguous. Whereas if the stick knows that it is, say, the left shin, it can hang out cards saying "I'M THE LEFT SHIN" and "HERE IS MY LOWER EXTREMITY" and the wheel can look for that.
Could one of my graduate students get on this and give me credit so I become rich and famous but don't have to stop the N projects I'm working on to get it done? Kthx!