Kindlewild

Taxonomy summary

By Robin Dowling · 10 months ago

The taxonomy functionality organizes and classifies organisms into categories based entirely on their genetic composition.

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Deterministic taxonomy based on genetics

By Robin Dowling · 10 months ago

Each evolution is based on a random initial seed. I don't want there to be any preconceived model of the world and the evolution. For this to work, the taxonomy classification has to be a deterministic generalization of an organisms genetics. At all levels of taxonomy, from Domain to Species.

I started building a new Taxonomy class. It's inputs were an array of numbers. Each value representing one component of an organism's genetics. Then the genetics array is transformed and reduced, at different levels of precision for each taxonomy level.

I tried lots and lots of precision settings and transformation methods to find a sweet spot, where I got a reasonable distribution of species based on the variety of the randomly assigned genetics for all the organisms.

This reduction organized organisms into groups of species. But also into fewer groups of genus, family, order, class, phylum, kingdom and domain, all with larger and larger populations for each level of hierarchy. This is still all deterministically grouped, based on randomly assigned genetics.

It was really tricky finding an equilibrium that sorted the sprawling set of organisms and their individually unique set of genetics into groups correctly.

I didn't want to have any special cases where I manually assigned things. The solution had to be a general one for all possible initial random seeds, based only on the input genetics, and the different precisions for each respective taxonomy level.

In the end, the solution was really simple. Just a few lines of math and weights to balance everything.

One Taxonomy algorithm to sort and classify any and all set of randomly assigned compositions of genetics.

Emergence of new species

By Robin Dowling · 10 months ago

All species have a chance to evolve into new species. Not because there is a function built for evolving stories. This evolution happens instead by random mutations to the genetics of each individual organism being born.

What we see as species is simply a generalization of each organism's genes, a generalization shared by organisms whose genetics are close enough.

What mutations do, in terms of creating new species, is making the generalization of an organism's genetics no longer match any other species that has been previously identified.

The organism will of course also be different than others, simply because its genetics are different. The ways it is different is all based on what genetic markers that have been mutated, and by how much.

Again, species as a concept is only something we, as observers, apply as a label to to an organism to be able to find name it, and to have a set of expectations of or behavior. While to physics, we are all simply organisms with a vast array of genetic compositions.

This, is also how the evolution simulation works.

More on this in the next post.

Genetics

By Robin Dowling · 10 months ago

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.

What are species?

By Robin Dowling · 10 months ago

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.

But it felt rigid. And wrong.

More in the next post.

Not replicating existing animals

By Robin Dowling · a year ago

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.

So do I.

Object oriented programming in a functional era?

By Robin Dowling · a year ago

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.

More on that later.

Simulation granularity

By Robin Dowling · a year ago

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.

Philosophical questions

By Robin Dowling · a year ago

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.

All random

By Robin Dowling · a year ago

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.

Just like waves in the ocean.