BenBE hat folgendes geschrieben: |
hmmm, was hindert dich daran, die ersten 6 Züge eines jeden Spiels in einer Baumstruktur zu speichern und die zugehörigen "Best Moves" entsprechend zu markieren? |
Ich habe etwas Besseres gefunden: Der 1. Zug wird mit Random ermittelt, die nächsten 4 Züge werden in einem niedrigen Level ausgeführt, erst dann wird das eingestellte Level verwendet.
Was noch wünschenswert wäre:
-> Dass das Programm stärker spielt, so etwas wie einen Plan entwickelt oder "Fallen" stellt. Zur Zeit ist es doch so, dass es bei jedem seiner Züge sozusagen bei 0 zu rechnen beginnt.
Nun gibt es da alzaimar's selbstlernende KI, aber in den letzten 135.000(!) "Lern"-Durchgängen konnte kein einziger der 27 Koeffizienten mehr verbessert werden. Das bedeutet meiner Ansicht nach, dass hier eine gewisse Grenze erreicht ist - die Zusammensetzung der 27 Zahlen ist optimal, oder?
Was also nun? Noch mehr Koeffizienten einbauen, 30? Damit wird das Programm ja noch langsamer.
-> Dass das Programm schneller spielt, auch in hohen Levels. 20 Minuten pro Zug ist nicht mehr lustig. Gut, ein Schachcomputer rechnet noch länger, aber der kann dafür auch mehr!
Hier mal die Koeffizienten und ihr Sinn:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| icoeffs: TCoeffArray = ( 405, 27, -858, 7, -3070, 13, -144, 85, -48, -39, -10, 918, -78, -214, -20, 22, 20, -1730, 188, -58, 7649, 1, 52, 25, 6, -9637, -964 ); |
Was fehlt? Was kann man besser machen?
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!