def get_possible_nxt_prms(self, params=None): if params is None: params = self.get_all_params() count = 0 nxt_prms = {} for wk_r, wk_c, wr_r, wr_c, bk_r, bk_c,white_plays in params: board = ChessBoard(wk=King(wk_r, wk_c, Piece.WHITE), wr=Rook(wr_r, wr_c, Piece.WHITE), bk=King(bk_r, bk_c, Piece.BLACK), white_plays=white_plays) if not board.valid: continue nxt_pos = {} for nxt_moves in board.get_possible_moves(): q = 0 if nxt_moves.state == ChessBoard.BLACK_KING_CHECKMATE: q = 100 elif nxt_moves.state == ChessBoard.DRAW: q = -100 nxt_pos[nxt_moves.board_id()] = q nxt_prms[(wk_r,wk_c,wr_r,wr_c,bk_r,bk_c,white_plays)] = nxt_pos count += 1 if count % 1000 == 0: print (count) return nxt_prms
def learn(self, iterations): for i in range(0, iterations): board = ChessBoard.get_random_chessboard() self.parameter_set.calculate_parameters(board) rank = self.parameter_set.learning_move() if self.parameter_set.rank_higher(self.knowledge, rank): self.knowledge = self.parameter_set.update_knowledge(self.knowledge)
if __name__ == '__main__': draw = 0 win = 0 total = 1000.0 lit = [] for t in range(0,10): draw = 0 win = 0 for i in range(0,int(total)): board = ChessBoard.get_random_chessboard() if i % 1000 == 0: print i if play_random(board) is ChessBoard.DRAW: draw += 1 else: win += 1 lit.append((win,draw)) print lit print np.mean(np.array(lit)) print np.std(np.array(lit))