As a French person I feel like it's my duty to explain strikes to you. - AdrienIer

Create an account  

 
Optimal Transport Size

Hi

One day I was wandering around Civfanatics forum and found this thread
http://forums.civfanatics.com/showthread...adid=84644

It is interesting, as far as I understand Charis is providing a formula for calculating the best population transfer in MOO, then I though “I won’t make all those calculations each time I want to send colonists”

This is Charis Formula: d = (m*P - M*p) / (M+m)

This is the same formula translated in a way I can understand
Quote:Result = (FirstPlanetCurrentPop * SecondPlanetMaxPop - SecondPlanetCurrentPop * FirstPlanetMaxPop) / (FirstPlanetMaxPop + SecondPlanetMaxPop)
Then I remembered that in one of his reports, Sirian suggested sending one third of your colonists to a new planet, and in some of those reports, the AI sending half of its colonists to a planet, regardless of capacity of the planet

Which one is the most effective?

I am an amateur programmer so I’ve made one small software to make use of Charis Formula, plus the other two so we can test and see if there is a major difference between the three

It is attached here along with the source code, you will need net Framework 2 to run it as far as I know

I believe the use is intuitive


[Image: screenshot.png]


I am really interested is in the test results, will someone make the comparisons?

If anyone wants to modify it, enhance, fix stuff, etc, please do it, the source is included in the zip file

Thanks for the attention.
Reply

Ingos Wrote:Which one is the most effective?
Welllll ... it's kind of an apples-to-oranges (to rotting plums) comparison. Charis's formula gives the optimal number of transports to send for purposes of maximizing population growth, and applies in exactly that form only if they arrive instantaneously (which of course is not possible). Charis actually created a more complex formula elsewhere that takes transport time into account, but again it's optimized for the purpose of maxing population growth rate, and there are many circumstances in which it's not optimal play. (It's especially useful for dealing with Silicoids though, as you might imagine.)

What Sirian is talking about is a rule-of-thumb based on the same information you can see in the graph at the top of the thread you linked: To get an individual (new) planet's population growth started, try to get it up over 1/3 of its max pop ASAP. (By the same token, even if they lack factories, a planet should almost never send away so much population that it drops below the 1/3 mark.) It's much less precise than the Charis formula, but it gets the job done. (The fact that the benefit of using a precise formula is very (very) small in comparison with a rule-of-thumb like this is one - together with the fact that an optimal-growth strategy isn't always necessarily the optimal play in the first place - is one of the beautiful things about MoO's design.

As for what the AI does ... well, it sends half of the sending planet's current population to the new planet. Even if the sending planet has 300 pop and the new planet is a 10-pop dustball halfway across the galaxy. So, yeah, killing off 142+ of your own population units by sending them to an unimportant world too small for them to inhabit might not be optimal play.

Quote:I am an amateur programmer so I’ve made one small software to make use of Charis Formula, plus the other two so we can test and see if there is a major difference between the three

It is attached here along with the source code, you will need net Framework 2 to run it as far as I know
Cool! I don't have net Framework 2 installed anywhere (I must blushingly admit that I don't know what it is) but that sounds like a cool tool to use.
Reply

Since a planet's pop growth is roughly proportional to CurrentPop*(MaxPop - CurrentPop), a planet at 1/3 of max size has a factor of 1/3 * 2/3 = 2/9 = 0.222. A planet at the max of 50% of max size has a factor of 1/2*1/2 = 1/4 = 0.250, or a little over 10% bigger. That's why 1/3 or so is "close enough"...it really is. And you can't be at 50% EVERYWHERE.

As the Silicoids, it's possible to MM your pop precisely to abuse the "doubles the fractional pop" component of population growth, but that's an absurd amount of micro and record-taking for the gain you get.

EDIT:
Basically, there are two components to pop growth:
The Current * (Max - Current) * N component, and the game stores pop to the tenths place. If the C * (M - C) * N is 1.2, and your current pop is 40.8, then the game does two things:
1) 40.8 + 0.8 (Doubles the remainder) = 41.6
2) 41.6 + 1.2 (Actual Pop Growth) = 42.8

If you then send 2 pop away from that world that turn, then it'll be 40.8, and you can rinse and repeat this process, getting 2.0 pop per turn, when the base is only 1.2. However, the 0.8 is never seen, so it has to be carefully tracked. I did that once, and then decided "Never Again."
Reply

IMHO, don't bother with trying to maximize population growth.

You are a galactic emperor, you have better things to worry about than that.

The only scenario that I can think of where I would min/max like this is if the second planet that you get is actually better than the first planet that you have.

That doesn't happen very often.

If it is like a minimal 40 ultra rich or a minimal 40 artifacts or something like that, I might try to min/max in this manner, but short of something like that I don't.

I have tested on a few occasions various setups for transferring people between the first and the second planets and the conclusion I reached is that it is better to keep the main planet at 50% or more of max pop, preferably 60-66%.

Its not that big of a deal most of the time if your second planet gets off the ground slowly. The benefits to colony ship production and research usually outweigh the advantage of maximizing the growth of the second planet.

- Edit - BTW, .NET is basically a group of DLLs that programmers use to build programs with so they don't have to write a lot of code themselves. Microsoft wrote a bunch of functions to do various things like 3d graphics and put them in a series of files that are collectively known as .NET. As long as C# programmers know how to interface with the files, they can skip a lot of steps and get code out the
door more quickly. The resulting programs, though, require that the computer they are being run on have went to the windows update page and downloaded the appropriate .NET files during the installation process. If you have Windows, its probably a good idea to DL them. When I format any of my home computers or if I am helping other people with their computers, I pretty much always just download all of them without thinking too much about it.

Raid
Reply

In MoO, there are circumstances when everything is worthwhile. I have definitely been in situations (Silicoids in certain galaxies, especially large/huge ones, and of course Imperium 11) where population growth was the limiting factor for my empire, and I needed every edge I could get in that respect.

Perhaps more importantly though, figuring out how to optimize something (and creating the tools to do it) can be FUN! Micromanaging population transports for maximum population yield in every...single...game would get very tedious, but in most games, it's unnecessary or even counterproductive (in comparison to, for instance, as was mentioned, concentrating on developing the homeworld). But when you need all the pop you can squeeze out of your empire, it's really nice to know how ... and even were that not the case, questions like, "How exactly can I maximize my growth curve?" are fun to ask and answer just as a matter of curiosity!

@Raiddinn: Thanks for the information on .NETs; I assume net Framework 2 is just the name one of them bears, then?
Reply

Yes. 2 is just one collection of them, afaik there are 1, 2, 3, and 4 currently. I think that they are backwards compatible such that 4.0 should work for most 2.0 requirements, but there may be instances where they aren't.

I could be wrong on that, though.

Raid
Reply



Forum Jump: