Beispiel #1
0
 def test_flatten(self):
     self.assertEqual(utils.flatten_coords((0, 0)), 0)
     self.assertEqual(utils.flatten_coords((0, 3)), 3)
     self.assertEqual(utils.flatten_coords((3, 0)), 27)
     self.assertEqual(utils.unflatten_coords(27), (3, 0))
     self.assertEqual(utils.unflatten_coords(10), (1, 1))
     self.assertEqual(utils.unflatten_coords(80), (8, 8))
     self.assertEqual(utils.flatten_coords(utils.unflatten_coords(10)), 10)
     self.assertEqual(utils.unflatten_coords(utils.flatten_coords((5, 4))), (5, 4))
Beispiel #2
0
 def test_flatten(self):
     self.assertEqual(utils.flatten_coords((0, 0)), 0)
     self.assertEqual(utils.flatten_coords((0, 3)), 3)
     self.assertEqual(utils.flatten_coords((3, 0)), 27)
     self.assertEqual(utils.unflatten_coords(27), (3, 0))
     self.assertEqual(utils.unflatten_coords(10), (1, 1))
     self.assertEqual(utils.unflatten_coords(80), (8, 8))
     self.assertEqual(utils.flatten_coords(utils.unflatten_coords(10)), 10)
     self.assertEqual(utils.unflatten_coords(utils.flatten_coords((5, 4))), (5, 4))
def select_weighted_random(position, move_probabilities):
    selection = random.random()
    cdf = move_probabilities.cumsum()
    selected_move = utils.unflatten_coords(
        cdf.searchsorted(selection, side="right"))
    if is_move_reasonable(position, selected_move):
        return selected_move
    else:
        # inexpensive fallback in case an illegal move is chosen.
        return select_most_likely(position, move_probabilities)
Beispiel #4
0
def select_weighted_random(position, move_probabilities):
    selection = random.random()
    cdf = move_probabilities.cumsum()
    selected_move = utils.unflatten_coords(
        cdf.searchsorted(selection, side="right"))
    if is_move_reasonable(position, selected_move):
        return selected_move
    else:
        # inexpensive fallback in case an illegal move is chosen.
        return select_most_likely(position, move_probabilities)
Beispiel #5
0
def sorted_moves(probability_array):
    #coords = [(a, b) for a in range(go.N) for b in range(go.N)]
    coords = [i for i in range(go.N * go.N)]
    coords.sort(key=lambda c: probability_array[c], reverse=True)
    coors = list(map(lambda x: utils.unflatten_coords(x), coords))
    return coors