Eintragsdetails ansehen

IDProjektKategorieSichtbarkeitZuletzt aktualisiert
0002640EresseaLERNE/LEHREöffentlich2020-03-01 14:36
ReporterXolgrim Bearbeitung durchEnno  
PrioritätnormalSchweregradkleinerer FehlerReproduzierbarnicht getestet
Status erledigtLösungerledigt 
Produktversion3.22.1 
Zielversion3.23Behoben in Version3.23 
Zusammenfassung0002640: Fehlerhaftes LEHRE AUTO
Beschreibung

Ich habe in Runde 1154 zwei Einheiten in einer Region den Befehl "LERNE AUTO Segeln" gegeben

EINHEIT sww; Segler [20,0$] kämpft nicht
; Segeln 16, Schiffbau 6, Ausdauer 2
LERNE AUTO Segeln

EINHEIT f8iu; Segler [1000,310000$] kämpft nicht
; Segeln 10, Schiffbau 5, Ausdauer 1
LERNE AUTO Segeln

Nach meinem Verständniss will LERNE AUTO die maximal mögliche Lernzeit rausholen, also sollten hier in dem Fall die 20 T16er komplett Lehren.

In 1155 ist die 20er EInheit jedoch aufgestiegen. Da in dieser Einheit niemand gelernt haben dürfte und sich beide EInheiten auch nicht auf einem Schiff befinden, sollte dies nicht passieren dürfen. Es sei denn ich habe etwas grundlegend falsch verstanden.

Einheitne in 1155:
EINHEIT sww; Segler [20,0$] kämpft nicht
; Segeln 17 (+1), Schiffbau 6, Ausdauer 2
LERNE AUTO Segeln

EINHEIT f8iu; Segler [1000,300000$] kämpft nicht
; Segeln 10, Schiffbau 5, Ausdauer 1
LERNE AUTO Segeln

Parteiioen
SpielE2
Report1155

Notizen / Dateien

Enno

Enno

2020-02-21 20:20

Administrator   ~0008714

Ich sehe. Der Code findet, beide Einheiten sollten lehren, und weil sie dann keine Schüler haben, lernt das "überzählige" Lehrpersonal dann, wie das so bei LERNE AUTO ist, wenn nicht jede Person 10 Schüler hat.

Enno

Enno

2020-02-21 21:20

Administrator   ~0008715

Mein erster Versuch einer Reparatur klappt zwar für diesen Fall, aber schlägt dann bei einem anders konstruierten wie erwartet wieder fehl: Man nehme statt einer Schülereinheit mit 1000 Personen zwei Einheiten mit 500 bzw. 100 Personen. Erwartetes Ergebnis: In beiden werden 100 Personen gelehrt. Leider nicht :-( Da ist etwas fundamental falsch, was zuschlägt, wenn die erste Einheit die einzige ist, die Lehren kann, aber zu klein, um alle Schüler zu lehren.

Enno

Enno

2020-02-22 09:44

Administrator   ~0008718

Zuletzt bearbeitet: 2020-02-22 09:48

2 Überarbeitungen anzeigen

Ich glaube, der Algorithmus funktioniert einfach nicht. Der argumentiert falsch herum.

Das läuft so ab:
Einheit A: 20 Personen T16
Einheit B: 100 Personen T10
Einheit C: 500 Personen T10
Der Code sieht die erste Einheit, die hat 20 Personen. Da bräuchten wir 2 Lehrer, um die zu lehren. Der Code entscheidet daher, dass die erste Einheit ein Lehrer sein soll (obwohl man sich nicht selbst lehren kann, oops). Das an sich ist also schon ein Fehlverhalten.

Dann sieht er die zweite Einheit mit 100 Personen. Jetzt haben wir also 120 Studierende, davon müssen 11 Lehrer sein um die übrigen 109 zu lehren. Soweit ginge das also, wenn die erste Einheit die zweite lehrt.

Im Falle von Xolgrim's Leuten nicht, weil die zweite Einheit 1000 Leute hat, und bei 1020 Studierenden braucht man mehr als mehr als 20 Lehrer (93 wären gut), weshalb der Code sich da entschieden hat, dass beide Einheiten lehren sollen (im Prinzip der gleiche Fehler wie eben).

Mit der dritten Einheit sind es 620 Studierende, die brauchen 57 Lehrer für ein optimales Lehrer/Schüler Verhältnis, weshalb auch hier die zweite Einheit zu Lehrern erklärt wird. Dabei können sie die dritte Einheit gar nicht lehren, die hat ja das gleiche Talent!

Wir finden jetzt, dass der erste Schüler (Einheit C) niedrig genug ist, um vom ersten Lehrer (Einheit A) gelehrt zu werden, lehren daher 200 Personen, und wählen einen neuen Lehrer. Der kann den Schüler nicht lehren, weshalb sie selber lernen. Das wird aber auf den selben Wert addiert! learning und teaching erhöhen beide scholars[i].learn! Da haben wir also noch einen Fehler. Oh weia.

Anschliessend müssten noch alle ungelehrten Einheiten "normale" Punkt für einfaches lernen kriegen, und alle Lehrer, die niemanden gelehrt haben, was aber scheinbar auch nicht passiert. Dritter Bug.

Enno

Enno

2020-03-01 14:36

Administrator   ~0008721

Ich habe einen Fix, der funktioniert. Hurrah!

Eintrags-Historie

Änderungsdatum Benutzername Feld Änderung
2020-02-15 14:03 Xolgrim Neuer Eintrag
2020-02-21 20:20 Enno Bearbeitung durch => Enno
2020-02-21 20:20 Enno Status neu => zugewiesen
2020-02-21 20:20 Enno Notiz hinzugefügt: 0008714
2020-02-21 21:20 Enno Notiz hinzugefügt: 0008715
2020-02-22 09:44 Enno Notiz hinzugefügt: 0008718
2020-02-22 09:48 Enno Notiz bearbeitet: 0008718 Überarbeitungen anzeigen
2020-03-01 10:44 Enno Produktversion => 3.22.1
2020-03-01 10:44 Enno Zielversion => 3.23
2020-03-01 14:36 Enno Status zugewiesen => erledigt
2020-03-01 14:36 Enno Lösung offen => erledigt
2020-03-01 14:36 Enno Behoben in Version => 3.23
2020-03-01 14:36 Enno Notiz hinzugefügt: 0008721