Antworten
Seite 3 von 62 ErsteErste 1 2 3 4 5 13 53 ... LetzteLetzte
Ergebnis 21 bis 30 von 612

Thema: [Simulator] SiedlerSim - Kampfsimulator für Siedler Online

  1. #21
    Architekt des Wuselimperiums Avatar von Asipak
    Registriert seit
    Nov 2010
    Beiträge
    956
    Welt
    Grünland
    Ich könnte mir vorstellen, dass diese Tabelle nicht ausreicht, um den Ausgang komplexerer Kämpfe vorherzusagen.

    Wie würdest du die Tabelle zum Beispiel bei 20R 140M 40B vs. 200WH anwenden?

  2. #22
    Wuseler
    Registriert seit
    Dec 2010
    Beiträge
    180
    Welt
    Windfeuertal
    In dem Fall muss folgendes geschehen:

    Abfrage ob (Anzahl WH) * (Tötungsverhältnis WH-B) > 40
    1. Falls ja:
      • Man kann das ganze ja Umdrehen, nämlich 40 / (Tötungsverhältnis WH-B) = nötige Anzahl zum Töten der B.
      • Dann läuft der Kampf mit 200WH minus der nötigen Anzahl WH weiter.
    2. Falls nein, wird einfach der Schaden wie oben beschrieben abgezogen.

    Danke, hab noch nicht soweit gedacht, aber ich implementiers ja auch nicht.

    EDIT: Ich mach mal noch ein Zahlenbeispiel

    Tötungsverhältnisse(wieder nur wahllose Zahlen):
    R/M/B-WH ist immer 1
    WH-B = 0,6
    WH-R = 0,2
    WH-M = 0,1

    1. Runde, 1. Phase:
    200WH * 0,6 = 120 > 40B
    Also: 40B/0,6 = 67
    133WH * 0,2 = 26,6 > 20R
    Also: 20R/0,2 = 100
    33WH * 0,1 = 3,3 < 140M

    Überlebende 1. Phase: 136,7M vs. 200WH

    1.Runde, 2. Phase
    137M*1 = 137 < 200WH
    (Hier wird aufgerundet, da der M ja noch lebt!)

    Überlebende 2. Phase: 136,7M vs. 63WH


    2. Runde, 1. Phase:
    63WH * 0,1 = 6,3 < 136,7M

    Überlebende 1. Phase: 130,4M vs. 63WH

    2.Runde, 2. Phase
    131M*1 = 131 > 63WH => Gegner tot
    Geändert von soegal (08.03.11 um 16:27 Uhr)
    "Parmesan und Partisan, wo sind sie geblieben? Partisan und Parmesan, alles wird zerrieben..."
    - Matthias Beltz -

  3. #23
    Architekt des Wuselimperiums Avatar von Asipak
    Registriert seit
    Nov 2010
    Beiträge
    956
    Welt
    Grünland
    Von der Idee her ist das eigentlich nicht schlecht. Du wirst allerdings Probleme bekommen, wenn du viel weniger (10-20) oder viel mehr (190-200) Einheiten anstelle der 100 Einheiten mitnimmst, mit denen du die Werte in der Tabelle bestimmt hast.

    Nimmst du mehr Einheiten mit, nähert sich der ermittelte Wert dem Wert, der sich nach unendlich vielen Wiederholungen einstellt, da mehr Einheiten die Abweichungen verringern. Nimmst du weniger mit, sind die Abweichungen aber extrem groß.
    Beispiel Würfeln: Bei unendlichen vielen Würfen ist die Wahrscheinlichkeit für eine der 6 Seiten 1/6. Würfelst du nur einmal, bekommst du für eine Seite den Wert 1 und für alle anderen Seiten eine 0.

    Ich habe mal ein paar Werte ermittelt:

    Code:
    	R	M	C	S	E	B	LB	A	K	PL	SL	WH	RB	SW	WL
    R										0,490	0,430	0,825	0,295	1,000	1,000
    M										0,835	0,490	0,880	0,330	1,000	1,000
    C										0,225	0,150	1,000	0,105	0,835	0,835
    S															
    E															
    B															
    LB															
    A															
    K															
    PL	0,460	0,365	0,785												
    SL	0,725	0,460	0,860												
    WH	0,185	0,130	1,000												
    RB	0,735	0,455	0,905												
    SW	0,725	0,450	0,175												
    WL	0,725	0,710	0,175
    Jeweils 200 Wiederholungen und mit 100 vs. 100 Einheiten über 1 Kampfrunde.

    Beispiel: 100R vs. 100Pl: 0,490

    Nehme ich aber beispielsweise 50R vs. 100Pl lande ich bei 0.5, mit 20R vs. 100Pl lande ich bei 0.525 und mit 10R vs. 100Pl sogar bei 0.55.

    Das ergibt schon einen großen Unterschied, der mit Sicherheit nicht unwesentlich für die Berechnung ist.

    Nichtsdestotrotz ist die Tabelle sehr interessant. So erkennt man direkt Stärken und Schwächen der einzelnen Einheiten gegenüber den verschiedenen Einheitentypen.

  4. #24
    Wuseler
    Registriert seit
    Jan 2011
    Beiträge
    234
    Welt
    Windfeuertal
    Also das einfachste wäre natürlich eine Formel in die man alles reinpackt und am Ende kommt der "Erwartungswert" raus. Leider ist das Kampfsystem doch etwas komplexer, so daß die Möglichkeit vorerst flach fällt.

    Um die Waldraud doch noch erfolgreich totzuoptimieren, gibt es denke ich 2 Optionen:

    1. Man differenziert die Kosten weiter, so daß der Algorithmus weiter läuft. Die Frage ist, ob man damit immer die optimale Lösung findet, also sich die Suche hin zum globalen Maximum bewegt. Da bietet es sich wie vorgeschlagen an den ausgeteilten Schaden zu berücksichtigen. Wenn ich heute dazu komme, teste ich das mal.

    2. Man geht bei alles gleiche Kosten zum Bruteforce über. Das heißt eine Breitensuche im n-Dimensionalen ausgehend von einer Ecke. Vorteil man findet die optimale Lösung zu 100%. Nachteil kann sehr lange dauern, besonders, wenn viele Einheitentypen gewählt sind.

    Gegen die Waldraud bringt es übrigens auch nichts alle "Ecken" (200R / 200M / 200B ..) zu berechnen, da diese ebenfalls 202 als Kosten haben. Habe ich schon probiert.


    Nochmal zum Thema Geschwindigkeit. Das rührt weder daher das euer Rechner langsam ist oder dergleichen. Die Implementierung ist absolut auf Codelesbarkeit getrimmt und liest sich wie die Erklärung in der Wiki. Das nützt einem Nutzer natürlich recht wenig. Es ist allerdings kein Problem das ganze enorm zu beschleunigen. Kommt wie angekündigt auch noch. Und beim Webbasierten Simulator wird das ganze auf dem Webserver ausgeführt, d.h euer Rechner macht da gar nix außer das Ergebnis anzeigen.

  5. #25
    Wuseler
    Registriert seit
    Dec 2010
    Beiträge
    180
    Welt
    Windfeuertal
    @PeterPollack

    Zitat Zitat von PeterPollack Beitrag anzeigen
    Also das einfachste wäre natürlich eine Formel in die man alles reinpackt und am Ende kommt der "Erwartungswert" raus. Leider ist das Kampfsystem doch etwas komplexer, so daß die Möglichkeit vorerst flach fällt.
    Ja natürlich nicht, deswegen ja auch der Vorschlag mit dem Sampeln. Diesen habe ich auch nur gemacht, da eine Optimierung bei über 1 Sekunde pro Durchlauf einfach nicht zumutbar ist. Wenn du mehrere Durchläufe pro Sekunde hinkriegst, ist diese Vereinfachung ja nicht nötig.

    2. Man geht bei alles gleiche Kosten zum Bruteforce über. Das heißt eine Breitensuche im n-Dimensionalen ausgehend von einer Ecke. Vorteil man findet die optimale Lösung zu 100%. Nachteil kann sehr lange dauern, besonders, wenn viele Einheitentypen gewählt sind.
    Dann wohl lieber mit weiteren, (optionalen) Kosten über den Schaden. Mir fällt grad kein Grund ein, warum das nicht auch zu einer guten Lösung führen sollte. Du musst ja nichtmal die Kostenfunktion ändern, sondern nur den jeweils nächsten Knoten nehmen, bei dem der höchste Schaden angerichtet wird. Da du in 20er Schritten voran gehst, sollt sich der Schaden von Knoten zu Knoten doch deutlich unterscheiden.

    Gegen die Waldraud bringt es übrigens auch nichts alle "Ecken" (200R / 200M / 200B ..) zu berechnen, da diese ebenfalls 202 als Kosten haben. Habe ich schon probiert.
    Ich hatte nur die Soldaten im Kopf, mit denen gehts ja. Dachte nur, dass es allgemein vielleicht besser wäre, andere Ecken mit einzubeziehen. Dass es nur eine Hilfskrücke ist und keine gute Lösung für das globale Optimum, ist mir auch bewusst.


    @Asipak

    Hmmm, die Abweichung ist schon groß, aber das bedeutet "nur" einen Unterschied von ca. 0,5 Einheiten(z.B. 10*0,49 = 4,9; 10*0,55 = 5,5). Man müsste es sich mal genauer durch rechnen, aber intuitiv würde ich mal sagen, dass der Unterschied im Endergebnis nicht so groß ist. Vor allem, da ja nur in 20er Schritten optimiert wird, also die Differenz zwischen zwei Knoten meist recht deutlich ausfällt und daher die kleine Abweichung vielleicht nicht so stark reinspielt. Wie gesagt, müsste man mal ausprobieren.

    EDIT: @Asipak

    Für meine Beispielrechnung ist das Tötungsverhältnis gegen WH immer 1, da ich die beiden Kamfphasen getrennt habe. Aber für einen Vergleich der Einheitentypen und deren Eignung, ist es natürlich so, wie du es gemacht hast, besser.
    Geändert von soegal (08.03.11 um 19:13 Uhr)
    "Parmesan und Partisan, wo sind sie geblieben? Partisan und Parmesan, alles wird zerrieben..."
    - Matthias Beltz -

  6. #26
    Neuankömmling Avatar von NudeRaider
    Registriert seit
    Jan 2011
    Ort
    Steppenwald
    Beiträge
    9
    Welt
    Steppenwald
    Wie wärs denn einfach alle Ecken zu berechnen, und dann die beste Ecke als Startwert zu nehmen? D.h. nicht einfach immer 200R als Startwert nehmen, sondern auch 200M, 200B, etc. durchrechnen und dann entscheiden welchen Startwert man dann nimmt.

    Das würde die eigentliche Simulation zwar um 10sek (grober Schätzwert) verlängern, würde aber je nach Gegnerkonstellation manchmal sogar schneller zum Ziel führen.

    Momentan sehe ich dabei nur das Problem zu entscheiden welcher Startwert am günstigsten ist. Hier hilft vielleicht dann doch die oben angesprochene Kreuztabelle. Oder man entscheidet bei Unentschieden doch nach angerichtetem Schaden.

  7. #27
    Wuseler
    Registriert seit
    Jan 2011
    Beiträge
    234
    Welt
    Windfeuertal
    Heute hab ich die Zeit gefunden, die Kostenfunktion von Einheiten auf Lebenspunkte umzustellen. Das Ergebnis ist wie gewünscht und er findet nun auch die Optimale Lösung für Waldraud unabhängig der gewählten Einheitentypen. Die Idee von NudeRaider war also nicht die schlechteste. Als nächstes steht dann die Geschwindigkeit auf dem Plan, wenn nicht noch jemand was schwerwiegendes findet.

  8. #28
    Neuankömmling Avatar von NudeRaider
    Registriert seit
    Jan 2011
    Ort
    Steppenwald
    Beiträge
    9
    Welt
    Steppenwald
    Prima. Übrigens als ich noch mit der alten Version ohne Optimierer die Waltraud simuliert habe, habe ich auch verschiedene Einheiten Kombinationen ausprobiert und dann geschaut wieviel HP Waltraud noch übrig hatte um zu beurteilen ob ich mich einer Lösung nähere. Also lag dieser Vorschlag auch für dein Programm nahe.
    Hieraus lässt sich denke ich gleich die nächste Optimierung ableiten: Erst einmal nur 1 Kampf simulieren und wenn die optimale Lösung (für den jeweiligen Durchgang) sich deutlich genug von der zweitbesten unterscheidet dann braucht man gar keine 20 Simulationen.
    Hmmm... während ich das schreibe zweifle ich selbst daran, weil meine Intuition sagt mir, dass dabei die Chance zu hoch ist einen statistischen Ausreißer zu erwischen der die Optimierung verfälscht.

    Andere Idee: Nicht Brute-forcen, sondern das statistische Mittel errechnen. Da du ja sowieso immer in 20-Einheiten Schritten arbeitest müsste das sehr gut klappen.

    Beispiel: Statt 20x folgendes zu simulieren und dann das statistische Mittel zu errechnen ...
    Code:
    FOR (i++ = 0; Anz_Rekruten)
     chance = rand(0,1)
      
     IF (chance > 0.8) HP_Raider[n] =  HP_Raider[n] - 15
     ELSE HP_Raider[n] =  HP_Raider[n] - 30
      
     IF (HP_Raider[n] <= 0) n++
    END FOR
    Raiders_dying = n
    ... machst du eine einzelne Rechnung daraus indem du eine vorab ausgerechnete Tabelle auswertest:
    Code:
    Raiders_dying = ABRUNDEN( Anz_Rekruten * Tabelle(0,13) )
    In dem Array Tabelle steht dann in Spalte 0, Zeile 13 wieviele Raufbolde im statistischen Mittel von 1 Rekruten getötet werden: Laut meinen Rechnungen müssten das 0,270 sein, Asipaks Simulationen haben 0,295 ergeben und meine Simulationen 0,282. Da müsste man nochmal drüber nachdenken wie man die Tabelle mit brauchbaren Werten erstellt. Zumindest habe ich festgestellt, dass die Rechnung doch schon nicht mehr ganz so simpel ist und bin mir daher nicht ganz sicher nicht doch etwas übersehen zu haben.

    Wenn du's perfekt machen willst nimmst du auch noch den Schaden eines angeschlagenen Raufbolds mit, aber ich denke das ist für die Optimierungsrechnung gar nicht notwendig.
    Geändert von NudeRaider (10.03.11 um 02:00 Uhr)

  9. #29
    Neuankömmling
    Registriert seit
    Jan 2011
    Beiträge
    2
    Welt
    Steppenwald
    Hallo Peter,

    mit Abstand der Beste Simulator, den ich bislang nutzen durfte. Ich bin sehr sehr sehr zufrieden damit. Vor allem aber, ist das genau der Ansatz des Simulators, den ich suchte. Weltklasse. Alle Daumen hoch !
    Vielen Dank für die Arbeit und die Mühe !!

    LG
    Mera

  10. #30
    Neuankömmling
    Registriert seit
    Feb 2011
    Ort
    Oberösterreich
    Beiträge
    19
    Welt
    Steppenwald

    1 Reiter vernichtet (angeblich) 2 Wachhunde

    Hallo!
    Erstmal Super Simulator, ist mir von allen Kampfsimulatoren der liebste.
    Aber:
    Er zeigt an, dass man mit 1 Reiter 2 Wachhunde besiegen kann (und zwar immer (100 Simulationen))
    Selbstverständlich habe ich nicht nur die Wachhunde beim Gegner eingegeben sondern auch die anderen (z.B. 50 WH, 110 RB, 40WL)

    Das ist aber nicht der Fall. Es wird immer nur ein Wachhund besiegt.
    Alle anderen Simulatoren zeigen auch nur 1 besiegten Wachhund an

    Er zeigt an: General1 verursacht 120 Schaden an Wachhund2(-115HP)
    Das scheint wohl nicht zu stimmen, da der General wohl vorher schon besiegt wird, und nicht nachher wie im Simulator angegeben


    Ansonsten ist er immer sehr genau

    Gruß Tom

Antworten
Seite 3 von 62 ErsteErste 1 2 3 4 5 13 53 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein

Die von uns verwendeten Ubisoft-Cookies sollen sicherstellen, dass du unsere Websites optimal genießen kannst. Durch die Nutzung dieser Website erklärst du dich mit der Nutzung dieser Cookies einverstanden. Weitere Informationen zum Datenschutz.