Ah, CDF...
Microevolution happens, but no macroevolution, huh?
You say you're an engineer, so I'm going to assume that you have the ability to write a computer program, even if just a simple one in a simple language, like Python.
Let's play god and create life. Create a class which you will call Lifeform.
This class needs only the ability to replicate itself and to survive. Each of these have a certain probability of happening at a given time.
Both for survival and replication, it needs materials from the outside, it needs to feed itself.
Generate a "world" with many such lifeforms and add some sources of materials. For your simplicity, you can make this world in 2D and restrict everything to a square or circle.
These Lifeforms will also need some meta information, like their position, speed, ability for locomotion, protection, size, etc.... you're god, you dream up their necessities.
Since Lifeform material is easier to integrate into each other than the other material lying around in the world, Lifeforms will find it easier to extract materials from other Lifeforms. So, when they come together, there will be a certain probability that a Lifeforms eats another Lifeform. This probability will depend on the locomotion and protection meta info. Size should also play a role, as it's easier for a larger Lifeform to eat a smaller one.
As time goes by, those Lifeforms with materials to spare above their survival requirements, can replicate.
With each time such replication, you need to add a random "mutation". This mutation causes the meta information details to change.
Let the system run for a while and then peek inside and see how those details have changed from the ones you started with.
Of course, in your system only the metadata you allow to change will change, but do try to figure out by how much it changes and try to see if that could be considered a different species from what you began with.
Microevolution happens, but no macroevolution, huh?
You say you're an engineer, so I'm going to assume that you have the ability to write a computer program, even if just a simple one in a simple language, like Python.
Let's play god and create life. Create a class which you will call Lifeform.
This class needs only the ability to replicate itself and to survive. Each of these have a certain probability of happening at a given time.
Both for survival and replication, it needs materials from the outside, it needs to feed itself.
Generate a "world" with many such lifeforms and add some sources of materials. For your simplicity, you can make this world in 2D and restrict everything to a square or circle.
These Lifeforms will also need some meta information, like their position, speed, ability for locomotion, protection, size, etc.... you're god, you dream up their necessities.
Since Lifeform material is easier to integrate into each other than the other material lying around in the world, Lifeforms will find it easier to extract materials from other Lifeforms. So, when they come together, there will be a certain probability that a Lifeforms eats another Lifeform. This probability will depend on the locomotion and protection meta info. Size should also play a role, as it's easier for a larger Lifeform to eat a smaller one.
As time goes by, those Lifeforms with materials to spare above their survival requirements, can replicate.
With each time such replication, you need to add a random "mutation". This mutation causes the meta information details to change.
Let the system run for a while and then peek inside and see how those details have changed from the ones you started with.
Of course, in your system only the metadata you allow to change will change, but do try to figure out by how much it changes and try to see if that could be considered a different species from what you began with.