import os import torch from Games.TicTacToe.TicTacToe import TicTacToe from Games.TicTacToe.TicTacToeNN import ResNet from Alpha_Zero_Parallel import Alpha_Zero GAME = "TicTacToe" args = { "MODEL_PATH" : os.path.join(os.getcwd(), "Games", GAME, "models_n_optimizers"), "SAVE_GAME_PATH" : os.path.join(os.getcwd(), "Games", GAME, "games"), "EXPLORATION_CONSTANT" : 2, "TEMPERATURE" : 2, "DIRICHLET_EPSILON" : 0.25, "DIRICHLET_ALPHA" : 0.3, "ROOT_RANDOMNESS": True, "ADVERSARIAL" : True, "NO_OF_SEARCHES" : 800, "NO_ITERATIONS" : 1, "SELF_PLAY_ITERATIONS" : 3000, "PARALLEL_PROCESS" : 500, "EPOCHS" : 1, "BATCH_SIZE" : 128, "MODEL_CHECK_GAMES" : 200, "WIN_RATIO_FOR_SAVING": 0.5, } game = TicTacToe() torch.backends.cudnn.enabled = False device = torch.device("cuda" if torch.cuda.is_available() else "cpu") print(device, "in use") model = ResNet(game, 9, 128, device) optimizer = torch.optim.Adam(model.parameters(), lr=0.001, weight_decay = 0.0001) state = game.initialise_state() alpha_zero = Alpha_Zero(game, args, model, optimizer) alpha_zero.learn()