Evolve 5.0 Blog
VOLVE    5.0

Newer Posts Older Posts

Simulator Performance

December 26th 2022 @ 9:00am

The performance I am seeing on the Apple M1 Mac Mini is about 10.5 MHz. What I mean by this number is the simulator will execute 10.5 million kforth instructions per second. That means, if you had 10 cells then each would be running at 1 Mhz (1 million instructions per second). A simulation consisting of 20,000 cells, each cell is executing at 5.25 Khz (525 instructions per second). Not too bad considering you have 20,000 of them!




Eroded Away by Evolution

December 26th 2022 @ 2:00am

If you start a simulation with a seed program, evolution will erode away any complicated structures you initially put in place. So how to nudge evolution to use your suggestions?

A seed program is a KFORTH program you specify when creating a new simulation. It is the genetic code of the first creature(s) to inhabit your simulation. The minimal seed program reproduces and moves and eats. My standard seed program, which I have been using for years, just moves randomly and eats and reproduces. With the right parameters you almost always get a simulation that takes off and sustains itself long enough for lasting mutations and evolution to occur.

By this time most of the seed program is replaced with mutated code. But what if you wanted to boost evolution? What if you wanted to experiment with a new kind of parent/child communications for example?

One way to experiment is to create an elaborate seed program which contains all your new logic for communications between parent and child. And then have the intial creature use this feature, but in a dumb way.

Such a seed program would quickly get "eroded" by evolution. What I mean is the elaborate code you wrote for the seed program won't be called due to mutations. When the simulation starts it will be a race to the bottom to find really efficient code and that will almost certainly by pass all your fancy code.

This is why protected code blocks and protected instructions were invented. Now you can create complicated behaviors which won't be eroded away by evolution.




ALIFE and Operating Systems

December 24th 2022 @ 1:00am

Evolve 5.0 uses the model of an operating system. What is an operating system? It is a way to host lots of untrusted code safely so that the various components won't corrupt each other.

An operating system is just an ALIFE simulator where the replicating DNA comes from the users running their programs. But the job of the operating system is to keep all of this chaos controlled so the machine continues to function no matter what strange things the users do.

So I think it is a reasonable idea to marry operating system with an alife simulation. All these concepts from operating systems: Protections, Traps, Spawn Process are just what you would want in a platform consisting of evolving genetic code.




The Cargo Cult in my Recombination Scheme

December 18th 2022 @ 1:00am

Genetic reombination is where you take TWO programs and merge them. At least in real world biology. The exact rules vary and are quite messy. In my artificial life simulator I was so stoked on Kforth that i jumped on the idea of merging the rows to recombine them.

But nothing evolved to use this merging feature. Is that because I did it wrong? Or sex requires evolving something first but once that happens the merging feature will be used? I didn't know.

I've become skeptical about all these recombination methods. There are so many rules you must hard code to define a merge mechanism. What are the odds you found the "right" way to do it? Or if there is even a right way?

I'm now of the opinion that a better approach is to provide fine grained ways to spread genetic information. For example the READ and WRITE instructions, allow code and data to be spread around on a code block level. And NUMBER! and OPCODE! instructions allows for genetic information to be created.

I haven't done it, but with the building blocks now in Evolve 5.0, it should be possible to use MAKE-SPORE to create the spore, and WRITE to populate it with whatever code you want. So now it possible to invent interesting patterns of information exchange.




Physics & Genetics

December 14th 2022 @ 12:23am

Artificial life simulations are characterized by their physics and genetics. Swimming, Terrain, Gravity, Flight requires some kind of space in which the rules of the environment are instantiated. Some kind of physics engine is required to simulate these behviors. What about using the physics provided by the computer itself? That is what Evolve tries to do.

Physics

Computers have lots of state these days. 8-16 GB is a huge chunk of memory. CPU's are fast! Why not use the already built in physics of the computer and avoid simulating real-world physics? This is kind of my intention with the Evolve 5.0 universe. More processing power can be spent on utilizing more state and simulating more organisms. Some concession must be made to real-world physics to create a visually appealing simulation. (Here I think using a 2-Dimensional grid was an improvement over the 1-Dimensional memory grid provided by the computer naturally) Anyway, your average computer is an astronomically large ball of state combined with a speed-of-light fast cpu to manipulate it all.

I keep trying to think of physics for my simulation. For example, I had to think up the idea of a "bullet" object. This was just a gimmick, and it takes up simulation cycles. But what physics is appropriate to a computer based universe? It seems to me the struggle in such a world would be over cpu cycles, memory space and the struggle to encode myself into smaller and smaller bits. In this world, the physics would be things like fighting over memory locations. Maybe exploting race conditions. Or cross-core cache side-channel attacks, etc.....

By the way, Core Wars, one of favorite artificial life sims, demonstrated all these things. Another kind of struggle is inventing ways to hijack another creatures machinery for copying. I added the READ and WRITE instructions in order to support this.

Genetics

Some artificial life software encodes the behavior in terms of parameters or weights in a neural net. Others use a programming language, like Evolve 5.0. I like to think the trade off made in Evolve 5.0 is to focus on computer based physics and computer based genetics.




Newer Posts Older Posts