3 ms·
There is an intriguing variety of Conway's Life I want to find some time to work on: - At any given time each alive cell has a probability to go into the dead
by d_silin 7y ago
There is an intriguing variety of Conway's Life I want to find some time to work on:
- At any given time each alive cell has a probability to go into the dead state, at 0.01 or lower per iteration - equivalent of "entropy")
- There are localized sources of "energy" (areas where a dead cell will spontanously come alive with high probability, 0.1-0.9 or so)
- some interesting results are immediately noticeable. Like blinkers will die quickly, but blocks can regenerate from entropy damage.
My hypothesis is that large enough simulation of this kind might yield a true A-life pattern.
P.S. I also want to learn Rust a bit more, so this looks like a good project to fork.
- brundolf 7y agoIs this an established variation or something you invented?
- d_silin 7y agoThis is something I invented many years ago, I even wrote a basic implementation in C#, but it was not suitable for large-scale simulations.
- fastball 7y agoAt that point I think you have gone above Conway's Game of Life and are now just in the superset of "Cellular Automata".
- rsiqueira 7y agoLet's think about more simple properties that could be added to create a more interesting dynamical system. Some ideas are: each cell could be a small neural network that learn properties of its surrounding environment; each generation could produce variation of neural network parameters so it could use evolutionary algorithm to evolve; the cells (or group of cells) could be able to move (e g. the evolutionary algorithm will select the ones that move towards the energy source); the cells could have sensors (e.g. sensing proximity of the energy source); cells or group of cells could compete for resources.
- scrumper 7y agoI went fairly far with this, creating a simulation of creatures I called worms using an unholy marriage of neural networks, cellular automata, and classifier systems (a pattern matching approach based on genetic algorithms). I wanted to see whether a population of "worms" with neural network brains would outcompete a population with classifier system brains. Rust makes this both fun and a challenge - immutable variables and trait objects make simulation programming a bit trickier. In the end the project fell off a cliff when I got grumpy that I couldn't create a single templatized breeding function that could apply to both types of brains - because of those trait objects. It started to look like I'd have to unwind a lot of my design to rework it (a common experience in Rust!) and then I got a new job, and you know the story. In every other respect Rust made this project a real pleasure - the tooling is great, particularly the compiler. It's been a couple of years, perhaps I'll dust it off again!
- brundolf 7y agoIf you do decide to use Rust for your task, and are trying to see how far into the future you can make it iterate, go into the Cargo.toml and uncomment the line "# opt-level = 3". This enables compiler optimizations, which in other projects have given me a 20x speedup. I didn't turn them on here because none of my sample configurations have any speed problems.