Stocking Algorithm

FishForums.net Pet of the Month
🐶 POTM Poll is Open! 🦎 Click here to Vote! 🐰

hinterglem

New Member
Joined
Jun 14, 2006
Messages
26
Reaction score
0
Hi all,

I'm looking for feedback on a stocking algorithm I've written. I have tested it out on a few different configurations, and I think it seems to offer a fairly accurate indication as to how well stocked or overstocked an aquarium is (based on my own experience of keeping various tropical freshwater aquatic creatures for the past 25 years, and having read quite a few articles on the subject).

Of course any algorithmic approach to stocking recommendations will have its limitations, not least of which is that there are quite a few exceptions to the rule (eg. certain types of fish needing more room than others of the same size), but I would appreciate any feedback on how accurate you think this set of rules is, and in particular if you think some part of it needs adjusting.

The idea of the algorithm is to take the volume of the tank, adjust it to take account of substrate, decor, plants, filtration, etc. and award the tank with a certain number of stocking credits. Stocking credits can then be 'spent' on fish of different sizes, with larger fish 'costing' more than smaller ones.

So we start with the volume of the tank in cm3.
  • Subtract an offset according to how much decor (substrate/rocks/bogwood) there is:
    • None: 0%
    • Light: 5%
    • Medium: 20%
    • Heavy: 40%
    • Major: 60%
  • Subtract an offset for non standard temperature ranges (a little too cold or a little too warm): 10%
  • Add or subtract an offset according to the size of the tank (on the basis that a larger tank is more stable than a smaller one, so gives you a bit more wiggle room):
    • More than 225000cm3 (60 US gallons): add 20%
    • More than 110000cm3 (30 US gallons): add 10%
    • Between 37500cm3 and 110000cm3 (10 to 30 US Gallons): 0%
    • Less than 37500cm3 (10 US gallons): subtract 10%
  • Add or subtract an offset based on water change schedule:
    • Partial daily: add 15%
    • Partial weekly: 0% (default)
    • Partial fortnightly: subtract 5%
    • Partial monthly: subtract 35%
    • Partial less often: subtract 55% (danger!)
  • Add or subtract an offset for live plants:
    • None: 0%
    • Some: add 2%
    • Average: add 5%
    • Lots: 0%
    • Jungle: subtract 5%
  • Add an offset for filtration:
    • Undergravel filter: 0%
    • Internal canister: add 35%
    • Extra internal canister (eg. 2 filters): add 50%
    • External: add 70%
    • Extra External (super duper): add 100%
  • For heavily planted aquaria with low filtration only, ensure the volume we now have is no more than the (surface area / 26) * 1500 (to allow enough gas exchange)
  • Divide the resulting volume in cm3 by 600 to achieve the number of stocking credits (this number, 600, was acheived by trial and error, but seems to me to be the most appropriate value (to yield a result that would represent approximately 2 credits for a 3 or 4cm fish).
  • If the aquarium is brackish, we will halve the number of stocking credits
  • If the aquarium is a young marine tank, we will quarter the number of credits
  • If the aquarium is a mature marine tank, we will halve the number of credits

Now for working out how many stocking credits a fish will cost:

  • Take the adult length of the fish in cm, and if it is:
    • A shrimp less than 2cm, multiply by 0.4
    • A shrimp 2cm or more, multiply by 0.5
    • A snail less than 3cm, multiply by 1
    • A snail 3cm or more, multiply by 2
    • A fish 4cm or less, multiply by 2
    • A fish 8cm or less, multiply by 3
    • A fish 15cm or less, multiply by 4
    • A fish 22cm or less, multiply by 5
    • A fish 30cm or less, multiply by 6
    • A fish more than 30cm, multiply by 7
    • An African Dwarf Frog, multiply by 3
    • An Afrcian Clawed Frog, multiply by 8
  • If the fish is wide-bodied (eg. fancy goldfish), double the value
  • If the fish is a scavenger/algae eater, subtract one third of the value
  • Finally, ensure the average length of the tank is at least 6 times the length of each fish, and the average width of the tank is at least 2 times the length of each fish.

Phew!

So for example, with a tropical fresh water tank:
  • 75 Litres (20 US gallons)
  • internal canister filter
  • medium decor
  • partial weekly water changes
  • lightly planted
...the algorithm would give you 131 stocking credits. With those credits, you could populate your tank with:
  • 6 x neon tetra (2.5 cm each)
  • 4 x panda cory (5 cm each)
  • 3 x platy (5 cm each)
  • 1 x Dwarf Gourami (6 cm)
...and that would cost 133 credits, giving you a stocking level of 102%.

Of course, I have written this algorithm as a computer program, but having checked with the mods, I'm not allowed to 'go there', even with a free app (which is fair enough), but I would be very interested to hear if anyone thinks any of these multipliers and offsets are wildly wrong, or if there is something critical I am missing. Thanks in advance!
 
Do you want real criticism of it, or are you just looking for superficial critiques? I don't want to post something that will unnecessarily hurt feelings or otherwise get someone upset...
 
Thanks for your reply - I am looking for any constructive feedback. I won't cry if you think I've made lots of glaring errors. On the other hand, if you're just going to say that it's impossible to calculate a stocking level using an algorithm, I already know that, this is just intended to provide a slightly more useful guide than just saying 1 inch per gallon.

I would rather receive the harshest criticism now, before I publish, than garner negative reviews afterwards, so please, fire at will!
 
[*]Subtract an offset according to how much decor (substrate/rocks/bogwood) there is:
  • None: 0%
  • Light: 5%
  • Medium: 20%
  • Heavy: 40%
  • Major: 60%

This is meaningless without actually defining what 'Light, Medium, etc.' mean. Not only that, but it completely ignores the decor requirements of the fish. Some fish need rock structures or heavily planted tanks to feel secure. And, in the case of some Rift Lake cichlids -- among those that need the rock structures -- you really shouldn't offset for major decorations because in some cases proper overstocking is needed so that the aggression that will be displayed will be spread among a wide number of fish instead of just a few.

[*]Subtract an offset for non standard temperature ranges (a little too cold or a little too warm): 10%

Again, without defining what 'too' is, this is meaningless.

[*]Add or subtract an offset according to the size of the tank (on the basis that a larger tank is more stable than a smaller one, so gives you a bit more wiggle room):
  • More than 225000cm3 (60 US gallons): add 20%
  • More than 110000cm3 (30 US gallons): add 10%
  • Between 37500cm3 and 110000cm3 (10 to 30 US Gallons): 0%
  • Less than 37500cm3 (10 US gallons): subtract 10%
[*]Add or subtract an offset based on water change schedule:
  • Partial daily: add 15%
  • Partial weekly: 0% (default)
  • Partial fortnightly: subtract 5%
  • Partial monthly: subtract 35%
  • Partial less often: subtract 55% (danger!)

At least this has defined the different ranges. So it is better than the previous ones. Though, I am curious what basis you have for these specific numbers?

[*]Add or subtract an offset for live plants:
  • None: 0%
  • Some: add 2%
  • Average: add 5%
  • Lots: 0%
  • Jungle: subtract 5%

No consideration given for types of plants at all. Also there is a significant difference between floating plants and submerged plants, how much light (and possibly it source), the spectrum of light, etc. Boiling 'plants' down to just a few percentage points grossly oversimplifies things. And, again, no definitions given for the descriptors 'Some, Average, etc.'

[*]Add an offset for filtration:
  • Undergravel filter: 0%
  • Internal canister: add 35%
  • Extra internal canister (eg. 2 filters): add 50%
  • External: add 70%
  • Extra External (super duper): add 100%

What basis exists for these scores?

[*]For heavily planted aquaria with low filtration only, ensure the volume we now have is no more than the (surface area / 26) * 1500 (to allow enough gas exchange)

What basis exists for this formula?

[*]Divide the resulting volume in cm3 by 600 to achieve the number of stocking credits (this number, 600, was acheived by trial and error, but seems to me to be the most appropriate value (to yield a result that would represent approximately 2 credits for a 3 or 4cm fish).

[*]If the aquarium is brackish, we will halve the number of stocking credits
[*]If the aquarium is a young marine tank, we will quarter the number of credits
[*]If the aquarium is a mature marine tank, we will halve the number of credits
[/list]

Now for working out how many stocking credits a fish will cost:

  • Take the adult length of the fish in cm, and if it is:
    • A shrimp less than 2cm, multiply by 0.4
    • A shrimp 2cm or more, multiply by 0.5
    • A snail less than 3cm, multiply by 1
    • A snail 3cm or more, multiply by 2
    • A fish 4cm or less, multiply by 2
    • A fish 8cm or less, multiply by 3
    • A fish 15cm or less, multiply by 4
    • A fish 22cm or less, multiply by 5
    • A fish 30cm or less, multiply by 6
    • A fish more than 30cm, multiply by 7
    • An African Dwarf Frog, multiply by 3
    • An Afrcian Clawed Frog, multiply by 8
  • If the fish is wide-bodied (eg. fancy goldfish), double the value
  • If the fish is a scavenger/algae eater, subtract one third of the value
  • Finally, ensure the average length of the tank is at least 6 times the length of each fish, and the average width of the tank is at least 2 times the length of each fish.

Phew!

So for example, with a tropical fresh water tank:
  • 75 Litres (20 US gallons)
  • internal canister filter
  • medium decor
  • partial weekly water changes
  • lightly planted
...the algorithm would give you 131 stocking credits. With those credits, you could populate your tank with:
  • 6 x neon tetra (2.5 cm each)
  • 4 x panda cory (5 cm each)
  • 3 x platy (5 cm each)
  • 1 x Dwarf Gourami (6 cm)
...and that would cost 133 credits, giving you a stocking level of 102%.

Of course, I have written this algorithm as a computer program, but having checked with the mods, I'm not allowed to 'go there', even with a free app (which is fair enough), but I would be very interested to hear if anyone thinks any of these multipliers and offsets are wildly wrong, or if there is something critical I am missing. Thanks in advance!

Etc. etc. etc.

In short, every single one of these makes gross oversimplification that only invites people to bypass actually spending a few minutes of their lives researching how to properly set up a tank and what inhabitants are compatible and what levels are appropriate.

There are far, far, far, far too many exceptions to any simplified set of rules due to the exceptional diversity of aquatic life out there that the simplifications become meaningless.

I love mathematical models as the next person. But, these simplifications rarely help; and I think they invite more problems than they actually try to fix. If it could all be boiled down to the simple math formula, I'm not sure why a forum even exists? Greater than 3.4 millions posts demonstrate why this hobby cannot be boiled down to just an algorithm -- at least not at the level of this post.
 
Thank you very much for your reply - I appreciate you taking the time to respond. I deliberately bared down my original post to the basics without giving much information about definitions or where I got my numbers from, in part because I didn't want an overly long post that people would not even bother reading. Judging by your response though, I suspect I did not give enough contextual information.

The purpose of this algorithm is to provide a rough guide to stocking levels. It is not meant to address the needs of the fish - all I am after is a percentage figure which gives a rough idea of whether a tank is understocked or overstocked (the user guide that goes with the app specifically mentions the fact that certain cichlid setups require overstocking, and also makes it clear that the app only provides a ballpark guide, and encourages further research and consultation with an expert). It is not meant to be relied on, and this is made clear in the context of the app.

Whilst I would wholeheartedly agree that there is no substitute for thorough research, sometimes you just want to get a general idea of what combinations could work, as a starting point. My goal is to provide something that is a little more effective than just saying "1 inch per gallon", but not so thorough as to require people to take very specific measurements and take into account every possible influencing factor.

You say that categorisation (eg. none, light, medium, heavy, major for decor) is meaningless without definition. I disagree - what we have there is a sliding scale of 5 sections. Most people are not going to literally measure the volume of their rocks and gravel, especially if they just want a rough idea of stocking capacity. For the sake of ease of use, I think a sliding scale like this has sufficient meaning that most people would not have a problem with selecting the most appropriate category, and to apply a reasonable offset to the volume. I could make it more granular, and say, double the number of categories, but we are only talking about a ballpark figure.

The non-standard temperature range thing deals with the normal range of temperatures for a tropical community or coldwater community tank, and is handled internally by the program based on the type of tank the user says they have and the temperature they enter.

The basis for my numbers is a combination of factors including experience and research. I don't think it is necessary or useful for me to provide you with a bibliography, and it would probably also break the forum rules for me to do so, as I got a lot of information from websites that could be seen as competitors of this one (see rule no. 5 of the TFF general rules). However, there was one particular article which went into some detail on the effects of filtration systems on stocking capacity 'rules of thumb', which heavily influenced the numbers I used for different types of filter.

I did not give consideration to the types of plants because I don't see that as having a particularly significant impact on the stocking capacity of the tank (hence the rather low values involved in the offsets there). I certainly haven't come across that as a major factor in any of the research I have done, however, if I am wrong on that I would welcome correction.

The formula (surface area / 26) * 1500 is based on the old rule of thumb that you should allow no more than 1cm of fish per 30 square cm of surface area. With most modern filters, there is lots of surface movement which negates the need for this restriction, but low filtration combined with large numbers of plants would still make it a valid consideration.

Personally, I think there is a place for 'rules of thumb' when planning an aquarium. I like the "1 inch of fish per gallon" rule a lot - it is a very helpful quick guide. If you are of the opinion that this rule is too over simplified to be of any use whatsoever, then of course my meagre enhancements to it will not be seen as useful either. I'm not really looking to get into a debate on that issue though, I was just asking whether I've made any glaring errors such that my algorithm becomes less useful than saying "1 inch per gallon" instead of more useful. If you don't think "1 inch per gallon" is useful at all, you probably can't make any suggestion for improvement without compromising your position, and I respect that.

Once again, I thank you for taking the time to respond, and if you can point me in the direction of any more information on how the type of plants would affect stocking capacity, I would love to learn more about that.
 
I think this is the best "logical" method yet that we have of estimating stocking, because although it has flaws, as has been pointed out, it takes a number of things into consideration that are frequently left out of other methods of stocking estimation. Compare it to the "1 inch per gallon" idea that STILL gets bandied about on the forum. This method HAS to be more accurate. Just because something is simplified does not equate with useless.
However, Bignose is failing to take into account that humans cannot ever know whether a tank is slightly over or understocked. We can't know a fish's opinions on its surroundings except by examining its behaviour. You can have a tank that one person on the forum screams is overstocked, and the fish in it will live their full lifespan, display no signs of stress and never get a disease, while another tank is deemed to be understocked and fish in it drop dead for no apparent reason every month. Furthermore, it's very apparent that what one person considers a light stocking, another derides as overstocking. And yet Bignose says we should let human opinion take precedent over a more logical method such as this.
Bignose fails to take into account that when he decides how many fish of what type to put in his tank, he is doing exactly the same thing as this algorithm, except he's doing it in his head and more or less guesstimating the figures.
 
I have a small query:

[*]If the fish is a scavenger/algae eater, subtract one third of the value

Could you be more specific? What do you deem to be a scavenger? Loaches, for example, will happily spend all day scavenging from the substrate. Do they qualify? Many Plecos are algae eaters. Do they qualify, despite their often massive bioload?

I've just had a go at using this with my community tank, and I have 33 credits left over. I reckon I can get away with adding a touch more than that, but I wouldn't say it is far off at all. I'm quite impressed, actually. I think it is clear that this needs to be refined but I think it's a commendable effort on an arguably impossible task.
 
Thank you very much for the additional feedback.

I have a small query:

[*]If the fish is a scavenger/algae eater, subtract one third of the value

Could you be more specific? What do you deem to be a scavenger? Loaches, for example, will happily spend all day scavenging from the substrate. Do they qualify? Many Plecos are algae eaters. Do they qualify, despite their often massive bioload?

Initially I had this down as just 'algae eaters', but in my experience, algae eaters will also eat other scraps, so I changed the description to include scavengers. The theory I was working from was that a scavenger is performing a cleanup operation - reducing the amount of uneaten food that is left to rot, and that this would somewhat offset the bio-load of their own waste. I may have been too generous in saying that a scavenger's load should be reduced to two thirds of what a non-scavenger of the same size would be. Then again, an Oto for example has a very light bio load. I will give that one a bit more thought, thanks for raising it!

I think it is clear that this needs to be refined but I think it's a commendable effort on an arguably impossible task.
Thank you, if you have any suggestions on what could be done to refine it further, I'm all ears. As I said, I will re-think the scavenger thing, and might tweak the numbers on that or even split it into two separate settings (although I don't want to over complicate it). I am also thinking of changing the decor offset (gravel/rocks) to allow the user to enter a percentage themselves rather than just selecting a category of light/medium/heavy etc. I wouldn't have thought of either of those points without the feedback on here (including from my esteemed critic, Bignose!), so thank you all once again, I really appreciate it.
 
Greater than 3.4 millions posts demonstrate why this hobby cannot be boiled down to just an algorithm -- at least not at the level of this post.

Bignose fails to take into account that when he decides how many fish of what type to put in his tank, he is doing exactly the same thing as this algorithm, except he's doing it in his head and more or less guesstimating the figures.

Bugdozer, my exact quote is that the algorithm that I am doing in my head is in way being replicated by the algorithm as presented by the OP. That the OP's algorithm is doing such a poor replication of the algorithm I'd do in my head, that it is my opinion, that it would get things very, very wrong in certain cases. That is what I meant by "at the level of this post."

I do agree that ultimately it is all an algorithm, but the OP in no way gets anywhere close to replicating knowledge and experience that is in this hobby. And representing in any way that it does, again in my opinion, is a disservice. Or, put another way, a much, much more complex algorithm is needed.
 
Part of the problem is that it's impossible to define overstocking.
That sounds like a stupid thing to say, but ponder it a moment. Let's cram too many fish into a tank so anyone would agree it's overstocked. Can the filter cope with the bioload of the fish or are ammonia levels climbing? If they are going up, then yes, it's definitely overstocked - but the hey presto, let's put a more powerful filter on there that is able to cope with the level of waste. Now the water is lovely, but is the tank still overstocked?
Well, how much space does each fish have? How much space does each fish WANT? How can we tell? Can we ask the fish? All we can do is observe their behaviour and hope we see some sign that we can't be sure we are interpreting correctly.
Hmm, that fish looks stressed. Is it because there are too many tankmates? Or is it because it doesn't like the lighting, or feels unwell because of what it ate? We can only guess. Was it wild caught or raised in captivity? Will fish of the same species raised in different environments be happy in identical tanks? Or will fish raised in captivity be happier in a more crowded tank than wild ones?
My point is that what is being bandied about as "knowledge and experience" is merely the tip of a pyramid founded on a great deal of guesswork and supposition. As humans, we make assumptions about what fish want. We FREQUENTLY get this wrong, as the many threads about inexplicable deaths and odd behaviour bear testament to.
 
Part of the problem is that it's impossible to define overstocking.
That sounds like a stupid thing to say, but ponder it a moment. Let's cram too many fish into a tank so anyone would agree it's overstocked. Can the filter cope with the bioload of the fish or are ammonia levels climbing? If they are going up, then yes, it's definitely overstocked - but the hey presto, let's put a more powerful filter on there that is able to cope with the level of waste. Now the water is lovely, but is the tank still overstocked?
Well, how much space does each fish have? How much space does each fish WANT? How can we tell? Can we ask the fish? All we can do is observe their behaviour and hope we see some sign that we can't be sure we are interpreting correctly.
Hmm, that fish looks stressed. Is it because there are too many tankmates? Or is it because it doesn't like the lighting, or feels unwell because of what it ate? We can only guess. Was it wild caught or raised in captivity? Will fish of the same species raised in different environments be happy in identical tanks? Or will fish raised in captivity be happier in a more crowded tank than wild ones?
My point is that what is being bandied about as "knowledge and experience" is merely the tip of a pyramid founded on a great deal of guesswork and supposition. As humans, we make assumptions about what fish want. We FREQUENTLY get this wrong, as the many threads about inexplicable deaths and odd behaviour bear testament to.

agree completely. and hence why an algorithm -- to the level of the OP -- is insufficient, and I think possibly could do a great deal of harm. Specifically,in that the algorithm will say a stocking is "okay" when it really is quite terrible. From what I see per the listing in the OP, the chances of this are pretty significant.
 
What I find as a shortcoming of the inch/gal rule, and most other stocking calculations, is they don't take into account:

1) the behaviour of the fish. Fast swimming active fish need more room, and less other fish around then than slower, more sedate fish

2) the fact that the inch/gal rule doesn't take into account that a community tank has a spread of fish from top to bottom. Usually, a person works out their tank is 20 gals, a tetra gets to 2 inches, so that's 10 adult fish, and that is it. But it doesn't provide for the fact that if you add a few small catfish at the bottom, it's not going to "overstock" you in pure numbers terms.

I like the OP's idea.
Yes, it could lead to problems if someone relied on it solely. But as a rough guide, it could be useful.
 
Thanks Squidward - that's a good point about fish behaviour, an additional offset could be added depending on whether the fish is a fast/medium/slow swimmer (yes, I know it's an over generalisation, but it is better than nothing).
 
I like this rule, it says my planned aquarium will be stocked to 93% of capacity!!! Room to squeeze in another couple of corys ;)

I agree that most of the points are open to oppinion and is far from scientific but I think its a great place to start!!
 

Most reactions

trending

Staff online

Members online

Back
Top