示例#1
0
 def play_valid_move(self, position, move_probs):
     for move in sorted_moves(move_probs):
         if go.is_eyeish(position.board, move):
             continue
         candidate_pos = position.play_move(move, mutate=True)
         if candidate_pos is not None:
             return candidate_pos
     return position.pass_move(mutate=True)
 def play_valid_move(self, position, move_probs):
     for move in sorted_moves(move_probs):
         if go.is_eyeish(position.board, move):
             continue
         try:
             candidate_pos = position.play_move(move, mutate=True)
         except go.IllegalMove:
             continue
         else:
             return candidate_pos
     return position.pass_move(mutate=True)
示例#3
0
文件: strategies.py 项目: brilee/MuGo
 def play_valid_move(self, position, move_probs):
     for move in sorted_moves(move_probs):
         if go.is_eyeish(position.board, move):
             continue
         try:
             candidate_pos = position.play_move(move, mutate=True)
         except go.IllegalMove:
             continue
         else:
             return candidate_pos
     return position.pass_move(mutate=True)
 def test_is_eyeish(self):
     board = load_board('''
         .XX...XXX
         X.X...X.X
         XX.....X.
         ........X
         XXXX.....
         OOOX....O
         X.OXX.OO.
         .XO.X.O.O
         XXO.X.OO.
     ''')
     B_eyes = pc_set('A2 A9 B8 J7 H8')
     W_eyes = pc_set('H2 J1 J3')
     not_eyes = pc_set('B3 E5')
     for be in B_eyes:
         self.assertEqual(go.is_eyeish(board, be), BLACK, str(be))
     for we in W_eyes:
         self.assertEqual(go.is_eyeish(board, we), WHITE, str(we))
     for ne in not_eyes:
         self.assertEqual(go.is_eyeish(board, ne), None, str(ne))
示例#5
0
文件: test_go.py 项目: lygztq/MuGo
 def test_is_eyeish(self):
     board = load_board('''
         .XX...XXX
         X.X...X.X
         XX.....X.
         ........X
         XXXX.....
         OOOX....O
         X.OXX.OO.
         .XO.X.O.O
         XXO.X.OO.
     ''')
     B_eyes = pc_set('A2 A9 B8 J7 H8')
     W_eyes = pc_set('H2 J1 J3')
     not_eyes = pc_set('B3 E5')
     for be in B_eyes:
         self.assertEqual(go.is_eyeish(board, be), BLACK, str(be))
     for we in W_eyes:
         self.assertEqual(go.is_eyeish(board, we), WHITE, str(we))
     for ne in not_eyes:
         self.assertEqual(go.is_eyeish(board, ne), None, str(ne))
示例#6
0
 def test_is_eyeish(self):
     board = utils_test.load_board('''
   .XX...XXX
   X.X...X.X
   XX.....X.
   ........X
   XXXX.....
   OOOX....O
   X.OXX.OO.
   .XO.X.O.O
   XXO.X.OO.
 ''')
     B_eyes = coords_from_kgs_set('A2 A9 B8 J7 H8')
     W_eyes = coords_from_kgs_set('H2 J1 J3')
     not_eyes = coords_from_kgs_set('B3 E5')
     for be in B_eyes:
         self.assertEqual(go.is_eyeish(utils_test.BOARD_SIZE, board, be),
                          BLACK, str(be))
     for we in W_eyes:
         self.assertEqual(go.is_eyeish(utils_test.BOARD_SIZE, board, we),
                          WHITE, str(we))
     for ne in not_eyes:
         self.assertEqual(go.is_eyeish(utils_test.BOARD_SIZE, board, ne),
                          None, str(ne))
示例#7
0
 def step(self, pos_cur, epsilon):
   state = features.extract_features(pos_cur)
   move_probs = self.sess.run(self.action_logits, feed_dict={self.observation_placeholder: state[None, :]})[0]
   move_probs = move_probs.reshape([go.N, go.N])
   
   coords = [(a, b) for a in range(go.N) for b in range(go.N)]
   if random.random() < epsilon :
     random.shuffle(coords)
   else:
     coords = sorted(coords, key=lambda c: move_probs[c], reverse=True)
   for move in coords:
     if go.is_eyeish(pos_cur.board, move):
       continue
     try:
       pos_next = pos_cur.play_move(move, mutate=False)
     except go.IllegalMove:
       continue
     else:
       return [pos_next, state, move[0]*go.N+move[1], 0]
   return None
def is_move_reasonable(position, move):
    return position.is_move_legal(move) and go.is_eyeish(
        position.board, move) != position.to_play
def is_move_reasonable(position, move):
    # A move is reasonable if it is legal and doesn't fill in your own eyes.
    return position.is_move_legal(move) and go.is_eyeish(
        position.board, move) != position.to_play
示例#10
0
文件: strategies.py 项目: lygztq/MuGo
def is_move_reasonable(position, move):
    # A move is reasonable if it is legal and doesn't fill in your own eyes.
    return position.is_move_legal(move) and go.is_eyeish(position.board, move) != position.to_play
示例#11
0
文件: strategies.py 项目: brilee/MuGo
def is_move_reasonable(position, move):
    return position.is_move_legal(move) and go.is_eyeish(position.board, move) != position.to_play