Hi Nick, this is interesting to read. A few thoughts, sorry this came out really long unintentionally.
I really like the idea of breaking things down into Life Activities, that makes a lot of sense for working out how one change might impact a creature in different ways (like more armour improving combat but slowing grazing or something).
On the question of continuous Differential Equations and using tools from calculus vs Difference Equations (having discrete update steps as you are talking about) is that in terms of complexity they are much the same. Whenever you computer model a continuous Differential Equation you have to discretise first and then work with the corresponding Difference Equation. So the latter aren’t really any less complicated (though going with discrete time steps is the best way to go for us I agree),
In general with both these types of equations there is a tradeoff between complexity (and therefore accurately modelling the world if that is what you are trying to do) and analysis (being able to understand what the model will do) and control (being able to change the parameters of the model so that it gives you the behaviour you want). The more complex things become the harder it is to understand what is happening and the harder it is to control it.
Ultimately the thing we are giving the player is a control problem, which is: by changing your species blueprint (and other parameters like behaviour) can you get your population to a high level relative to the other species.
So if we use a highly complex model then the issue is that it will have chaotic dynamics and the player won’t be able to control it very easily. If you look at the Lotka-Volterra equations which are a very simple predator prey model you can see (just from looking at the graphs) that there are oscillations in the solutions. The model doesn’t converge to an equilibrium, it keeps changing over time.
This makes control quite a difficult problem. For example I could say “your pop is 25” which is the high point of a cycle and then you make some positive change to your creature and I say “your pop is now 13” which is the low point of a cycle, so you undo the change and I tell you “your pop is now 18” which then feels like it makes no sense and so you do no changes and I say “your pop is now 23”. It feels very random.
You can do things like averaging but once the dynamics become sufficiently chaotic that won’t help as there will be oscillations of many different frequencies.
In general your model has been mostly linear (which will converge to a stable equilibrium) however when you introduce this “Predator Population Density * Prey Population Density” you are introducing a non-linearity, which is going to start to lead you down the road to complicated, non-linear dynamics such as oscillations and chaos (which is in itself a really cool subject and a great thing to explore). Basically when prey is high predators will surge but then there will be too many predators so prey will collapse causing predators to collapse causing prey to surge etc.
So if you’d like to carry on with what you are doing feel free, I just kind of wanted to offer that as a warning that my guess about what will happen is as you introduce more non-linearities you will get more and more complex dynamics come out and it will become uncontrollable. However it might be a great learning experience to try it out for yourself and see what happens as you go further. I may also be completely wrong (that happens a lot) though differential equations was the subject of my PhD so I know something about them.
My most recent attempt at an auto-evo algorithm is here the basic idea is to have just an energy balance model. So for what you are doing it would be a bit like cutting everything out except just computing “at what level of population does food consumption = food generation or production” as that’s generally the equilibrium you are aiming for anyway.
The reason I think this might work well is it’s much more controllable, for example if you add another chloroplast then you get a little more light energy compared with the other species and that increases your population, if you take it off (and all other species stay the same) then the populations will all revert to what they were before you put it on, which makes it possible for the player to feel like they are controlling what is happening.
On top of this it will react to the patch conditions (which I think is the main goal), so patches with no sunlight will lose all their chloroplasts.
I am very open to further discussions and changes / switching to a new algorithm / merging ideas or anything really. Making the auto-evo system is really hard because firstly it’s a hard problem and secondly it’s very core to everyone’s expectations of how the game will work so there are a lot of different opinions from a lot of directions on whatever is produced (which is good I guess, it’s nice people care about the game )
And yeah don’t let me put you off, I am enjoying reading what you are doing so if you continue to write it I’ll continue to read.