mikgnort
04-03-2013, 11:21 PM
Chào các bạn.
Mình thấy trong diễn đàn cũng có nhiều cao thủ IT nên muốn tham khảo thêm ít kiến thức về thuật toán để máy đánh cờ với người.
Hiện mình đang làm đồ án chơi cờ tướng. Phần AI của mình hiện tại đang sử dụng thuật toán Negascout (lúc đầu là alphabeta mà nó chạy lâu quá, tuy nhiên theo mình thấy thì negascout có vài nước đi không bằng alphabeta dù thời gian tốt hơn). Các hỗ trợ là mảng pieceValue lưu giá trị "cứng" của 7 quân cờ, 14 mảng positionValue lưu giá trị tại vị trí [x,y] trên bàn cờ của từng loại quân cờ, lớp openingValue chứa thông tin đánh giá thế cờ trong khai cuộc (hiện mình chỉ đánh giá cao thế pháo đầu và bình phong mã). Ngoài ra còn có bàng hoán vị (Transposition Table) để khỏi tính lại vài giá trị (mình dùng Dictionary trong C#)
---------
Qua test thử vài đối thử (trình cũng tạm) thì đánh cũng khá, có những nước đi khó, thí quân hợp lý. Tuy nhiên, vấn đề của mình là độ sâu và thời gian xử lý. Máy mình đang xài là CP5 core i5 thế hệ 3 4 cores. Ở độ sâu 4 máy phải mất trung bình 3 - 10 giây để đi, nước nào lâu thì phải tới gần 1 phút. Còn độ sâu 5 thì là một thảm họa.
Mình muốn hỏi là có cách nào để cải thiện thuật toán của mình không (vì mình thấy các bạn toàn chơi độ sâu 11-12 @@), các bạn có thể chia sẻ thêm? Ngoài ra mình cũng muốn hỏi thêm về book - cấu trúc và cách sử dụng? Theo mình hiểu thì book là các ván đấu được nạp vào để máy đánh, ko bik đúng không ...
Mong được mọi người chỉ giáo, chân thành cảm ơn ^^
Mình thấy trong diễn đàn cũng có nhiều cao thủ IT nên muốn tham khảo thêm ít kiến thức về thuật toán để máy đánh cờ với người.
Hiện mình đang làm đồ án chơi cờ tướng. Phần AI của mình hiện tại đang sử dụng thuật toán Negascout (lúc đầu là alphabeta mà nó chạy lâu quá, tuy nhiên theo mình thấy thì negascout có vài nước đi không bằng alphabeta dù thời gian tốt hơn). Các hỗ trợ là mảng pieceValue lưu giá trị "cứng" của 7 quân cờ, 14 mảng positionValue lưu giá trị tại vị trí [x,y] trên bàn cờ của từng loại quân cờ, lớp openingValue chứa thông tin đánh giá thế cờ trong khai cuộc (hiện mình chỉ đánh giá cao thế pháo đầu và bình phong mã). Ngoài ra còn có bàng hoán vị (Transposition Table) để khỏi tính lại vài giá trị (mình dùng Dictionary trong C#)
---------
Qua test thử vài đối thử (trình cũng tạm) thì đánh cũng khá, có những nước đi khó, thí quân hợp lý. Tuy nhiên, vấn đề của mình là độ sâu và thời gian xử lý. Máy mình đang xài là CP5 core i5 thế hệ 3 4 cores. Ở độ sâu 4 máy phải mất trung bình 3 - 10 giây để đi, nước nào lâu thì phải tới gần 1 phút. Còn độ sâu 5 thì là một thảm họa.
Mình muốn hỏi là có cách nào để cải thiện thuật toán của mình không (vì mình thấy các bạn toàn chơi độ sâu 11-12 @@), các bạn có thể chia sẻ thêm? Ngoài ra mình cũng muốn hỏi thêm về book - cấu trúc và cách sử dụng? Theo mình hiểu thì book là các ván đấu được nạp vào để máy đánh, ko bik đúng không ...
Mong được mọi người chỉ giáo, chân thành cảm ơn ^^