Boy, that escalated quickly… I mean, that really got out of hand fast.

Ron Burgandy

If you’ve ever kept an aquarium, you’ve probably worried about algae. If you’ve maintained a planted aquarium with powerful lighting, doubly so. The neat, sort of counter-intuitive thing, is that it is really quite possible to grow plants successfully under high-light conditions without running up against constant algae problems.

There are lots of ways to hash out algae control, and it’s debated all over the internet. I’ve read a lot about how plants may secrete some chemical to inhibit their growth; there are any number of anti-algae formulas you can buy to add to your tank; it’s said that the ratio or absence/presence of certain nutrients in the tank may favor algae growth (when it comes to phosphates, it seems the community has at different times phosphorous causes or inhibits growth). So it’s obviously confusing, and there is probably some truth in all of these claims.

For myself, I once tried to chase those solutions, but now I mostly concentrate on keeping my tank algae free by keeping my tank algae free.

That doesn’t make sense? Let me explain.

I needed some help with the details, but I remembered studying some population models and I’m always looking for an excuse to go all Runga-Kutta on a time-dependent ODE. Instead of using one of their standard models, I made one of my own! I wanted exponential growth, but instead of being bounded by resources, I wanted to account for the five otocincluses (otocincli?) in my tank. They’re known to be pretty good algae eaters; but their consumption should be relatively independent of the amount of algae in the tank; they’re small fish and can only eat so much!

Now, of course, there are a number of simplifications to my model, including that one. I’m going to lump all types of algae into a single category, and I’m going to modify my “devouring” constant, *D*, slightly, to make sure the fish aren’t eating more algae than exists in the tank…

where* r* is the rate of growth of the algae, and *N* is the population of the algae (say, number of colonies). Now, I’m going to use made-up numbers here (for instance, the time doesn’t have specific units), but they’re not important because I’m just trying to prove a point.

I used 4th order Runga-Kutta to solve this from *t=0* to *1*, using my favorite (free) Matlab emulator, Octave. For the sake of argument, I set *r=1*, *D=1010*, *k=0.01*, and I proceeded to examine different initial levels of algae. Hopefully the plot below helps clarify my earlier statement:

I hope it is clear that at the end of the time, the state of the algae population has a lot to do with its initial size. Assuming a more or less constant “devouring” rate, the algae population will flourish or die out depending on the size/number of established colonies. And that’s why keeping the tank clean is the best way to have a clean tank…