Antworten
Seite 1 von 3 1 2 3 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: WM Match-Simulation und Optimierung

  1. #1
    Architekt des Wuselimperiums Avatar von torfkopp
    Registriert seit
    Jan 2011
    Ort
    DA
    Beiträge
    1.038
    Welt
    Grünland

    WM Match-Simulation und Optimierung

    Nachdem ich beim letzten WM Match schon feststellen musste dass die Produktion der Fußball-Wettkampfbuffs aus den vorhanden Sammelgegenständen etwas unübersichtlich werden kann wenn man eine möglichst optimale Matchvorbereitung möchte, und aufgrund der Tatsache dass es für die einzelnen Camps sehr viele unterschiedliche "Angriffs-Formationen" gibt, hab ich mich mal hingesetzt und einen kleinen "Match Simulator und Optimierer" geschrieben denn ich euch hier nicht vorenthalten möchte. Letztendlich berechnet mein Programm wie ein kommendes WM Match durch den Einsatz von bereits vorhandenen Wettkampfbuffs und Sammelgegenständen "optimal" und schnell gewonnen werden kann, sodass man nicht unnötig lange in den WM Abenteuern fest hängt wenn man sich gut vorbereiten kann. Es ist zwar sehr knapp bis zum Achtelfinale, aber vielleicht kann ja der eine oder andere etwas damit anfangen.

    Aber bevor ihr nun einen graphisch aufgepeppten WM Kampfsimulator erwartet, hier erstmal das Kleingedruckte:

    Das Programm hat kein graphisches Interface (GUI) und ist kein einfach ausführbares Windows (etc.) Executable, sondern ich biete hier nur der Quelltext eines C-Programms an inkl. einer Ini-Datei für das WM Achtelfinale an. Der Zugriff und Umgang mit einer Kommandozeile, einem C-Compiler und Linux-artigen Befehlen wird vorausgesetzt. Ich bin Naturwissenschaftler mit etwas Programmiererfahrung, kein Vollblut-Programmierer, also wundert euch nicht über meinen Spaghetti-Code (so lange der macht was ich will ist mir das auch völlig wurscht). Support für das Programm kann ich nicht übernehmen, alle Angaben und Berechnungen erfolgen auf eigene Gefahr und verlangen etwas "Mitdenken" - das Programm ist keine reine Klick-Anleitung, kann aber nützlich sein. Ich werde dafür auch kein GUI schreiben, mir reicht eine Text-Tabelle und Kommandozeilen sind mir eh lieber - wenn das jemand anderes machen will kann er gerne auf meinen Algorithmus zurückgreifen. Das Programm interferiert in keiner Art und Weise mit DSO, es greift nicht in das Spiel ein, es übernimmt keine Daten aus dem Spiel, und liefert keine Daten an das Spiel. Alle Angaben zu vorhandenen Sammelgegenständen etc. müssen per Hand in eine Datei eingetragen werden bevor mein WM Match Optimierer darauf zugreifen kann, und alle Spielaktionen müssen ganz normal erfolgen, das Programm gibt lediglich eine (mehr oder weniger übersichtliche) Tabelle zur optimalen Matchvorbereitung (zu produzierende Wettkampfbuffs, benötigte Sammelgegenstände) aus. Das Programm ist garantiert virenfrei (es muss selbst übersetzt werden), jeder kann das Programm ändern, anpassen oder erweitern, solange mein Nickname damit verbunden bleibt.

    So, nun zu dem was das Programm macht: In den Taktikkarten zu den WM Matches findet man die Angaben dass ein Lager mit z.B. 5 Kopfball ODER 5 Elfmeter "angegriffen" werden kann, und dass weiterhin 4 Fallrückzieher ODER weitere 4 Elfmeter benötigt werden, andere Kombinationen gelten für die anderen Lager. Welche Kombination ist nun die für mich günstigste? Welche Buffs kann ich produzieren, welche nicht weil die entsprechenden Sammelgegenstände fehlen?

    Genau hier setze ich an: für alle möglichen Kombinationen (mit gewissen Einschränkungen, weil die Anzahl der Kombinationen sehr schnell ansteigt) wird berechnet ob ich mir a) die Buffs mit den vorhandenen Sammelgegenständen überhaupt leisten kann, und b) was die für mich günstigste Kombination ist. Diese Kombinationen werden mit einer selbst definierten Kostenfunktion bewertet, die günstigste Kombination wird mir angezeigt. Die Kostenfunktion berücksichtigt die Anzahl der Sammelgegenstände die im Lager vorhanden sind, z.B. werden die im Überfluss vorhandenen Helme den viel selteneren Bananenschalen bevorzugt, wobei individuell der Lagerbestand der vorhandenen Gegenstände angegeben und berücksichtigt wird (keine globalen Vorgaben über Wahrscheinlichkeiten etc.). Berücksichtigt werden auch bereits im Sternmenü vorhandene Buffs (die vielleicht vom letzten Match "übriggeblieben" sind nicht neu produziert werden müssen) die bevorzugt verwendet werden. Diese Daten werden zusammen mit den Lager-Definitionen der WM Spiele in eine Ini-Datei eingetragen und dann an mein Programm übergeben und verarbeitet, eine Beispiel Datei zum Achtelfinale zusammen mit dem Source Code findet sich im ZIP-File im Anhang dieses Posts.

    Das Programm wird übersetzt mit:

    Code:
    gcc -O3 -Wall -Wextra -Wunused -minline-all-stringops -c dso_wm2014.c
    gcc -O3 -Wall -Wextra -Wunused -minline-all-stringops dso_wm2014.o -o dso_wm2014
    (fragt mich nicht was "gcc" ist - wer das nicht weiß braucht hier nicht weiterzulesen - ich kann aus Zeitgründen nicht vollen Support geben!). Ich hab das Programm erfolgreich auf einem Windows 7 - Cygwin System übersetzt, ich denke das sollte auf allen Linux-artigen Umgebungen problemlos zum laufen zu bekommen sein - auch hier ist Eigeninitiative gefragt!

    und ausgeführt mit:

    Code:
    dso_wm2014  WM_Achtelfinale.txt
    wobei vorher in der Datei "WM_Achtelfinale.txt" die eigenen Lagerbestände eingetragen werden (die Verwendung eines Text-Editors wird vorausgesetzt). Ein '-h' Flag für eine Minimal-Hilfe steht zur Verfügung.

    Auf der Konsole bekommt man dann folgendes Bild als Text ausgegeben:


    Neben den der Ini-Datei entnommenen Kampfoptionen (entweder/oder Angaben) für die WM Lager (orange), den vorhanden Buffs und Sammelgegenständen im Stern bzw. Lagerhaus sieht man die berechnete "optimale Kampfaufstellung" pro Lager (grüne Box oben), die noch herzustellenden Buffs (grüne Box unten) und die benötigten Sammelgegenstände (blaue Boxen).

    Einige weitere Erklärungen zu dem Abkürzungen stehen in der Ini-Datei (lesen!!!), dort muss man ja auch erst mal seine eigenen Angaben eintragen. Die Ausgabe zeigt an, dass das erste Lager (Lager01) das wie oben bereits erwähnt wurde mit 5 Kopfball ODER 5 Elfmeter "angegriffen" werden kann, und dass weiterhin 4 Fallrückzieher ODER weitere 4 Elfmeter benötigt werden, in der hier gefunden Lösung tatsächlich mit 4 Kopfball UND 1 Elfmeter UND 2 Fallrückzieher UND weiteren 4 Elfmetern berechnet wurde. Die Reihenfolge der Anwendung dieser Buffs im WM AT ist wichtig, muss selbst berücksichtigt werden, und steht hier nicht zur Diskussion. Alles ohne Gewähr, mitdenken! Weitere Angeben zu den Lagern 02 bis 11 folgen in den Zeilen darunter.

    Ein paar Zeilen zur Bewertungs (Score) Funktion:

    Code:
    Gesamtkosten = Summe (über alle benötigten Sammelgegenstände i) [ c(i) * exp(factor * c(i)) ]
    mit
    c(i) = Anzahl benötigter Sammelgegenstände des Typs "i" / Gesamtzahl des Gegenstands "i" im Lager
    wobei c(i) der Anteil der benötigten Sammelgegenstände eines Typus "i" relativ zum Lagerbestand ist, und "factor" ein konstanter Skalierungsfaktor ist (den ich ausprobiert und auf 3.3333 festgelegt habe, er kann über die "-f" Programmoption frei geändert werden). Die Exponentialfunktion führt zu einer nicht linearen Bevorzugung sehr häufiger Gegenstände, und zu einer sparsameren Verwendung seltener Items. Für die Bewertungsfunktion gibt es keine mathematische Begründung, ich habe die frei so gewählt und für mich getestet, für mich funktioniert die scheinbar relativ gut. Nicht berücksichtigt werden bereits im Stern vorhandene Buffs (die wurden ja schon produziert) in der Kostenrechnung (ich produziere nur das was ich auch wirklich brauche, nichts auf Vorrat). Das Programm versucht die Score-Funktion der Kosten durch Permutation aller Angriffsmöglichkeiten zu minimieren, Herzstück des Programms ist ein rekursiver Algorithmus der sich selbst-aufrufend alle Angriffskombinationen durchspielt. Der Zahlenwert für den ausgegebenen Kosten-Score ist völlig belanglos und bedeutungslos, das war eher zum "debuggen" gedacht als zum "interpretieren". Laufzeit des Programms mit der mitgelieferten Ini-Datei beträgt bei mir auf dem alten Schlepptop deutlich unter 5 Sekunden für die Bewertung von 2.907.036 möglichen Angriffskombinationen von 268.435.456 theoretischen Möglichkeiten - die anderen Möglichkeiten wurden von dem Programm wegen des Fehlens von Sammelgegenständen sofort verworfen. Mehr Sammelgegenstände erhöhen die Anzahl der Möglichkeiten, die Rechenzeit steigt dann auf ca. 5 Minuten an, andernfalls muss man die Anzahl der Angriffs-Optionen in der Ini-Datei einschränken! Klein anfangen ausprobieren, und ein wenig spielen!

    Der eine oder andere Profi-Programmierer mag mich steinigen wegen des Spaghetti-Codes, der eine oder andere Computer-Analphabet mag mich nun steinigen weil ich kein Ready-to-Click-Gui anbiete (weder kann noch werde!!) - andere mögen dieses Programm nützlich finden, jedem überlasse ich die Wahl nun selbst, aber vielleicht findet es der eine oder andere einfach hilfreich. In diesem Sinne: Viel Spaß damit!

    Mein Fazit: allemal besser als mit einem Excel-Sheet händisch rumzuprobieren.

    Eine Ini-Datei für das Viertelfinale gibts hier.

    Eine Ini-Datei für das Halbfinale gibts hier.

    Eine Ini-Datei für das Finale gibts hier.
    Angehängte Dateien
    Geändert von torfkopp (08.07.14 um 07:09 Uhr) Grund: PS: Hinweis Viertelfinale + Halbfinale + FInale eingefügt.

    Torfkopp (der keiner ist *g*)

    -------------------------------------------------------------------
    [11:30] System: Euer Meister der Kampfkunst ist zu oft gestorben und wird nun aus dem Sternmenü entfernt.

    Osterausflug des DSO-Teams 2015: englische Version / deutsche Version

  2. #2
    Federwolken Entfederer
    Registriert seit
    Dec 2010
    Beiträge
    4.665
    Welt
    Grünland
    Respekt vor Deiner Arbeit, aber ich persönlich finde die Online Variante besser:

    http://settlersonlinemaps.com/worldc...de=3&MapaID=62

  3. #3
    Architekt des Wuselimperiums Avatar von torfkopp
    Registriert seit
    Jan 2011
    Ort
    DA
    Beiträge
    1.038
    Welt
    Grünland
    Zitat Zitat von HectorHektik Beitrag anzeigen
    Respekt vor Deiner Arbeit, aber ich persönlich finde die Online Variante besser:

    http://settlersonlinemaps.com/worldc...de=3&MapaID=62
    Danke für den Hinweis - diese Online Variante kannte ich noch nicht - aber die "optimiert" leider auch nicht, oder sehe ich das falsch?

    Torfkopp (der keiner ist *g*)

    -------------------------------------------------------------------
    [11:30] System: Euer Meister der Kampfkunst ist zu oft gestorben und wird nun aus dem Sternmenü entfernt.

    Osterausflug des DSO-Teams 2015: englische Version / deutsche Version

  4. #4
    Federwolken Entfederer
    Registriert seit
    Dec 2010
    Beiträge
    4.665
    Welt
    Grünland
    Zitat Zitat von torfkopp Beitrag anzeigen
    ...aber die "optimiert" leider auch nicht, oder sehe ich das falsch?
    Nicht in der Form, wie Deine Variante.
    Allerdings hat man alles besser im Überblick.

    Ich habe immer ein klein wenig Bauchschmerzen damit, mir ausführbare Dateien herunterzuladen und zu nutzen.
    Und da ich kein Programmierer bin, kann ich den Code sicher kompilieren, aber wer sagt mir, was er im Einzelnen tut?

    Das hat nichts mit Dir persönlich zu tun, ist eine Form mehr oder weniger gesunder Paranoia, die mir hilft, meinen Rechner sauberzuhalten.

    Aber wie gesagt, vor der Idee und der augenscheinlichen Umsetzung ziehe ich meinen Hut, war sicher einiges an Arbeit.
    Geändert von HectorHektik (21.06.14 um 14:21 Uhr)

  5. #5
    Architekt des Wuselimperiums Avatar von torfkopp
    Registriert seit
    Jan 2011
    Ort
    DA
    Beiträge
    1.038
    Welt
    Grünland
    Zitat Zitat von HectorHektik Beitrag anzeigen
    Ich habe immer ein klein wenig Bauchschmerzen damit, mir ausführbare Dateien herunterzuladen und zu nutzen.
    Das hat nichts mit Dir persönlich zu tun, ist eine Form mehr oder weniger gesunder Paranoia, die mir hilft, meinen Rechner sauberzuhalten.
    Ich teile da voll und ganz deine Meinung, Downloads sind auch für mich immer mit Bauschmerzen verbunden - deshalb gibts in dem ZIP-File auch kein Executable von mir, nur den C-Source Code. Selbst prüfen und übersetzen schützt. In dem Ding ist nix "krankhaftes".

    Torfkopp (der keiner ist *g*)

    -------------------------------------------------------------------
    [11:30] System: Euer Meister der Kampfkunst ist zu oft gestorben und wird nun aus dem Sternmenü entfernt.

    Osterausflug des DSO-Teams 2015: englische Version / deutsche Version

  6. #6
    Architekt des Wuselimperiums Avatar von torfkopp
    Registriert seit
    Jan 2011
    Ort
    DA
    Beiträge
    1.038
    Welt
    Grünland
    Mittlerweile hab ich das Achtelfinale exakt so bestritten wie mein Programm das vorgeschlagen hat - zumindest was die Berechnungen angeht hab ich bisher noch keinen Fehler finden können (man muss nur die Reihenfolge mancher Wettkampfbuffs beachten) - also vielleicht können auch andere Nutzen aus dem Optimierer ziehen.

    Torfkopp (der keiner ist *g*)

    -------------------------------------------------------------------
    [11:30] System: Euer Meister der Kampfkunst ist zu oft gestorben und wird nun aus dem Sternmenü entfernt.

    Osterausflug des DSO-Teams 2015: englische Version / deutsche Version

  7. #7
    Architekt des Wuselimperiums Avatar von torfkopp
    Registriert seit
    Jan 2011
    Ort
    DA
    Beiträge
    1.038
    Welt
    Grünland
    Anbei im Attachment eine Beispiel Ini-Datei für mein Programm zum Viertelfinale (ohne Gewähr) - bitte nicht vergessen die eigenen Lagerbestände in die Datei einzutragen!

    Berechnung und Optimierung mit (siehe erster Post in diesem Thread):

    Code:
    dso_wm2014  WM_Viertelfinale.txt
    PS: Falls sich die Windows-Benutzer mit "WordPad" wundern: das ist eine Linux-Datei!
    Angehängte Dateien
    Geändert von torfkopp (23.06.14 um 11:57 Uhr) Grund: PS hinzugefügt.

    Torfkopp (der keiner ist *g*)

    -------------------------------------------------------------------
    [11:30] System: Euer Meister der Kampfkunst ist zu oft gestorben und wird nun aus dem Sternmenü entfernt.

    Osterausflug des DSO-Teams 2015: englische Version / deutsche Version

  8. #8
    Architekt des Wuselimperiums Avatar von torfkopp
    Registriert seit
    Jan 2011
    Ort
    DA
    Beiträge
    1.038
    Welt
    Grünland
    Hier im Attachment eine Beispiel Ini-Datei für mein Programm zum Halbfinale (ohne Gewähr) - bitte nicht vergessen die eigenen Lagerbestände in die Datei einzutragen!

    Berechnung und Optimierung mit (siehe erster Post in diesem Thread):

    Code:
    dso_wm2014  WM_Halbfinale.txt
    PS: Falls sich die Windows-Benutzer mit "WordPad" wundern: das ist eine Linux-Datei! Ansonsten würde es mich mal interessieren ob jemand das Programm nützlich fand oder nicht.
    Angehängte Dateien

    Torfkopp (der keiner ist *g*)

    -------------------------------------------------------------------
    [11:30] System: Euer Meister der Kampfkunst ist zu oft gestorben und wird nun aus dem Sternmenü entfernt.

    Osterausflug des DSO-Teams 2015: englische Version / deutsche Version

  9. #9
    Architekt des Wuselimperiums
    Registriert seit
    Jun 2011
    Beiträge
    1.394
    Welt
    Steppenwald
    Habs gerade mal getestet, ich brauch mehr Items Sieht aber so relativ ansprechend aus

  10. #10
    Federwolken Entfederer
    Registriert seit
    Dec 2010
    Beiträge
    4.665
    Welt
    Grünland
    Zitat Zitat von torfkopp Beitrag anzeigen
    PS: Falls sich die Windows-Benutzer mit "WordPad" wundern: das ist eine Linux-Datei!
    Wordpad öffnet die Datei einwandfrei, Notepad kann mit Unicode nicht umgehen.
    Das hat aber mit dem OS nur bedingt zu tun

Antworten
Seite 1 von 3 1 2 3 LetzteLetzte

Stichworte

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.