For years I’ve been toying with different ideas for thinking or evolving software. The concept where you give the program a goal, some starting information, and some rules; and the program figures out the best way to reach the goal.
My favorite so far is the evolving method. The program created thousands to millions of little randomized programs and makes them survive or die. Maybe I’m just fascinated by the idea that something intelligent can derive from randomness. One of my favorite demonstrations is where clocks evolve out if random parts (YouTube clock evolution).
If I could harness this idea, then there would be no limit to the problems it could solve. With enough time and possessing power, it could solve anything.
So I was thinking today of how to build said program. My first instinct was to build it in C# because that’s where I’m strongest. Then I thought I should build it in python because the language is a lot more flexible and would lend it’s self easer to this kind of project.
Both have good points and both could be argued for my zen method. But which one is the right one? Spending too much time on that question is very anti-zen. It’s better to just pick one, even the wrong one, than to spend to much time debating the choices.
Back to how the system would work. I was thinking something like a table structure. The first column would be the input. The second would be the rule or function. The third would be the result.
The input could come from any of the sensory inputs, any random number(s)/letter(s), or the result from any row above it. This table would then be the programs DNA so to speak. It would be evaluated in order and the last row would contain the final result.
The rules would have to defined to the specific problem being solved. Over time universal rules that apply to almost any (if not all) problems could be defined. I think the more general the rules are, the longer it will take to find the best solution.
With enough random creatures, a very small percent will have some sort of solution. Then the winners go on to round two and new random children are created. Some of the new children will get random sections of the winners DNA. This process is repeated until the best solution is found.
How do we know who was close to the correct solution? It would be easy if some of the found the solution, but I fear that that would take an impossible number if starting creatures.