I was inspired by RNA abiogenesis to play around with random program evolution.
Of course I know that evolutionary simulations exist, but I have not seen it yet in this fashion. If anything interesting happens (simple replicating programs) that would already be awesome.
The plan is this:
The environment is a large ~32 bit array. Each number has 4 bits for a command, and the remaining bits for 2 arguments, similar to a traditional register based computer.
So every entry in the array looks something like:
CPY X1 X2 (copy value from address X1 to address X2).
There is a command that specifies a process entry point. This command designates an area in the matrix around the entry point which shall be a program.
The simulation is run with hundreds or thousands of parallel "seekers" (easily paralellizable in GPUs).
Each seeker looks for a process entry point, executes that program, and then picks a new process entry point. All these seekers run in parallel.
The commands are for example:
entry point
jump
copy
write
write random
compare
add
etc. This is easily enough to allow turing completeness.
The whole thing will work by initializing the field randomly. For the course of the simulation, every interaction will have some randomness.
Entry points will be generated and seekers will execute them. All adresses in a program are relative to the entry point, so programs can only affect their local environemnt.
The first programs will be simple infinite loops.
Hopefully there will be replicators, that write their own code into the memory next to them.
If the whole thing works, it will be ridiculously easy to hardware optimize (literally at least 1000 times faster)
What do you think?
Of course I know that evolutionary simulations exist, but I have not seen it yet in this fashion. If anything interesting happens (simple replicating programs) that would already be awesome.
The plan is this:
The environment is a large ~32 bit array. Each number has 4 bits for a command, and the remaining bits for 2 arguments, similar to a traditional register based computer.
So every entry in the array looks something like:
CPY X1 X2 (copy value from address X1 to address X2).
There is a command that specifies a process entry point. This command designates an area in the matrix around the entry point which shall be a program.
The simulation is run with hundreds or thousands of parallel "seekers" (easily paralellizable in GPUs).
Each seeker looks for a process entry point, executes that program, and then picks a new process entry point. All these seekers run in parallel.
The commands are for example:
entry point
jump
copy
write
write random
compare
add
etc. This is easily enough to allow turing completeness.
The whole thing will work by initializing the field randomly. For the course of the simulation, every interaction will have some randomness.
Entry points will be generated and seekers will execute them. All adresses in a program are relative to the entry point, so programs can only affect their local environemnt.
The first programs will be simple infinite loops.
Hopefully there will be replicators, that write their own code into the memory next to them.
If the whole thing works, it will be ridiculously easy to hardware optimize (literally at least 1000 times faster)
What do you think?
