schachprogramm-performance problem



  • hi, ich habe zur Übung ein schachprogramm in c++ geschrieben. Bisher kann es in allen Stellungen korrekte Züge ausführen und mit einem Minmax-Algorithmus gegen Gegner spielen. Jetzt zu meinem Problem: Das Programm untersucht alle Zugmöglichkeiten bis 4 Halbzüge im Voraus und bewertet danach jeweils die Stellung (Stellungsbewertung bisher ganz einfach, nur Material wird beachtet, keine Königssicherheit, Bauernstruktur etc..). Hierbei werden ca. 1mio Stellungen pro Sekunde untersucht. Etwas Rechereche im Internet ergab, dass andere Amateur/komerzielle Programme oft mehrere mio. Stellungen pro Sekunde untersuchen und das mit deutlich(!) komplizierteren Stellungsbewertungen. Mein Programm muss also irgendwie sehr ineffizient vorgehen. Wie gehe ich am besten vor um herauszufinden was das Problem ist/ das Programm schneller zu machen?
    kann hier auch gerne codeausschnitte posten nur ist es natürlich sehr viel code..



  • Hi,

    den MinMax-Algo kannst Du einfach zu dem Alpha-Beta-Algorithmus erweitern. Das ist schonmal eine erste Optimierung, die Dir sehr viel einbringen wird.



  • ja das ist der nächste schritt, damit kann ich sicher tiefer voraussehen, allerdings werden nicht mehr stellungen pro sekunde angeschaut, sondern nur unwichtige von vornherein gar nicht beachtet wenn ich den algorithmus richtig verstanden habe.



  • Ja stimmt, die Stellungsanzahl erhöht sich nicht. Trotzdem untersuchst Du effektiv sehr viel mehr als bei naivem MinMax.



  • Profiler?


Anmelden zum Antworten