-
Notifications
You must be signed in to change notification settings - Fork 0
/
play_one_match.py
43 lines (38 loc) · 1.33 KB
/
play_one_match.py
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import time
import numpy as np
import random
import os
from minesweeper_environment import MinesweeperEnvironment
from minesweeper import MinesweeperCore
from agents.csp import MinesweeperAgent
from agents.L4MSAgent import L4MSAgent
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
# Set game configurations. CSP can play in any board size. The remaining agents can only play in 8x8 board.
size = 8
bombs = 10
game = MinesweeperEnvironment(size, size, bombs)
# Choose an agent
agent_name = 'h_csp' # h_csp (heuristic csp), nh_csp (non-heuristic csp) or l4ms
if agent_name == 'h_csp':
heuristic = True
agent = MinesweeperAgent(size, bombs, heuristic)
elif agent_name == 'nh_csp':
heuristic = False
agent = MinesweeperAgent(size, bombs, heuristic)
elif agent_name == 'l4ms':
agent = L4MSAgent(size, bombs)
model = 'results/best_model.hdf5'
if os.path.exists(model):
print('Loading weights from previous learning session.')
agent.load(model)
else:
print('No weights found from previous learning session.')
while game.is_finished() != True:
action = agent.act(game.get_state())
next_state = game.step(action[0], action[1])
game.print_board()
print("Played", action)
state = next_state
time.sleep(1)
print("Open percentage:", game.get_open_percentage()*100, "%")
game.print_bomb_positions()