← Alle Beiträge

Projektarchiv

Entwicklungstagebuch: ein Überlauf in der Populationssimulation

Wir können langsam anfangen. Entwicklungstagebücher. 1. So. Heute habe ich viel Zeit mit einem Bug verbracht, den ich gestern bemerkt habe. Als ich die Population einer Kolonie für ungefähr 3.500 Jahre simulierte, tauchten plötzlich negative Geburtswerte auf und wurden in die Arrays geschrieben. Das waren keine zweieinhalb Minenarbeiter; sie waren Anti-Minenarbeiter! Mehrere Debugging-Faktoren verschärften das Problem, so dass ich die genauen Zahlen erst am Abend erfasste. Und was ist Ihrer Meinung nach passiert? Die Zahl der Frauen, die möglicherweise gebären könnten, hat einfach zwei Milliarden und ein bisschen überschritten, die Grenze einer 32-Bit-Ganzzahl erreicht und auf wundersame Weise ins Negative gekippt. Ich musste einige Berechnungen und Variablen in Gleitkommazahlen umwandeln. Jetzt liegt die Grenze bei zwei Milliarden Neugeborenen, aber das passiert bei einer Bevölkerung von etwa 40 Milliarden, also sollte es sicherlich ausreichen, einen ganzen Planeten als eine einzige Einheit zu simulieren, wenn es jemandem gelingt, einen solchen Preis zu ergattern. Und es passiert irgendwo um das Jahr 4800... Da wir planen, einen Zeitraum von nicht mehr als 1.200 Jahren durchzuspielen, gibt es einen anständigen Spielraum. Für Neugierige, hier ist, warum ich nicht nur die Grenze enorm gemacht habe: Ich möchte nicht, dass Speicher und CPU-Nutzung ohne Grenzen wachsen. Es ist sehr wichtig, innerhalb von 32-Bit-Integer-Arrays zu bleiben. Sie sind sehr schnell. ;

Wenn Sie Fragen, Anfragen oder Vorschläge zu diesem Thema oder den Entwicklungstagebüchern im Allgemeinen haben, zögern Sie nicht zu schreiben!

Facebook-Profil des Projekts ↗