This commit is contained in:
ramollia
2026-01-07 14:44:45 +01:00
parent df93b44d19
commit 6aa0eb952a

View File

@@ -13,49 +13,50 @@ import org.toop.game.players.ai.RandomAI;
public final class Main { public final class Main {
static void main(String[] args) { static void main(String[] args) {
// App.run(args); App.run(args);
testMCTS(10); // testMCTS(10);
} }
private static void testMCTS(int games) { // Voor onderzoek
var random = new ArtificialPlayer<>(new RandomAI<BitboardReversi>(), "Random AI"); // private static void testMCTS(int games) {
var v1 = new ArtificialPlayer<>(new MCTSAI<BitboardTicTacToe>(10), "MCTS V1 AI"); // var random = new ArtificialPlayer<>(new RandomAI<BitboardReversi>(), "Random AI");
var v2 = new ArtificialPlayer<>(new MCTSAI2<BitboardTicTacToe>(10), "MCTS V2 AI"); // var v1 = new ArtificialPlayer<>(new MCTSAI<BitboardTicTacToe>(10), "MCTS V1 AI");
var v2_2 = new ArtificialPlayer<>(new MCTSAI2<BitboardTicTacToe>(100), "MCTS V2_2 AI"); // var v2 = new ArtificialPlayer<>(new MCTSAI2<BitboardTicTacToe>(10), "MCTS V2 AI");
var v3 = new ArtificialPlayer<>(new MCTSAI3<BitboardTicTacToe>(10), "MCTS V3 AI"); // var v2_2 = new ArtificialPlayer<>(new MCTSAI2<BitboardTicTacToe>(100), "MCTS V2_2 AI");
// var v3 = new ArtificialPlayer<>(new MCTSAI3<BitboardTicTacToe>(10), "MCTS V3 AI");
testAI(games, new Player[]{ v1, v2 }); // testAI(games, new Player[]{ v1, v2 });
// testAI(games, new Player[]{ v1, v3 }); // // testAI(games, new Player[]{ v1, v3 });
// testAI(games, new Player[]{ random, v3 }); // // testAI(games, new Player[]{ random, v3 });
// // testAI(games, new Player[]{ v2, v3 });
// testAI(games, new Player[]{ v2, v3 }); // testAI(games, new Player[]{ v2, v3 });
testAI(games, new Player[]{ v2, v3 }); // // testAI(games, new Player[]{ v3, v2 });
// testAI(games, new Player[]{ v3, v2 }); // }
}
private static void testAI(int games, Player<BitboardReversi>[] ais) { // private static void testAI(int games, Player<BitboardReversi>[] ais) {
int wins = 0; // int wins = 0;
int ties = 0; // int ties = 0;
for (int i = 0; i < games; i++) { // for (int i = 0; i < games; i++) {
final BitboardReversi match = new BitboardReversi(ais); // final BitboardReversi match = new BitboardReversi(ais);
while (!match.isTerminal()) { // while (!match.isTerminal()) {
final int currentAI = match.getCurrentTurn(); // final int currentAI = match.getCurrentTurn();
final long move = ais[currentAI].getMove(match); // final long move = ais[currentAI].getMove(match);
match.play(move); // match.play(move);
} // }
if (match.getWinner() < 0) { // if (match.getWinner() < 0) {
ties++; // ties++;
continue; // continue;
} // }
wins += match.getWinner() == 0? 1 : 0; // wins += match.getWinner() == 0? 1 : 0;
} // }
System.out.printf("Out of %d games, %s won %d -- tied %d -- lost %d, games against %s\n", games, ais[0].getName(), wins, ties, games - wins - ties, ais[1].getName()); // System.out.printf("Out of %d games, %s won %d -- tied %d -- lost %d, games against %s\n", games, ais[0].getName(), wins, ties, games - wins - ties, ais[1].getName());
System.out.printf("Average win rate was: %.2f\n\n", wins / (float)games); // System.out.printf("Average win rate was: %.2f\n\n", wins / (float)games);
} // }
} }