Chuyển đến nội dung chính

Giới thiệu về Wukong Xiangqi

Giới thiệu

Wukong Xiangqi là một engine cờ tướng (Xiangqi) tối giản được viết hoàn toàn bằng ngôn ngữ C thuần túy bởi tác giả Maksim Korzh. Dự án hỗ trợ giao thức UCCI (Universal Chinese Chess Interface), cho phép kết nối dễ dàng với các giao diện (GUI) cờ tướng phổ biến hiện nay.

Kiến trúc bàn cờ mẫu (Board Representation)

Wukong sử dụng mảng một chiều dựa trên hệ thống tọa độ mở rộng 11x14 để biểu diễn bàn cờ. Cách tiếp cận này giúp kiểm tra quân cờ đi ra ngoài biên một cách tự nhiên nhờ các ô đệm (Off-board).

Dưới đây là cách định nghĩa các quân cờ bằng mã số nguyên trong mã nguồn mẫu:

// Định nghĩa hằng số cho các quân cờ
enum {
    COLOR_EMPTY,
    RED_PAWN, RED_ADVISOR, RED_BISHOP, RED_KNIGHT, RED_ROOK, RED_CANNON, RED_KING,
    BLACK_PAWN, BLACK_ADVISOR, BLACK_BISHOP, BLACK_KNIGHT, BLACK_ROOK, BLACK_CANNON, BLACK_KING
};

Định hướng áp dụng Machine Learning (ML) tương lai

Cấu trúc tìm kiếm Alpha-Beta kết hợp với hàm đánh giá tĩnh hiện tại của Wukong dựa trên mô hình toán học tuyến tính tính điểm quân số và vị trí:

\[ f(s) = \sum_{p \in Red} (V_p + P_p(x, y)) - \sum_{p \in Black} (V_p + P_p(x, y)) \]

Từ nền tảng bàn cờ mẫu và logic sinh nước đi (Move Generation) có sẵn này, bạn có thể dễ dàng thay thế hoặc cải tiến bằng các kỹ thuật Machine Learning trong tương lai:

  • Học máy giám sát (Supervised Learning): Sử dụng dữ liệu các biên bản ván đấu (PGN) của các kỳ thủ để huấn luyện một mạng thần kinh nhân tạo (Neural Network) thay thế cho hàm đánh giá tĩnh $f(s)$ truyền thống, giúp AI tự nhận biết thế trận tốt xấu một cách thông minh hơn.
  • Học tăng cường (Reinforcement Learning): Áp dụng cơ chế tự chơi (Self-play) tương tự như kiến trúc AlphaZero để engine tự tích lũy kinh nghiệm, tối ưu hóa bảng vị trí và chiến thuật di chuyển quân mà không cần đến sự can thiệp thủ công từ con người.

Xem toàn bộ mã nguồn dự án tại: GitHub maksimKorzh/wukong-xiangqi

Nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.