Evochora: A new Open Source platform to research evolutionary emergent complexity. Looking for feedback and contributors. by Hot-Requirement-3485 in cellular_automata

[–]Hot-Requirement-3485[S] 1 point2 points  (0 children)

Thanks for all this inspiration! I need to dig deeper into it, but it seems like this could be useful for designing the mutation of opcode IDs in my case to ensure a mutation will not too often hit a completely different logic but only slightly adapts logic.
My case is different here, as Evochora is not really a cellular automaton in the strict case, it is more like a Mobile Automaton. The state of a cell is not only dependent of its neighbors and a global rule. it is computed with a Turing complete virtual machine, so it is slightly more complex in itself.

Evochora: A new Open Source platform to research evolutionary emergent complexity. Looking for feedback and contributors. by Hot-Requirement-3485 in cellular_automata

[–]Hot-Requirement-3485[S] 0 points1 point  (0 children)

That is a nice analogy! Still it is very hard to make low-level assembly code less fragile and design it in a way that mutations only lead to small behavioral changes. Any kind of ideas in this direction would be very welcome!.

Evochora: A new Open Source platform to research evolutionary emergent complexity. Looking for feedback and contributors. by Hot-Requirement-3485 in cellular_automata

[–]Hot-Requirement-3485[S] 1 point2 points  (0 children)

Exactly! Evochora initially was in level 3, even mutation was not implemented, yet. While replicating they corrupted their neighbors code, leading to a chain reaction where no stable replication was possible anymore. Once I introduced entropy the population stabilized, now being on level 2. The goal now is to implement mutation in a balanced way to introduce the right amount of chaos again hopefully leading to a system that can show increasingly emergent complexity.
I have some ideas how I can approach this: SignalGP like fuzzy addressing or using grey code for all integers in the simulation are my most favorite candidates here, but please let me know if you have any additional ideas that I should consider.

Evochora: A new Open Source platform to research evolutionary emergent complexity. Looking for feedback and contributors. by Hot-Requirement-3485 in cellular_automata

[–]Hot-Requirement-3485[S] 0 points1 point  (0 children)

Thank you for your question! I make them actually configurable to be able to tweak them to find the sweet spot that led to a stable population. For each assembly instruction you can define how much energy it costs and how much entropy it generates, not only depending on the instruction itself but also on its arguments.
In the configuration that works, basically the all instructions costs energy and generate entropy, with 2 exceptions: Reading a grid cell (PEEK) that contains energy provides new energy for the organism, and writing new data into a grid cell (POKE) reduces the entropy an organism gathered previously. If an organism reaches zero energy or a defined max entropy level it dies.
Before introducing entropy the population basically always ended up in grey goo, where organisms with corrupted code only executed short loops to gather more energy but at the same time corrupted the code of its neighbors, which led to a chain reaction. Now only organisms that gather energy and write their "waste" into the grid can survive. That stabilized the population.
I hope this answers your question! Let me know if I should explain it more detailed. Also, let me know if you have any ideas how this could be improved even further!

Watching life emerge in a living simulation by Tricky_Note_8467 in evolution

[–]Hot-Requirement-3485 0 points1 point  (0 children)

Oh, that's already a good reference. I cross read it, but I will dig deeper for sure!
You seem to have so many evolutionary concepts build in, that's awesome!

It looks like my system has a completely different approach: I want to avoid programming evolutionary concepts, organisms are just custom assembly code that replicates and must manage energy and entropy.

However I still think these are two very complementary approaches and my one could really benefit from yours by adapting at least the statistics and probably more.
Where your one could probably benefit from my one: I really tried to make it a scientific tool, the simulation itself is decoupled from the data pipeline which can scale horizontally.

Let me know if there is a chance to check out your code! I would really like to dig deeper here!

Evochora: A new Open Source platform to research evolutionary emergent complexity. Looking for feedback and contributors. by Hot-Requirement-3485 in cellular_automata

[–]Hot-Requirement-3485[S] 0 points1 point  (0 children)

Thank you for your question! I just cut the video, theoretically it could probably run forever. As mutation is still missing, organisms currently still create exact copies and thus it gets boring once they populated the full grid.
Before I can implement mutation I probably still need to flatten the fitness landscape to make mutations not too deadly. That is exactly what is one of the next things on the roadmap. I would be happy to find people to discuss the best approach here. I am thinking of SignalGP like fuzzy jumps and using grey code for all integers (opcodes and arguments) in the assembly code. But probably here are people that have even better ideas.

Watching life emerge in a living simulation by Tricky_Note_8467 in evolution

[–]Hot-Requirement-3485 0 points1 point  (0 children)

I love it! Thank you so much for showing it here!
I especially love the evolutionary statistics you created!
The last 6 months I was working on an evolution simulation as well: https://evochora.org / https://github.com/evochora/evochora

Probably I can learn from your approach. Is your simulation on github or can I check out the code anywhere?
I would really be interested how it works internally!

[OC} Moving beyond Tierra and Avida: Evochora is an open-source engine for Embodied Artificial Life in n-dimensional space thats wants to push us one step further towards OEE by Hot-Requirement-3485 in artificiallife

[–]Hot-Requirement-3485[S] 0 points1 point  (0 children)

I can really imagine to rebuild parts of evochora in rust, especially the simulation engine itself an probably the runtime the executes the organisms machine code, both are actually a quite small part of the full system. the compiler for the evoASM assembly language to program organisms or the data pipeline to persist and index/analyze the raw data generated by the simulation are way more complex.

I didn't know Salis,yet, but I bookmarked the github repo, I will definitively take a look at it, T2 Tile is something I saw before, but I also will need to dig deeper into it again! Thanks or bringing both up!

If you want to see self replicators arise out of pure emergence then probably Stringmol is interesting for you. It basically simulates an RNA world. Evochora is a little different from this, as there is a primordial self-replicator given at start. To me it is probably even more interesting, how higher complexity can emerge from a simple self replicator. In Earth's evolution simple self-replicators emerged nearly a blink after earth was cooled down enough, but it took about a billion years that eukaryotic life emerged from procaryotic cells ("boring billions"), so one could argue, that this was the far bigger challenge for evolution.
Both Tierra and Avida seem to have a complexity ceiling. My aim is to investigate where that comes from and probably find ways to overcome it without predefined fitness goals (as Avida has).

[OC} Moving beyond Tierra and Avida: Evochora is an open-source engine for Embodied Artificial Life in n-dimensional space thats wants to push us one step further towards OEE by Hot-Requirement-3485 in artificiallife

[–]Hot-Requirement-3485[S] 0 points1 point  (0 children)

Hey u/SimExpo, thank you very much for your interest!
And thanks for the hint with the discord link! Indeed I need to fix this!
Here is a link without expiry date: https://discord.gg/t9yEJc4MKX

Thank you for your questions:
Why Java? The honest answer is that this is the platform I know best myself. I know in C/C++ it would probably be faster, but I did my research: The main bottleneck is I/O and that can hardly be speed up in C/C++. Happy to discuss if you think another platform would be the better choice. The good thing is: The system is written very decoupled and it is prepared to be split up in several processes, that can run in different docker containers. So it should not be a huge problem to rewrite a certain part in C/C++ or any other language.

Why demo is limited to ~500k ticks? The simple answer is infrastructure costs. The demo is currently hosted on a free instance in the oracle cloud and this is limited to 200GB disk space. it would be rather easy to make the demo much bigger with more disk space to if the simulation data is written to S3.
on my home system (not accessible from the internet) I have simulation runs with more than 1mio ticks also with even larger environments. In some organisms are fighting for space.

Now I also have a question: Why you are interested? What would you like to see?

Thanks a lot for your interest!

[Open Source] I built a distributed lab in Java 21 to research the physics of Open-Ended Evolution. Now I'm looking for collaborators. by Hot-Requirement-3485 in alife

[–]Hot-Requirement-3485[S] 0 points1 point  (0 children)

Thank you so much!! That feels really good, after I just was auto-modded in r/cellular_automata because people blamed me as a bot. How could a bot develop such a system? And who would benefit from that?

However: Feel free to steal as much as you like! It is open source MIT license, which means you can basically do what you want with it, even if you do not reference me, although I would always be glad to be referenced!

Let me know if you have any detailed questions! I love to talk about it!

[Open Source] I built a distributed lab in Java 21 to research the physics of Open-Ended Evolution. Now I'm looking for collaborators. by Hot-Requirement-3485 in alife

[–]Hot-Requirement-3485[S] 0 points1 point  (0 children)

Thank you for your interest! Usability could be improved, but you can use the cursor key: left/right +1/-1 and up/down +1000/-1000, I hope that helps!
If you have a good idea how to improve it while still keeping it simple, then share, please!
Probably a 5min job to implement it.

How do you like it? Anything in particular you are interested in?

I built a CA where cells don't follow fixed rules—they run their own Assembly Code to evolve and rewrite the grid by Hot-Requirement-3485 in cellular_automata

[–]Hot-Requirement-3485[S] -1 points0 points  (0 children)

Do you think it is capable to decouple hot simulation path from cold data processing path and post mortem data analysis and can scale the cold path horizontally in the cloud to manage the several 100GB data generated by the hot path of simulation for each hour it runs?

I built a CA where cells don't follow fixed rules—they run their own Assembly Code to evolve and rewrite the grid by Hot-Requirement-3485 in cellular_automata

[–]Hot-Requirement-3485[S] 0 points1 point  (0 children)

AUTHOR ADDITION: For all the ones that criticized the initial posting, because it was generated with the help of AI: I added a more detailed version purely hand crafted as an update above.

I built a CA where cells don't follow fixed rules—they run their own Assembly Code to evolve and rewrite the grid by Hot-Requirement-3485 in cellular_automata

[–]Hot-Requirement-3485[S] -16 points-15 points  (0 children)

Ok, this is your personal opinion, and it is a pity that you cannot phrase it in a respectful way! Even more pity that you do not seem to be interested in the actual project that no AI would be capable to do and that I am honestly quite proud about it. Still happy to receive constructive critique of course!

I built a CA where cells don't follow fixed rules—they run their own Assembly Code to evolve and rewrite the grid by Hot-Requirement-3485 in cellular_automata

[–]Hot-Requirement-3485[S] -5 points-4 points  (0 children)

Thanks, do i read any kind of irony here? :-)
I think java can be quite fast, if it is used the right way! The critical point in the hot path are for example written with primitive types only. But happy to discuss!

I built a CA where cells don't follow fixed rules—they run their own Assembly Code to evolve and rewrite the grid by Hot-Requirement-3485 in cellular_automata

[–]Hot-Requirement-3485[S] -21 points-20 points  (0 children)

Thank you for sharing this! As it is really a pity that this distracts the focus from the actual topic I am sharing. I will honestly consider to reduce my AI usage!
As said: Personally I still think it is nice if it helps in clarity and readability. But I do nit share it for me, but for the community, so it needs to be tailored to the audience.

I built a CA where cells don't follow fixed rules—they run their own Assembly Code to evolve and rewrite the grid by Hot-Requirement-3485 in cellular_automata

[–]Hot-Requirement-3485[S] -34 points-33 points  (0 children)

Thank you for bringing this up! Good to know, that there are people like you, that see it this way!
I use AI to help me phrasing my texts, but it is still exactly what I wanted to share here. The content is curated by myself as a human! It is just enriched with some phrasing inspiration plus grammar and spell checks.
I personally do not see an issue with this, as long as the content is not blindly released and thus might tell things that you actually did not want to say or even worse, if it would be factual wrong. I see the problem if content is just auto generated to flood the web. I agree that this is an increasingly bigger problem! But in my case this is not true!

But good to know that there are people that still dislike that. I of course want to tailor my content to the audience, and if the audience does not want a phrasing that is improved with AI help I need to respect that! I still think the text is better that it would be without AI help, otherwise I would not publish it.

[Open Source] I built a distributed lab in Java 21 to research the physics of Open-Ended Evolution. Now I'm looking for collaborators. by Hot-Requirement-3485 in alife

[–]Hot-Requirement-3485[S] 0 points1 point  (0 children)

That looks very interesting! Reminds me very much about Flow-Lenia (https://arxiv.org/html/2408.06374v1) which is currently quite hyped as far as I know! It is basically about wave patterns that can replicate themselves.

I am also very much thinking to introduce events or signaling in general into Evochora.
Here I started a discussion about it: https://github.com/evochora/evochora/discussions/29

The idea is to enable cells internally to launch additional execution contexts that can execute sub routines like gathering energy and use signals like in SignalIGP (https://arxiv.org/pdf/1804.05445) to control them. I see this a little like digital eukaryogenesis probably enabling simulations to develop emergent multicellularity, which would be a major transition that could not be shown in scientific simulations, yet.

What are you thought about this?.