mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 10:54:51 +00:00
Merge changes on dev
This commit is contained in:
@@ -5,8 +5,8 @@ import org.toop.framework.gameFramework.model.player.AbstractAI;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
public class MCTSAI2 extends AbstractAI {
|
||||
private static class Node {
|
||||
public abstract class MCTSAI extends AbstractAI {
|
||||
protected static class Node {
|
||||
public TurnBasedGame state;
|
||||
|
||||
public long move;
|
||||
@@ -181,7 +181,7 @@ public class MCTSAI2 extends AbstractAI {
|
||||
return mostVisitedChild;
|
||||
}
|
||||
|
||||
protected Node findOrResetRoot(Node root, T game) {
|
||||
protected Node findOrResetRoot(Node root, TurnBasedGame game) {
|
||||
if (root == null) {
|
||||
return new Node(game.deepCopy());
|
||||
}
|
||||
|
||||
@@ -3,22 +3,22 @@ package org.toop.game.players.ai.mcts;
|
||||
import org.toop.framework.gameFramework.model.game.TurnBasedGame;
|
||||
import org.toop.game.players.ai.MCTSAI;
|
||||
|
||||
public class MCTSAI1<T extends TurnBasedGame<T>> extends MCTSAI<T> {
|
||||
public class MCTSAI1 extends MCTSAI {
|
||||
public MCTSAI1(int milliseconds) {
|
||||
super(milliseconds);
|
||||
}
|
||||
|
||||
public MCTSAI1(MCTSAI1<T> other) {
|
||||
public MCTSAI1(MCTSAI1 other) {
|
||||
super(other);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MCTSAI1<T> deepCopy() {
|
||||
return new MCTSAI1<>(this);
|
||||
public MCTSAI1 deepCopy() {
|
||||
return new MCTSAI1(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMove(T game) {
|
||||
public long getMove(TurnBasedGame game) {
|
||||
final Node root = new Node(game, null, 0L);
|
||||
|
||||
final long endTime = System.nanoTime() + milliseconds * 1_000_000L;
|
||||
|
||||
@@ -3,7 +3,7 @@ package org.toop.game.players.ai.mcts;
|
||||
import org.toop.framework.gameFramework.model.game.TurnBasedGame;
|
||||
import org.toop.game.players.ai.MCTSAI;
|
||||
|
||||
public class MCTSAI2<T extends TurnBasedGame<T>> extends MCTSAI<T> {
|
||||
public class MCTSAI2 extends MCTSAI {
|
||||
private Node root;
|
||||
|
||||
public MCTSAI2(int milliseconds) {
|
||||
@@ -12,19 +12,19 @@ public class MCTSAI2<T extends TurnBasedGame<T>> extends MCTSAI<T> {
|
||||
this.root = null;
|
||||
}
|
||||
|
||||
public MCTSAI2(MCTSAI2<T> other) {
|
||||
public MCTSAI2(MCTSAI2 other) {
|
||||
super(other);
|
||||
|
||||
this.root = other.root;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MCTSAI2<T> deepCopy() {
|
||||
return new MCTSAI2<>(this);
|
||||
public MCTSAI2 deepCopy() {
|
||||
return new MCTSAI2(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMove(T game) {
|
||||
public long getMove(TurnBasedGame game) {
|
||||
root = findOrResetRoot(root, game);
|
||||
|
||||
final long endTime = System.nanoTime() + milliseconds * 1_000_000L;
|
||||
|
||||
@@ -10,7 +10,7 @@ import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
public class MCTSAI3<T extends TurnBasedGame<T>> extends MCTSAI<T> {
|
||||
public class MCTSAI3 extends MCTSAI {
|
||||
private final int threads;
|
||||
|
||||
public MCTSAI3(int milliseconds, int threads) {
|
||||
@@ -19,19 +19,19 @@ public class MCTSAI3<T extends TurnBasedGame<T>> extends MCTSAI<T> {
|
||||
this.threads = threads;
|
||||
}
|
||||
|
||||
public MCTSAI3(MCTSAI3<T> other) {
|
||||
public MCTSAI3(MCTSAI3 other) {
|
||||
super(other);
|
||||
|
||||
this.threads = other.threads;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MCTSAI3<T> deepCopy() {
|
||||
return new MCTSAI3<>(this);
|
||||
public MCTSAI3 deepCopy() {
|
||||
return new MCTSAI3(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMove(T game) {
|
||||
public long getMove(TurnBasedGame game) {
|
||||
final ExecutorService pool = Executors.newFixedThreadPool(threads);
|
||||
final long endTime = System.nanoTime() + milliseconds * 1_000_000L;
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
public class MCTSAI4<T extends TurnBasedGame<T>> extends MCTSAI<T> {
|
||||
public class MCTSAI4 extends MCTSAI {
|
||||
private final int threads;
|
||||
private final Node[] threadRoots;
|
||||
|
||||
@@ -21,7 +21,7 @@ public class MCTSAI4<T extends TurnBasedGame<T>> extends MCTSAI<T> {
|
||||
this.threadRoots = new Node[threads];
|
||||
}
|
||||
|
||||
public MCTSAI4(MCTSAI4<T> other) {
|
||||
public MCTSAI4(MCTSAI4 other) {
|
||||
super(other);
|
||||
|
||||
this.threads = other.threads;
|
||||
@@ -29,12 +29,12 @@ public class MCTSAI4<T extends TurnBasedGame<T>> extends MCTSAI<T> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MCTSAI4<T> deepCopy() {
|
||||
return new MCTSAI4<>(this);
|
||||
public MCTSAI4 deepCopy() {
|
||||
return new MCTSAI4(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMove(T game) {
|
||||
public long getMove(TurnBasedGame game) {
|
||||
for (int i = 0; i < threads; i++) {
|
||||
threadRoots[i] = findOrResetRoot(threadRoots[i], game);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user