!!! Disclaimer: Die angegebene Anzahl an Commits und Umfang der Commits sind nicht aussagekräftig über die Menge an absolvierter Arbeit pro Contributor, da das JetBrains - PyCharm Feature "Code Together" benutzt wurde !!!
- Zuggenerator: Alle Positionen getten, für diese Positionen gültige Richtungen ermittlen, Anzahl der Steps ermitteln
get_all_positions()
get_valid_directions()
get_steps()
- Same Size Array
- Min-Max Algorythm
- Alpha-Beta Algorythm
- Visualizer (maybe later)
- Unit Tests
- Benchmarks
- turn => positive points, other => negative points
- pieces = 1 point, tower = 3 points --> check if element.length is bigger 1
- more points as you go forward and in the middle --> from early match looking, forward +, middle +
- and give points per move one can make --> count(getAllMoves() (From the same starting point))
- A player that cannot make a legal move loses
- Making the same move 3 times (remis) (for later)
- Reaching the other end
- no more pieces
- red is max Player
- blue is min Player
- implement automatic max player and min player call
- Maybe new Tree Structure idk
- Benchmarks verbessern (Unterschiede in Anzahl der untersuchten Stellungen zeigen)
- Projektwiki aktualisieren
- 3-5 weitere KI Techniken implementieren (darunter 1-2 komplexe)
Komplexe Beispiele:
- Aspiration Windows
- Board durch Bitboard ersetzen (Quelle: https://github.com/cglouch/snakefish)
- sehr sinnvoll, weil wir eine sehr schlechte Laufzeit haben
- Transposition Table scheint mir auch sehr sinnvoll
Weniger Komplexe:
- Zugsortierung
- Erweitern der Bewertungsfunktion (Zentrumskontrolle, Piece Square Tables, Mobilität/Felderkontrolle, vllt TWOCOLTOEWR noch mehr Punkte geben)
- Verbesserung des Inserts (vllt auch concurrency beim Tree create/insert?)
- zufällige Auswahl von moves, falls es einen anderen move mit der gleichen eval Punktzahl existiert
- 3 Fache Wiederholung erkennen
- vielleicht noch Effizienzerhöhung durch (# Precompute the KING_MOVES array at import time KING_MOVES = np.fromiter( (compute_king_moves(i) for i in range(64)), dtype=np.uint64, count=64 )) aus snakefish
Screencast: Deliverables:
- ein kurzer Report:
- Welche KI-Techniken haben Sie umgesetzt, wie haben Sie sie implementiert?(Begründete Designentscheidungen)
- tabellarische Präsentation der Performancetests. Unbedingt auch Ihre Rechnerkonfiguration spezifizieren.
- Wie hat sich die Bewertungsfunktion über den bisherigen Verlauf des Semesters entwickelt?
- Was planen Sie für den 4. Meilenstein?
- Screencast, der demonstriert, wie Sie Ihre Performancetests durchführen, z.B. durch recording der Konsole.
- Dokumentation der Performance Ihrer aktuellen KI im Wiki.
-
without: 5642
-
2 move to win tree took 3.7085649967193604
-
3 moves to win took: 0.037438154220581055 seconds C5-C6 --> res: C5-C6
-
with: BitBoard Dokumentation
- benchmark Tests sauber implementieren (so umschreiben, dass man alphabeta und minimax laufen lassen kann und bitboard und 2D array auch in einem)
- bitboards optimieren
- Ruhesuche parameter überarbeiten -> zugsortierung
- aspiration windows fix (maybe)
- Tree optimieren (vielleicht durch Parallelisierung)
- Zeitmanagement