コード例 #1
0
def test_best_ucb():
    root = Node(None,score = 30, times_visited = 2 )
    test_node = Node(None,score = 20, times_visited = 1)
    test_node.parent_node = root
    test_node_two = Node(None, score = 10, times_visited = 1)
    test_node_two.parent_node = root
    root.children.append(test_node)
    root.children.append(test_node_two)
    assert best_ucb(root) == test_node
コード例 #2
0
def test_constructor_defaults():
    move = None
    new_node = Node(move)
    assert new_node.score == 0
    assert new_node.times_visited == 0
    assert new_node.board.board == [
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '?', '?', '?', '?', '?', '?']]
コード例 #3
0
def test_add_node():
    new_node = Node(None)
    #next line handled by get all children
    new_node.children = []
    new_child_node = Node(None)
    new_node.add_child(new_child_node)
    assert new_child_node in new_node.children  
コード例 #4
0
def test_fully_expanded_false():
    root = Node(None)
    root.children = []
    node1 = Node(None, times_visited = 50)
    node2 = Node(None, times_visited = 0)
    node3 = Node(None, times_visited = 734)
    node4 = Node(None, times_visited = 42)
    root.children.append(node1)
    root.children.append(node2)
    root.children.append(node3)
    root.children.append(node4)
    assert fully_expanded(root) == False
コード例 #5
0
def test_pick_unvisited():
    root = Node(None)
    root.children = []
    node1 = Node(None, times_visited = 50)
    node2 = Node(None, times_visited = 0)
    node3 = Node(None, times_visited = 734)
    node4 = Node(None, times_visited = 0)
    root.children.append(node1)
    root.children.append(node2)
    root.children.append(node3)
    root.children.append(node4)
    assert pick_unvisited(root) in [node2,node4]
コード例 #6
0
def test_best_move():
    root = Node(None)
    root.children = []

    node1 = Node(None, times_visited = 50)
    node1.column = 0

    node2 = Node(None, times_visited = 100)
    node2.column = 1

    node3 = Node(None, times_visited = 734)
    node3.column = 2

    node4 = Node(None, times_visited = 42)
    node4.column = 3

    root.children.append(node1)
    root.children.append(node2)
    root.children.append(node3)
    root.children.append(node4)

    assert best_move(root) == 2
コード例 #7
0
def test_is_root_false():
    root = Node(None)
    node1 = Node(None, parent_node=root)
    assert is_root(node1) == False
コード例 #8
0
def test_is_root_true():
    root = Node(None)
    assert is_root(root) == True
コード例 #9
0
def test_traverse():
    root = Node(None,score = 30, times_visited = 2 )
    root.children = []

    test_node = Node(None,score = 20, times_visited = 1)
    test_node.parent_node = root
    test_node.children = []
    root.children.append(test_node)

    test_node_1 = Node(None, times_visited = 1)
    test_node_2 = Node(None, times_visited = 1)
    test_node_3 = Node(None, times_visited = 0)
    test_node_4 = Node(None, times_visited = 1)

    test_node.children.append(test_node_1)
    test_node.children.append(test_node_2)
    test_node.children.append(test_node_3)
    test_node.children.append(test_node_4)

    test_node_two = Node(None, score = 10, times_visited = 1)
    test_node_two.parent_node = root
    root.children.append(test_node_two)

    assert traverse(root) == test_node_3
コード例 #10
0
import pytest
from board import Board
from monte_carlo import Node, ucb_scoring, traverse, best_move, best_ucb, fully_expanded, pick_unvisited, traverse, rollout_policy, rollout, is_root, monte_carlo_tree_search

board = Board()
board.board = [
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '1', '?', '?', '?', '?', '?']]
board_move = 1
board.last_placed_row = 5
board.last_placed_column = 1
board_node = Node(board_move, board)

# Node Tests
def test_constructor_defaults():
    move = None
    new_node = Node(move)
    assert new_node.score == 0
    assert new_node.times_visited == 0
    assert new_node.board.board == [
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '?', '?', '?', '?', '?', '?'],
        ['?', '?', '?', '?', '?', '?', '?']]