Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002682EresseaGeneralöffentlich2020-08-08 12:21
ReporterTar_Nelarn Bearbeitung durchEnno  
PrioritätnormalSchweregradkleinerer FehlerReproduzierbarimmer
Status erledigtLösungerledigt 
Behoben in Version3.25 
Zusammenfassung0002682: Schößlingsumwandlung stagniert bei vielen Schößlingen
Beschreibung

In Region "tLmxsh" (mit Einheit xt6y) befinden sich seit einer Weile ziemlich viele hauptsächlich durch Wasser des Lebens erzeugte Schößlinge die nach meiner Hoffnung langfristig zu Bäumen werden.

Wegen der Überschreitung des Datentyps int (vergleiche Bugreport 2624) wurde (soweit ich mich erinnere) eine limitierte Umwandlung Schößlinge zu Bäumen eingeführt - diese hat aber nun offenbar die Nebenwirkung, dass die Zahl der Schößlinge in der Region nicht mehr unter (in diesem Fall) 163840 = 5*32768 fallen kann - die Umwandlung wird immer kleiner je näher man kommt. Konkret ist meine Beobachtung, dass die Zahl der umgewandelten Schößlinge als 1/6 der Schößlinge in der Region abzüglich von Vielfachem noch 32768 berechnet wird. Beobachtet habe ich das über die letzten 3 Wochen des Frühjahrs:

Beobachtet:
alte Änderung alte
Schößlinge Schößlinge neue Anzahl Schößlinge
1174: "196608-int((196608-5x32768)/6)" = 191147
1175: "191147-int((191147-5x32768)/6)" = 186596
1176: "186596-int((186596-5x32768)/6)" = 182804

Würde dann wie folgt weiterlaufen:
1177: "182804-int((182804-5x32768)/6)" = 179644
1178: "179644-int((179644-5x32768)/6)" = 177010
1179: "177010-int((177010-5x32768)/6)" = 174815

und letztlich bei 5x32768 stagnieren.

Wäre es möglich die Implementierung zu ändern von momentan wohl

Berechnunggrundlage = "Schößlinge minus Vielfache von 32768"

auf z.B.:

if ( Schößlinge <= 32768 ) Berechnungsgrundlage=Schößlinge
else Berechnungsgrundlage=32768

Oder noch besser wäre natürlich wenn man die Berechnung
der Schößlinge noch im langen Datentyp vornehmen könnte
und dann z.B. separat als "Umzuwandelnde_Schößlinge" übergeben
würde...

Parteitd
SpielE2
Report1176

Notizen / Dateien

Xolgrim

Xolgrim

2020-07-09 11:06

Entwickler   ~0008893

Zuletzt bearbeitet: 2020-07-09 11:07

3 Überarbeitungen anzeigen

Als Multiplikationszeichen bitte keine Sternchen sondern x benutzen. Sternchen sind in Mantis ein Zeichen für die Formatierung.

Tar_Nelarn

Tar_Nelarn

2020-07-24 07:55

Reporter   ~0008909

ok!

Enno

Enno

2020-07-28 20:16

Administrator   ~0008919

Ich muss zugeben, dass ich das Problem noch nicht verstehe, aber ich gucke mal in den Code.

Enno

Enno

2020-07-28 20:40

Administrator   ~0008920

Ich glaube, die spannende Woche ist 1174, wo der Winter in Frühling überging, und das Wachstum für den Frühling berechnet wurde.

Enno

Enno

2020-07-28 20:51

Administrator   ~0008921

In der Woche gab es 0 Samen und 196608 Schößlinge (wird auf 32767 begrenzt). Es stimmt allerdings, das die nicht alle zu Bäumen werden können: In der ersten Woche wächst 1/6 von ihnen heran (5461), vom Rest dann in der Folgewoche wieder 1/6 (nur noch 4551), usw, das gibt also 32767-pow(5/6, 6)*32767 = 21793 neue Bäume in der Saison. Warum das so gelöst ist, und nicht mit einem festen Wachstum jede Woche, und einem Bruchteil der Schößlinge, der einer durchschnittlichen Dauer des Wachstums bis zum Baum entspricht, weiß ich nicht. Man will ja auch nicht, dass es nur ein Jahr dauert, damit aus einem Samen ein Schöðling wird, der dann ein Jahr später schon ein Baum ist. Oder? Wie lange dauert es vom Samen bis zum Holz?

Tar_Nelarn

Tar_Nelarn

2020-07-30 08:26

Reporter   ~0008922

Momentan ist meine Annahme/Erwartung, dass das im nächsten Frühjahr so weiter gehen wird - dann aber mit einem Startwert der deutlich kleiner ist: 32767 x (1-pow(5/6, 6)). Bis der Startwert dann irgendwann 0 ist und es stagniert. Obwohl jederzeit daneben noch 163840 = 5 x 32768 Schößlinge stehen, die wohl durch Abschneiden long -> int ignoriert werden.

Man will ja auch nicht, dass es nur ein Jahr dauert, damit aus einem Samen ein Schöðling wird, der dann ein
Jahr später schon ein Baum ist. Oder? Wie lange dauert es vom Samen bis zum Holz?

Ich denke versus "real" ist die eingebaute Verzögerung hier in der Samenproduktion zu finden. Real: Viele Samen/Baum/Jahr und große Selektion und langsames Wachstum bis neue Samen entstehen. Eressea: deutlich kleiner 1 Samen/Baum/Jahr, aber dafür keine Selektion und schnelles Wachstum zum Baum. Passt aus meiner Sicht insgesamt dann schon.

Enno

Enno

2020-07-30 10:40

Administrator   ~0008923

Momentan ist meine Annahme/Erwartung, dass das im nächsten Frühjahr so weiter gehen wird - dann aber mit einem Startwert der deutlich kleiner ist: 32767 x (1-pow(5/6, 6)). Bis der Startwert dann irgendwann 0 ist und es stagniert. Obwohl jederzeit daneben noch 163840 = 5 x 32768 Schößlinge stehen, die wohl durch Abschneiden long -> int ignoriert werden.

Das deckt sich nicht mit meiner Annahme. Ich rekläre mal, wie ich das gerade vereinfacht implementiert habe:
Im nächsten Frühling fängt alles wieder von vorne an. Das geplante Baumwachstum wird bestimmt, 2/3 des Schösslingsbestand S sollen zu neuen Bäumen werden, über 6 Wochen verteilt, also pro Woche 2/3 * S / 6 = S / 9. Die Zahl merke ich mir, und wenn sie größer als 32767 ist, wird das wöchentliche Wachstum halt auf "nur" 32767 begrenzt. Jede Woche im Frühling werden dann so viele Schösslinge zu Bäumen, und am Ende vom Frühling vergesse ich die Zahl, um sie dann im Folgejahr neu zu berechnen.

Wandlung von Samen nach Schösslingen geht analog. Und ja, das reale Wachstum hat mit der Menge Samen zu tun, die die Bäume abwerfen, das ist aber eine davon unabhängig implementiert, und die genauen Zahlen weiß ich nicht im Kopf.

Enno

Enno

2020-07-30 10:40

Administrator   ~0008924

Vereinfachte Formel für das Wachstum implementiert.

Tar_Nelarn

Tar_Nelarn

2020-08-07 18:55

Reporter   ~0008941

Update:

Die Lösung scheint mir gut. Mir ist diese Runde eine mögliche Komplikation aufgefallen die ich mitteilen wollte:

Im aktuellen Report (der erstmalig nun Sommer anzeigt - soweit ich das verstehe gehört der Vorgang selber also schon in den
Sommer) sind überraschend viele Schösslinge zu Bäumen geworden. Offenbar alle "restlichen Schösslinge" abzüglich
der 5 x 32768 die noch ignoriert werden.

1173-37 (Winter): 535328/196608=731936 Deltas:
1174-37 (Frühling): 540789/191147=731936 +5461/-5461=+0
1175-37 (Frühling): 545340/186596=731936 +4551/-4551=+0
1176-37 (Frühling): 549132/182804=731936 +3792/-3792=+0
1177-37 (Frühling): 552292/179644=731936 +3160/-3160=+0
1178-37 (Frühling): 554925/177011=731936 +2633/-2633=+0
1179-37 (Frühling): 557120/174816=731936 +2195/-2195=+0
1180-37 (Sommer
): 568095/163841=731936 +10975/-10975=+0

Sowas hatte ich schon vereinzelt gesehen, aber nie in dieser Reinform. Offenbar sollen alle "alten Schösslinge"
innerhalb eines Jahres Bäume werden.

Abzüglich der 5 x 32768 ist also noch 1 Schössling übrig.

Was passiert nun in der neuen Lösung? Falls ein zweiter Code-Teil immer noch mit dieser "1" rechnen wird -
gibt es dann nächsten 1. Sommer Monat womöglich haufenweise negatives Schössling->Bäume Wachstum
(und die 1 wieder zu erreichen da ein Teil des Codes glaubt insgesamt soll nur 1 Schössling zu Bäumen
werden)?

Falls gegenstandslose Sorge einfach wieder zumachen.

Enno

Enno

2020-08-08 12:21

Administrator   ~0008945

Keine Sorge, negatives Wachstum ist ausgeschlossen. Das Wachstum wird in jedem Frühlingsmonat gleich sein.

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2020-07-07 00:20 Tar_Nelarn Neuer Eintrag
2020-07-09 11:06 Xolgrim Beschreibung aktualisiert Überarbeitungen anzeigen
2020-07-09 11:06 Xolgrim Notiz hinzugefügt: 0008893
2020-07-09 11:07 Xolgrim Notiz bearbeitet: 0008893 Überarbeitungen anzeigen
2020-07-09 11:07 Xolgrim Notiz bearbeitet: 0008893 Überarbeitungen anzeigen
2020-07-24 07:55 Tar_Nelarn Notiz hinzugefügt: 0008909
2020-07-28 20:16 Enno Notiz hinzugefügt: 0008919
2020-07-28 20:40 Enno Notiz hinzugefügt: 0008920
2020-07-28 20:40 Enno Bearbeitung durch => Enno
2020-07-28 20:40 Enno Status neu => zugewiesen
2020-07-28 20:51 Enno Notiz hinzugefügt: 0008921
2020-07-30 08:26 Tar_Nelarn Notiz hinzugefügt: 0008922
2020-07-30 10:40 Enno Notiz hinzugefügt: 0008923
2020-07-30 10:40 Enno Status zugewiesen => erledigt
2020-07-30 10:40 Enno Lösung offen => erledigt
2020-07-30 10:40 Enno Behoben in Version => 3.25
2020-07-30 10:40 Enno Notiz hinzugefügt: 0008924
2020-08-07 18:55 Tar_Nelarn Status erledigt => Rückmeldung
2020-08-07 18:55 Tar_Nelarn Lösung erledigt => wiedereröffnet
2020-08-07 18:55 Tar_Nelarn Notiz hinzugefügt: 0008941
2020-08-08 12:21 Enno Status Rückmeldung => erledigt
2020-08-08 12:21 Enno Lösung wiedereröffnet => erledigt
2020-08-08 12:21 Enno Notiz hinzugefügt: 0008945