The taxonomy functionality organizes and classifies organisms into categories based entirely on their genetic composition.
No pre-made assumptions. The system does not rely on any predefined species or groups. It doesn't assume anything about what an organism is or where it belongs in the biological hierarchy. Instead, it uses only the genetic information provided to determine the classification.
Completely deterministic. The process is entirely predictable and consistent. If you give the same genetic composition to the system multiple times, it will always produce the same classification and associated traits. There is no randomness or subjective interpretation involved.
Grouping by genetic patterns. The system analyzes the organism's genetic makeup and sorts it into the classic taxonomy levels of categories, from very broad groups (like domain) to highly specific ones (like species). These groupings are determined by patterns and variations found in the genetic data.
No external definitions. The system doesn't rely on existing species or taxonomies, and classifies organisms purely based on the input genetic data.
In summary, the taxonomy classification classifies organisms objectively and deterministically, driven entirely by their genetic composition without relying on predefined categories or external assumptions.
Each simulated evolution begins with a random initial seed. I wanted to avoid any preconceived model of the world and its evolutionary processes. For this approach to succeed, the taxonomy classification needed to be a deterministic generalization of an organism's genetics
across all taxonomic levels, from Domain to Species.
I began by constructing a new Taxonomy class that accepts an array of numbers, with each value representing a component of an organism's genetic makeup. This genetic array is then transformed and reduced at varying levels of precision corresponding to each taxonomic level.
Through extensive experimentation with precision settings and transformation methods, I tried to find the ideal balance, a sweet spot
that would yield a reasonable distribution of species based on the diversity of randomly assigned genetics across all organisms.
This reduction process organized organisms not only into species groups but also into progressively fewer clusters of genus, family, order, class, phylum, kingdom, and domain, each level encompassing larger populations within its hierarchy. Importantly, all groupings remained deterministically derived from the randomly assigned genetic foundations.
Finding an equilibrium that effectively sorted the vast array of organisms with their uniquely individual genetic profiles into coherent groups turned out to be more challenging than expected.
I was committed to avoiding manual classifications or special cases. The solution needed to be universally applicable across all possible initial random seeds, relying only on the input genetics and the varying precision thresholds for each taxonomic level.
Ultimately, the solution emerged with elegant simplicity: just a few lines of mathematical expressions and carefully balanced weights.
A single Taxonomy algorithm capable of sorting and classifying any collection of organisms with randomly assigned compositions of genetics.
All species have the potential to evolve into new species. This isn't due to some inherent function designed for species evolution, but rather through random mutations in the genetic makeup of each newly born organism.
What we recognize as a species is essentially a generalization of individual genetic profiles, a shared abstraction among organisms whose genetics are sufficiently similar.
Mutations, in their role of creating new species, cause an organism's genetic profile to diverge enough that it no longer aligns with any previously classified species.
The organism naturally differs from others because of its distinct genetic composition. These differences manifest based on which genetic markers have mutated and to what degree.
Species, as a concept, is merely a label we as observers apply to organisms to categorize them and establish a framework for predicting their appearance and behavior. In the fundamental view of physics, we are all simply organisms with an extensive spectrum of genetic compositions.
This principle also forms the foundation of our evolution simulation.
As pretty and modularized and extendable as my species taxonomy code was, it was all backwards.
I was wrong in assigning taxonomy willy nilly. Taxonomy is not given to an organism in nature.
It should instead be deterministically interpreted based on the organisms' genetics.
Given a set of genetics, an organism should inherently be classified as a given species.
An organism's species is not assigned somewhere in a natural database, it is deduced, based on something else.
Species, and the full taxonomy of an organism, is not given to it at birth.
It is simply a way of grouping organisms based on a shared, but extremely varied, chemical setup - genetics.
There is no notion of different species in nature. To nature, all organisms are simply organisms with different genetics.
Different chemical compositions.
Although no two organisms will ever have an identical chemical composition, groups of organisms have a similar composition.
Similar enough for them to look alike, and behave alike. For them to be able to produce viable offspring. For them to even be attracted to each other to be able to attempt reproduction in the first place.
One of the first problems to solve was how to make different species.
What is a species, actually?
I had to read up on taxonomy, the study of grouping animals and plants. It's such an interesting read.
I learned a lot about the history of taxonomy, all the way from Aristoteles, to Carl von Linné, to DNA sequencing.
Wrong path
Quite naively, I started building classes in javascript for all the levels of taxonomy.
Domain, Kingdom, Phylum... all the way down to Genus ans finally Species, all extending their respective parent class.
It was very neat and clean.
I then built an Organism class and assigned a taxonomy to a list of ~1000 randomly generated organisms,
happy to see that each Organism had a full taxonomy dependency from Species up to Kingdom,
all randomly assigned, while maintaining their hierarchal dependencies.
I was thinking of ways to transfer this transfer the taxonomy to an Organism's offspring,
and how new species would evolve. It was pretty to see all these organisms with their assigned species.
An ordered chaos following simple rules.
I want the world and the evolution to be completely random, and not based on things we see in our own evolution. No giraffes, no hippos, cocker spaniels and no pterodactylus. I'm not replicating existing animals.
I'm actually not replicating the concept of animal either. The simulation simply features organisms with basic traits, and then the evolution itself takes care of the rest. If an organism evolves into something with a long neck that moves about on four long legs and consumes parts of another tall stationary organism, then I'm here for it.
An evolution in the simulation may very well produce something completely different, just as viable as a giraffe is in our evolution. That's what's so much fun about this. It makes no assumptions about what should happen. Things just happen because of logical behavior in a deterministic, but highly unpredictable, environment.
You may have theories about whether our universe is deterministic or not, and about the immense philosophical implications of both options.
The components in the evolution simulation are built in an object oriented paradigm. I mean, what better use of object oriented programming than creating a world with a multitude of similar but individually unique entities?
All components of life in the simulation are based on a shared entity type, that holds id, energy, position and lite cycle.
The entity component itself builds on and basic energy component that controls different types of energy in each entity, eg chemical energy, kinetic energy, nuclear energy, thermal energy.
Higher ordinal components of life in the simulation, such as organism, basic elements and conditions are all based on the entity component.
This hierarchy makes it easy to manage all entities in the world, and have them existing on the same playing field, while giving some of them different characteristics and capabilities.
Nothing in this segmentation dictates species. Species are dictated entirely on genetics.
I had to decide on what part of evolution I wanted to simulate. On what level of granularity.
Start at Big Bang? Base it on cellular automata, and build from there? Something else?
Both of those would be fun exercises, but I decided to start with something that would be fun to interact with in a game, where players could emphasize with the playable characters. Something different from what we know, but still close to home.
What's interesting about simulating evolution is it forces you to think about the philosophical questions that come with our interpretation of the world around us.
How did the world come to be?
How did everything start?
What was the initial seed of life, the universe and everything?
Was intelligent design applied somewhere to kickstart the process?
Are the changes in evolution happening at random?
Is there such a thing as randomness?
Is the universe deterministic, building on the inevitable chain of events based on an initial seed? Who chose the seed?
Honestly, for thoughts on this, I recommend Stephen Wolfram's research into cellular automata.
As for the evolution simulation, it takes the stand of starting at a genesis, with a seeded randomness ensuring a deterministic evolution based on the initial seed. This provides a fully ranom evolution each time, one that can be regenerated if provided the same initial seed.
In the real world, scientists are still uncertain if we live in a deterministic universe where there is no actual randomness, only perceived complexity, or if there is an inherent radnomness. Either way, humans would never know the difference in their day to day life. But it would have immense implications for things like free will.
Organisms in the evolution simulation have free will, but this free will is based on a deterministic randomness.
The idea is to have the world be completely random each time it is restarted. Based on some basic rules applied to the world, all evolutions will be completely unique, and no two evolutions will be identical.