KaBotte: Unterschied zwischen den Versionen
Maks (Diskussion | Beiträge) |
Maks (Diskussion | Beiträge) |
||
Zeile 5: | Zeile 5: | ||
Nr. [http://www.karopapier.de/mappreview.php?MID=117&pixel=4&karoborder=1 117]: ohne TCs | Nr. [http://www.karopapier.de/mappreview.php?MID=117&pixel=4&karoborder=1 117]: ohne TCs | ||
− | Nr. [http://www.karopapier.de/mappreview.php?MID=167&pixel=4&karoborder=1 167] die Größe des Suchbaums (9 Fakultät) | + | Nr. [http://www.karopapier.de/mappreview.php?MID=167&pixel=4&karoborder=1 167]: die Größe des Suchbaums (9 Fakultät) |
== Funktionsweise == | == Funktionsweise == | ||
Zeile 11: | Zeile 11: | ||
KaBotte bestimmt zu einem gegebenen Move die möglichen (nach Karo-Physik) Folgezüge. Die neuen Züge werden in einer Queue gespeichert, für den jeweils ersten Zug in der Queue wird dieser Vorgang solange wiederholt bis der gesuchte Checkpoint gefunden wurde oder die Queue leer ist. Wenn ein Checkpoint erreicht ist, wurde er in der minimal möglichen Anzahl der Zügen erreicht. | KaBotte bestimmt zu einem gegebenen Move die möglichen (nach Karo-Physik) Folgezüge. Die neuen Züge werden in einer Queue gespeichert, für den jeweils ersten Zug in der Queue wird dieser Vorgang solange wiederholt bis der gesuchte Checkpoint gefunden wurde oder die Queue leer ist. Wenn ein Checkpoint erreicht ist, wurde er in der minimal möglichen Anzahl der Zügen erreicht. | ||
siehe [https://de.wikipedia.org/wiki/Breitensuche Breitensuche]. | siehe [https://de.wikipedia.org/wiki/Breitensuche Breitensuche]. | ||
+ | |||
+ | Richtungsmodus: Bei Rundkursen bestimmt KaBotte den möglichen Winkel-Bereich mit denen das Ziel überfahren werden kann und sperrt diesen bei Zielüberfahrten. | ||
später mehr... | später mehr... | ||
Zeile 18: | Zeile 20: | ||
Programmiersprache: Java | Programmiersprache: Java | ||
− | Architektur: Multi-Threaded (GUI, Kommunikation, Pfadberechnung) | + | Architektur: Multi-Threaded (GUI, Server-Kommunikation, Pfadberechnung) |
Pfadberechnung: Breitensuche (Wege zwischen CPs), Tiefensuche (Suche des optimalen Pfades durch alle CPs zum Ziel) | Pfadberechnung: Breitensuche (Wege zwischen CPs), Tiefensuche (Suche des optimalen Pfades durch alle CPs zum Ziel) | ||
Zeile 30: | Zeile 32: | ||
2016-12-11: Ein Bug mit dem Richtungsmodus wurde behoben (Information, ob Rundkurs, muss manuell erfasst werden) | 2016-12-11: Ein Bug mit dem Richtungsmodus wurde behoben (Information, ob Rundkurs, muss manuell erfasst werden) | ||
+ | |||
2016-12-14: Rudimentäre GUI zur besseren Erfassung von Infos (z.B. Rundkurs) | 2016-12-14: Rudimentäre GUI zur besseren Erfassung von Infos (z.B. Rundkurs) | ||
+ | |||
2016-12-16: Implementierung eines genetischen Algorithmus zur Lösung des [https://de.wikipedia.org/wiki/Problem_des_Handlungsreisenden TSP] bei großen Karten | 2016-12-16: Implementierung eines genetischen Algorithmus zur Lösung des [https://de.wikipedia.org/wiki/Problem_des_Handlungsreisenden TSP] bei großen Karten | ||
Version vom 16. Dezember 2016, 13:59 Uhr
ist ein, seit Ende Oktober 2016 in Entwicklung befindlicher, Bot von maks. Erklärtes Ziel von KaBotte ist es, Re-Rennen fahren zu können (das kann noch ein wenig dauern) und performant genug zu sein, um auf einem Synology-NAS (DS213j) zu laufen.
Inhaltsverzeichnis
Problematische Karten
Nr. 117: ohne TCs
Nr. 167: die Größe des Suchbaums (9 Fakultät)
Funktionsweise
KaBotte bestimmt zu einem gegebenen Move die möglichen (nach Karo-Physik) Folgezüge. Die neuen Züge werden in einer Queue gespeichert, für den jeweils ersten Zug in der Queue wird dieser Vorgang solange wiederholt bis der gesuchte Checkpoint gefunden wurde oder die Queue leer ist. Wenn ein Checkpoint erreicht ist, wurde er in der minimal möglichen Anzahl der Zügen erreicht. siehe Breitensuche.
Richtungsmodus: Bei Rundkursen bestimmt KaBotte den möglichen Winkel-Bereich mit denen das Ziel überfahren werden kann und sperrt diesen bei Zielüberfahrten.
später mehr...
Facts
Programmiersprache: Java
Architektur: Multi-Threaded (GUI, Server-Kommunikation, Pfadberechnung)
Pfadberechnung: Breitensuche (Wege zwischen CPs), Tiefensuche (Suche des optimalen Pfades durch alle CPs zum Ziel)
aktueller Stand
Zur Zeit ist KaBotte in einer intensiven Testphase (läuft nur tagsüber) mit meinem Arbeitskollegen, die vollkommen freiwillig als Gegner für KaBotte herhalten müssen.
Der Bot beherrscht CPs (integraler Bestandteil) und TCs (kann zu sehr langer Laufzeit bei "großem" ZZZ führen). Aus den möglichen Zügen wird immer einer gewählt, der zu einer minimalen Pfadlänge führt.
2016-12-11: Ein Bug mit dem Richtungsmodus wurde behoben (Information, ob Rundkurs, muss manuell erfasst werden)
2016-12-14: Rudimentäre GUI zur besseren Erfassung von Infos (z.B. Rundkurs)
2016-12-16: Implementierung eines genetischen Algorithmus zur Lösung des TSP bei großen Karten
ToDos
Ausbau des Multi-Threadings bei bei der Pfadsuche zwischen den CPs Caching bereits berechneter Pfade pro Spiel (im Augenblick wird jeder Zug komplett neu berechnet) Heuristik zur Bestimmung des nächsten Zuges bzgl. Position der Gegner