sizespectrum / mizer

Multi-species size-based ecological modelling in R
https://sizespectrum.org/mizer
38 stars 43 forks source link

Iterative method for finding steady state #275

Closed gustavdelius closed 1 year ago

gustavdelius commented 1 year ago

The idea is to use steadySingleSpecies() repeatedly, each time only moving part-way to the new solution. Perhaps the size of the change should be limited by a criterion on the relative change in the ratio between growth and death rate. Perhaps that should not be allowed to change by more than a certain factor either way in each iteration. How large that factor can be allowed to be without introducing instabilities in the procedure will require experimentation and perhaps a mathematical investigation. But with a good choice this procedure could be much faster than the current steady(), especially if there are slow-growing species, and it could work also if the steady state is dynamically unstable.

gustavdelius commented 1 year ago

Experiments unfortunately show that this method is not viable. The proposed iterative scheme has a Jacobian with eigenvalues with a real part larger than 1. This divergence of the scheme can be understood as follows: consider a perturbation away from the steady state that decreases the abundance of some prey. This will lead to a reduced growth rate of the corresponding predators and thus and thus an increase in their number. In the next iteration the mortality from these predators will lead to a higher mortality on the prey and thus decrease their numbers further, and so on.