Are you, in fact, a pregnant lady who lives in the apartment next door to Superdeath's parents? - Commodore

Create an account  

 
Pop Growth Info

I would like to do an analysis of growing colonists vs letting them develop naturally. But first, I need to know the pop growth equations. Charis posted a thread over at CivFanatics that listed:

Current Growth = maxGrowth*((maxPop-currentPop)/maxPop)
Pop Increase = (Current Growth/100)*currentPop

Two questions:
1) How is maxGrowth calculated?
2) Did I get the formulas right? :rolleyes:

Two production questions:
1) Where and how is the income from trade applied to your production? Is it split evenly among planets? Split but weighted by size? Subtracted from spending costs?
2) Where are the Spending costs (ship and base maintanance, spying, security) taken out? I know the percentages add, and that this percentage is then taken off each world, but is that done before or after trade income is factored?

Thanks in advance for answers
-dathon
"A fanatic is one who can't change his mind and won't change the subject."
"It is not the fall that kills you. it's the sudden stop at the end." -- D. Adams
"Don't you hate it when your boogers freeze?" -- Calvin
"Very funny, Scotty, now beam back my clothes!!"
Reply

1) Weighted by size
2) After trade is factored
3) I'm not entirely convinced those formulas are correct. I've been running some tests myself, tracking natural growth on worlds of different sizes. I'll let you know if I learn anything new.

Also, it would be nice to find out just how the fleet maintenance is calculated.
Reply

When a planet is polluted so that maxPop is less than the maximum, does it grow faster?

For example, if I have 20 pop on a size 100 planet, and pollute it to a 40 max, will it grow faster than if it wasn't polluted?
Reply

Hi Mike,

Welcome to Realms Beyond Orion!

The short answer is no. Population 20 on a size 40 planet grows at the same rate or slower than population 20 on any larger size planet.

The medium answer is the growth rate parabola (see Charis - population growth and optimal transport) is always (or at least equal) higher for all population values for a larger planet.

The long answer is partially addressed in a largish post I about to make - in passing I quote growth numbers (I call them "c") for low populations on size 10, 15 and 100 planets. These "c" numbers aren't exactly growth rates, but they are close. For any size population "c" on a larger planet is greater than or equal to "c" on a smaller planet.

I hope this is more information than you need! Stick to the short answer above. smile

Cheers,
Factoid.
Reply

Hi all,

Population Growth

(A Factoid Copious Spare Time ™ Production.)


Disclaimer

This was mostly written back in September, but I find it really hard to write it well enough that it is comprehensible. I know what I know (and what I don't know) but explaining it is another matter. Some supporting details are omitted for clarity, others 'cos I haven't checked and verified everything. tongue

The fixed width tables below will suck if you have a light background colour set. They aren't very nice in any case.


Introduction

I understand most but certainly not all of how population growth works in Moo1. I have done this by poking around in save files, altering values and seeing what happens to population in the following years. What we really need is some gurus who have Phrozen Keep level understanding of the executable code. Gurus certainly would have been around when Moo1 came out, but I can't find any useful information anywhere even on save file format. All I know I have found out by looking at what the save file editors tell you, and then by hex-editing and Perl scripting beyond that.

I don't understand enough to be able to build a *general* model of population growth for any arbitrary planet size, so I can't build a generalised population-growth spreadsheet.


Definitions

Excess Eco spending is spending on the planetary ecology slider above that needed for waste cleanup and terraforming.

Growth rate - start an *average* game as the Sakkras, so the starting population is 50 (million). At the end of the first year Sssla's population has climbed by 10% to 55. This is what I call a 10% growth rate (= 5/50), and also 2x normal growth rate since Sakkras are said to grow twice as fast as normal races. The Silicoids grow at 0.5x normal rate on all planets (2.5%), and other races grow at 1.0x normal rate (5%).

It might be more sensible to call Sssla's growth from 50 to 55 (on a size 100 planet) a 5% (= 5/100) absolute growth rate but I haven't done this below, you are warned.

I call the visible current population (in millions) of a planet "p". Below I also use "x", a hidden tenths-of-millions variable for each planet. There is also a natural population increase (in tenths of millions) I arbitrarily call "c". "c" on the average Sssla above would be 50 (in tenths of millions, = 5.0 million).

A normal planet is a planet that is not hostile, fertile or Gaia, population grows normally.

A normal race is every race except the Sakkras and Silicoids, population grows normally.


Basics

Charis's posting (Charis - population growth and optimal transport) presents the idealised growth model, which I call "Charis's model" or the "ideal model" below (aren't these two terms always equivalent?) tongue I strongly recommend you look at the pretty picture there - a parabola showing maximum population growth for half-full planets, decreasing to zero for full and empty planets.

Start a game with the Humans and save the game in 2300 so you can reload if needed. Settle a normal (non-fertile, non-hostile (duh)) planet but don't transport any more people from Sol to this new planet. Leave the planetary sliders set to 100% Fac and watch closely how the population grows. A Human, normal, size 100 planet (woohoo!) *always* grows following the pattern

2 (first year of settlement, say 2303 - planet naming screen says 2302)
2
2
3
4
4
4
6
6
7
9
10
...

This pattern is irregular, and also growing too fast for the ideal model. The irregularity is too much for integer truncation or roundoff to explain. This rate of growth is also too fast for the ideal model.

I call the visible current population "p". There is a hidden variable "x" for each planet which acts as a tenths-of-millions counter, very similar to the corresponding tenths-of-factories counter. When you add this detail in the pattern becomes

p.x
2.0 (first year)
2.2
2.6
3.4
4.0
4.3
4.9
6.1
6.7
7.9
9.4
10.6
...

This is still irregular. After some head-scratching I came up with the following algorithm. Double the hidden variable every year and add an amount that depends on current planet population, race, planet fertility and planet size - I think of this as "2x + c" where x is the hidden variable, c the added factor. Take any tens-overflow from x and add to visible millions of population.

Partial table of "c" for normal races (non-Sakkra, non-Silicoid) on normal planet (not fertile, Gaia or hostile) for planet size 100 -


p____c
1____1
2____2
3____2
4____3
5____4
6____5
7____6
8____7
9____8
10___9
11___9


The pattern with workings becomes


p.x____work_____new p___new x
2.0____2x+2=2___(2)_____2
2.2____2x+2=6___(2)_____6
2.6____2x+2=14__p=p+1___4
3.4____2x+2=10__p=p+1___0
4.0____2x+3=3___(4)_____3
4.3____2x+3=9___(4)_____9
4.9____2x+3=21__p=p+2___1
6.1____2x+5=7___(6)_____7
6.7____2x+5=19__p=p+1___9
7.9____2x+6=24__p=p+2___4
9.4____2x+8=16__p=p+1___6
10.6___2x+9
...



If population grew by adding "c" alone (without the "2x" effect) it would be very close to the ideal model, population would grow VERY slowly at almost-empty and almost-full, and Moo1 would be a more predictable, duller game. smile

The "2x" effect matters much less when a planet is half full, or if you are force-growing population. It can produce counter-intuitive results. You can sometimes make a planet grow to full *slower* by transporting one more population to it. You can sometimes make an almost-full planet grow to full slower by turning on a single tick of excess ECO expenditure. Adding more than a bit of population or excess Eco spending doesn't have this problem (phew!) but may do less than you expect. It may also do more than you expect.

The "2x" effect is *very* roughly equivalent to growing population by an extra 0.3 million per year.


(Diversion) - Growing population by ECO expenditure

Excess ecology expenditure (after waste cleanup and terraforming) also contributes to "x". If eco spending contributes enough to make the new x go from (say) 9 to 10 this counts as "+1 POP" on the slider. A tiny trickle of excess eco spending has a much smaller effect than the "2x" side of things.

There is no such thing as a plain "ecology counter", which accumulates excess Eco spending until there is enough for a +1 pop (that is, the Eco slider goes from Waste to +1 pop with nothing between). In the example above, let the population grow to 4.3 (next year 4.9) and 2 BC put to eco spending will add 1 to x, making next year's population 5.0 instead of 4.9, and this will produce "+1 POP" on the Eco slider.

Excess ECO is also subject to truncation effects. Humans start off needing to spend 20 BC to grow population by one million, or 2 BC to add 1 to "x". 1 BC of excess Eco produces no result, but still reads as "Clean", the same as if it was having some effect. 3,5,7... BC produce the same results as 2,4,6... BC respectively. This really, really matters for Silicoids, who need 4 BC to get any effect at all. Putting a single click to ECO with the Silicoids to help a new planet (that you don't care to send transports to) grow population grow doesn't work at all well. I used to do this all the time. frown

My current Silicoid thinking is have a largish planet or two (poor planets are ideal) dedicated to growing population and transporting to other planets, who don't bother with any excess ECO expenditure. This is probably what most people do anyway, I just hadn't realised how poorly *trickling* excess ECO to lots of planets worked.

Late game, with cloning and highly productive planets, I frequently have all my planets force-growing population as my tidal wave of gropos overrun the remaining enemy planets. This proves that I wait too long before going on the offensive. tongue


Ugly details, and stuff I don't understand

The Moo1 save file is thankfully pretty simple, mostly fixed format. Numbers are mostly stored as two-byte signed integers. The save file starts off with structures for each planet (room is allocated for 108 planets, even if the galaxy isn't huge). Each planet record is 0xb8 (=184) bytes. The current population "p" is at offset 0x3a. The hidden variable is at offset 0x70. Many more details of what I know or conjecture available on request.

What I am missing is a general way of working out the "c" numbers. I have produced tables for size 100 planets, but only by grinding through peeking/changing the "x" variable for various combinations of race, planet fertility/hostility, and current population, then seeing what the population and "x" are the following year. I have semi-automated this using Perl, but even so..

This is the point where a code guru would explain What They Were Thinking when they wrote their algorithm to produce the "c" values, 'cos I sure don't know. frown

The values of "c" do not produce an absolutely symmetric parabola. The actual implementation of population growth is.. interesting. I can only guess that it was written by someone who didn't understand the meaning of the word "interpolation." On a size 300 world population "c" at multiples of 3 (3,6,9...150,153,156...294,297,300) follows exactly Charis' model, but population growth at 298 is higher than at 297, and 299 higher again. The result roughly matches Charis' parabola until mid-point, then has increasing "sawtooths" above the parabola after that.

The value of "c" is truncated, so Silicoids lose out. Sakkras on (say) a hostile size 60 planet do NOT grow at exactly the same rate as Humans on a size 60 non-hostile planet.

I believe Silicoids invading a size 100 planet and ending up with exactly 99 population will NEVER grow to size 100 ("c" is zero). "c" is also zero for a population of 1, but there is a special case "kick-start" for low population and c=0, 1.0 -> 1.1 and then the normal c=0 behaviour follows (-> 1.2 -> 1.4 -> 1.8 -> 2.6). I may be mistaken on some of the "c=0*" values below, my earlier and later notes are contradictory.

If you want some simple examples to check, Table 3 below has "c" values for size 10 and 15 planets. If you have cared enough to follow the gobbledygook above you should be able to grind through 2.0 -> 2.1 -> 2.3 -> 2.7 -> 3.5 etc for yourself.

I believe x=0 when you successfully invade a planet, but haven't checked this. I believe population drops (like being bombed or death spored) don't affect the "x" variable.


Summary
Carry on as you were, intuition is fine. Population grows slowly on an almost-empty or almost-full planet, fastest at half-full.

Transporting a fair amount of population to a new planet is a Good Thing. Topping up an almost-full planet to full is OK (but not better than OK in my opinion). I mainly care about topping up my home world and rich/artifact planets, maybe front-line hostile planets too.

Don't bother trying a single click of ECO expenditure with Silicoids in the early game.

An algorithm to accurately predict "c" can probably only come from code reading.


Appendix: Tables

Table 1 - growth rates

Ecology_________Sakkra__________Other___________Silicoid
Hostile_________1.0x (5%)_______0.5x (2.5%)_____0.5x (2.5%)
Normal__________2.0x (10%)______1.0x (5%)_______0.5x (2.5%)
Fertile_________3.0x (15%)______1.5x (7.5%)_____0.5x (2.5%)
Gaia____________4.0x (20%)______2.0x (10%)______0.5x (2.5%)


Table 2 - cloning costs

Cloning cost/+1 pop_____Sakkra__Other___Silicoid
Start (TL 1)____________10 BC___20 BC*__40 BC*
Cloning (TL 21)__________5 BC___10 BC___20 BC*
Adv.Cloning (TL 42)______2.5 BC__5 BC___10 BC



Table 3 - small planet "c" values

Planet size 10
race____other___other[***table]
eco_____normal__hostile
pop_____grow 1__grow 0.5
1_______1_______0*
2_______1_______1
3_______2_______1
4_______2_______1
5_______2_______1
6_______2_______1
7_______2_______1
8_______1_______1
9_______1_______1
10______0_______0

Planet size 15
race____other___other
eco_____normal__hostile
pop_____grow 1__grow 0.5
1_______1_______0*
2_______1_______1
3_______2_______1
4_______3_______1
5_______3_______1
6_______3_______1
7_______3_______1
8_______3_______1
9_______3_______1
10______3_______1
11______3_______1
12______2_______1
13______1_______1
14______1_______1
15______0_______0


* Successfully invaded planet with 1 gropo surviving? Grow to 1.1 in first year then treat as c=0.

Sakkras grow at roughly the same rate on hostile planets that other races grow on normal planets of the same size, but this isn't exact for larger planet sizes.
Reply

Wow, lots of info there. I just go with gut feel and the 1/3 rule, that seems to work for me. smile
Reply

Looks very impressive, I'll have to read carefully later. I don't know if you already covered this, but I found out that a small planet at x% of max pop will grow by a larger percentage than a large planet at x% of max pop.
Reply

Catwalk Wrote:Looks very impressive, I'll have to read carefully later. I don't know if you already covered this, but I found out that a small planet at x% of max pop will grow by a larger percentage than a large planet at x% of max pop.

Hi Catwalk,

The whole subject is complicated, and I haven't explained it well. I have a lot of intuitions about population growth, I'll list the ones that come to mind, including ones I am sure everyone here knows.

I tend to use the phrase "growth rate" with varying meanings. Apologies, be wary. Some times I mean "overall" growth, what you see in-game. Other times I mean "natural population" growth, a component of overall growth, defined in the list below.

Population grows slowly on almost-empty and almost-full planets, fastest at half-full. There is no need to be rigid about keeping a feeder planet at EXACTLY half full. Absolute population growth at 1/4 and 3/4 full is roughly 3/4 as fast as at 1/2 full, so there is a broad "sweet spot".

Transporting some population to a newly-colonised world is a HUGE win. I tend to transport proportionally more to rich/artifact worlds (big payoff) and hostile worlds (slow pop growth). Zed-F above quotes the rule of thumb getting new planets to (ideally, at least) 1/3 full. I'm not rigid about that either, a backwater planet away from the action might get less, maybe only top up to 20% if I have other planets that need transports.

Apart from population growth the HUGE win in transporting to a new colony is in building those first factories, which then build other factories and so on, in an exponential feedback. So more population really is better...

When I settle (say) a size 10 Radiated planet I tend to transport enough population to fill it up to 10, since it will take such a long time to terraform and build factories anyway. I may well concentrate on terrafoming to increase planet size before starting building factories, and keep topping up the population to full or almost-full as the planet size increases.

I only care about the details of population growth in the early game. In the late game who cares about another one or two million on one planet?

Population growth is not the same thing as economic growth (err, except when there are no factories). Efficient economic growth is a much wider ranging topic than efficient population growth (factories vs current population vs excess eco vs research vs race vs planet location vs ...).

ABSOLUTE population growth (in millions, not percentages) for a current population X (say 20 million) is always (at least equal, or) higher on a larger planet, all other things being equal. So cleaning up waste and doing terraforming+10 and such things never slows population growth. It may slow overall economic growth, relative to building factories instead.

RELATIVE population growth (in percentages, not millions) is often higher for smaller planets, as you say. I attribute this mostly to the "2x" effect, as below.

Getting the "free" natural population growth across a lot of (almost-full) planets will grow total population faster than (say) having only one planet half-full, and the rest of the planets full. But this is really an economic trade-off, as it costs money to transport population from planet to planet and that population is not producing (or growing) while it is in transit.

Overall population growth is a composite function of
  • Race - Sakkra, Silicoid, Other.
  • Planet ecology - Gaia(2x), Fertile(1.5x),Normal(1x),Hostile(0.5x).
    Silicoids always grow as if they were on a hostile planet, even on Gaias.
    Sakkras grow twice as fast as other races, e.g. 4x on Gaias, 1x on hostile.
  • Natural population growth - based on current and current maximum population.
    A half-full size 100 planet and a half-full size 50 planet will have the same PROPORTIONAL natural population growth.
    A half-full size 100 planet will grow twice the ABSOLUTE population that a half-full size 50 planet grows (for the same race and ecology on both planets).
  • Excess eco - forced population growth (limited to max of 1/4 current pop)
  • "2x" effect - small and irregular, dominates natural population growth on almost-empty and almost-full planets, much less significant when planet is half-full.
    "2x" effect helps Silicoids a lot more RELATIVELY than it helps Sakkras, since Sakkras get more natural population growth. It also helps small hostile planets a lot more than it helps large normal/fertile planets.

There are TRUNCATION effects (rounding down) that affect hostile planets and especially the Silicoids. These SLOW natural population growth slightly, eg Silicoids may get *less* than half as much natural population growth as other races on normal planets. The planet size 15 tables give Sakkras on hostile planets c=3 where all other races get c=1.

There are "ANTI-INTERPOLATION" effects especially for very large planets and Sakkras, where natural population growth is HIGHER than you expect.

The "2x" effect that gives irregular growth (2 -> 2-> 2-> 3 -> 4-> 4 -> 6 -> 6 etc) makes overall population growth at almost-empty and almost-full MUCH HIGHER than you might otherwise expect.

The "2x" effect can produce some small-scale counter-intuitive effects. Transporting one more population to a planet *can* make it grow to full more slowly than if you hadn't bothered. Most of the time this isn't so, but sometimes... There is a similar effect with turning on just one tick of excess Eco. Worse, truncation effect on small amounts of excess eco may mean your early-game Silicoids are thowing away 3 BC per year for no return whatsoever.

This is a more anecdotal view of what I tried to say before, hope it helps.

Cheers,
Factoid.
Reply

Quote: half-full size 100 planet and a half-full size 50 planet will have the same PROPORTIONAL natural population growth.
A half-full size 100 planet will grow twice the ABSOLUTE population that a half-full size 50 planet grows (for the same race and ecology on both planets).
I'm not entirely convinced of this. I ran a test with two planets, one at pop 25 max and one at pop 250 max, both starting at 20% of max capacity. The small one maxed out much sooner than the large one... Other than this, your reasoning seems to be sound, especially regarding the weird intervals.
Reply

Catwalk Wrote:I'm not entirely convinced of this. I ran a test with two planets, one at pop 25 max and one at pop 250 max, both starting at 20% of max capacity. The small one maxed out much sooner than the large one... Other than this, your reasoning seems to be sound, especially regarding the weird intervals.

Hi again,

This is getting into the definition stuff. I said "natural population growth" and not "overall population growth". Apologies for the confusion I am creating.

Overall population growth (in my definition) has a component from natural growth which is absolutely proportional to planet size. The other component is the "2x" stuff, which is not correlated to population size. It isn't really a constant either, but the overall effect is as you say, small planets fill up faster than large planets from the same proportional starting point.

So yes, I agree with you, I'm just doing it in a very confusing way. frown

Let me share some more confusion. smile

The end result is still that I can't build a generalised population growth model. I can for planet size 100, or for any other planet size / ecology / race *by inspection*, but things get crossed up by terraforming, or by trickles of excess eco when the first colony ship lands, or when you have to adjust eco sliders to transport colonists.

I can probably build an OK-ish approximation (smooth, continuous) of the irregular 2x bits. I spent a LOT of time doing least squares fits between a predicted model of population growth (with several factors that could be tweaked) and observed (real) population growth.

In principal if you track population on a planet each year for several years you should be able to work out what the "x" tenths-of-millions counter currently is. Then factory waste builds up a bit more, another half-click of ECO spending is allocated, and a bit of excess eco spending is added to "x", and you no longer have exact information.

The "2x" folding is classical chaos theory stuff. Combine with any perturbations from excess eco or signing a big trade agreement (meaning proportionally more eco spending is needed locally to clean up waste) and it is very very hard to have exact information in-game (as opposed to inspecting save files).

Cheers,
Factoid.
Reply



Forum Jump: