1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đề tài game Cờ Caro môn Trí tuệ nhân tạo

11 1,6K 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 386,73 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

 Trong bài toán cờ tướng:  Trạng thái ban đầu là trạng thái bàn cơ hai bên khi bắt đầu chơi..  Bảng đánh giá giá trị theo vị trí của từng quân  Hàm lượng giá của chương trình sử dụn

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIÊ ̣N CÔNG NGHÊ ̣ THÔNG TIN VÀ TRUYỀN THÔNG

*

BÁO CÁO MÔN HỌC

TRÍ TUÊ ̣ NHÂN TẠO

Đề tài: Chương trı̀nh trò chơi cờ tướng

sử du ̣ng giải thuâ ̣t cắt tı̉a α-β

Giảng viên: Nguyễn Nhâ ̣t Quang

Nhóm sinh viên thực hiê ̣n:

1 Trần Văn Thành 20133560 CNTT-TT 2.04

2 Đă ̣ng Bá Tú 20134472 CNTT-TT 2.01

3 Vũ Thi ̣ Nga 20132741 CNTT-TT 2.04

Hà Nô ̣i

Ngày 15 tháng 11 năm 2015

Trang 2

LỜI MỞ ĐẦU

Trı́ tuê ̣ nhân ta ̣o (hay AI: Articifial Intelligence) là mô ̣t ngành khoa ho ̣c ngày càng phát triển ma ̣nh mẽ và có ứng du ̣ng rô ̣ng rãi trong cuô ̣c sống Rõ ràng máy tı́nh với

đô ̣ thông minh nhất đi ̣nh có ảnh hưởng không nhỏ đến cuô ̣c sống ngày nay và trong tương lai phát triển của văn minh nhân loa ̣i Mô ̣t trong những ứng du ̣ng có thể kể đến của AI đó là viê ̣c xây dựng, phát triển các trò chơi đối kháng Cờ tướng cũng là mô ̣t trong số đó

Cờ tướng có nguồn gốc từ Trung Quốc, là trò chơi trı́ tuê ̣ dành cho hai người, cùng với cờ vua trở thành hai loa ̣i cờ phổ biến nhất trên thế giới

Để tı̀m hiểu sâu hơn về AI nói chung cũng như các kı̃ thuâ ̣t tı̀m kiếm nói riêng, chúng em quyết đi ̣nh lựa cho ̣n đề tài: “Chương trı̀nh trò chơi cờ tướng sử du ̣ng giải thuâ ̣t cắt tı̉a α-β”

Do thời gian ha ̣n he ̣p cũng như viê ̣c thiếu nhiều kı̃ năng trong xây dựng, thiết kế phần mềm cũng như những hiểu biết về AI, đề tài của chúng em vẫn còn nhiều ha ̣n chế Rất mong nhâ ̣n đươ ̣c sư ̣ đóng góp ý kiến của thầy và các ba ̣n để đề tài ngày càng hoàn thiê ̣n hơn

Trang 3

MỤC LỤC

I Giới thiệu mô tả bài toán thực tế………

II Phương pháp giải quyết bài toán………

III Các tài nguyên, dữ liệu sử dụng từ bên ngoài………

IV Các vấn đề gặp phải………

V Phương pháp giải quyết………

VI Đánh giá………

VII Ý tưởng cải tiến………

Trang 4

NỘI DUNG

I Giới thiê ̣u, mô tả bài toán thực tế

Cờ tướng là loa ̣i cờ diễn ra giữa hai người chơi Xét mô ̣t ván cờ, 2 người chơi lần lươ ̣t thay phiên nhau đi các quân cờ trên bàn cờ sao cho phù hơ ̣p với luâ ̣t chơi môn cờ tướng để nhằm chiếu tướng đối phương và dành chiến thắng Bài toán đă ̣t ra là cần xây dựng mô ̣t chương trı̀nh để máy tı́nh có thể tự đô ̣ng chơi cờ, thi đấu với đối thủ là con người, đảm bảo chất lươ ̣ng nước đi cũng như chi phı́ vı̀ thời gian

Chương trı̀nh chơi cờ có các chức năng sau:

- Ta ̣o môi trường là giao diê ̣n bàn cờ và các quân cờ cho 2 đối thủ người chơi và máy tı́nh

- Máy tı́nh sinh nước đi tự đô ̣ng khi đến lươ ̣t đảm bảo đúng luâ ̣t chơi bằng viê ̣c đánh giá điểm khi đi thử từng quân cờ, lấy điểm quân cờ đa ̣t giá tri ̣ lớn nhất và thư ̣c hiê ̣n nước đi đó

- Sau đó đến lươ ̣t người chơi thực hiê ̣n nước đi của mı̀nh

- Chương trı̀nh tiếp tu ̣c lă ̣p la ̣i như vâ ̣y đến khi người chơi thoát chương trı̀nh hoă ̣c xác đi ̣nh đươ ̣c người thắng cuô ̣c

II Phương pháp giải quyết bài toán

Trò chơi đươ ̣c biểu diễn trong mô ̣t không gian tra ̣ng thái Nút gốc biểu diễn tra ̣ng thái bắt đầu, mỗi nước đi sẽ biến đổi tra ̣ng thái hiê ̣n hành thành mô ̣t tra ̣ng

Trang 5

thái mới Các tra ̣ng thái bàn cờ khác nhau đươ ̣c biểu diễn thành mô ̣t cây trò chơi, chương trı̀nh tiến hành tı̀m kiếm trên cây để tı̀m nước đi tốt nhất

Chương trı̀nh sẽ đươ ̣c dự tı́nh trước mô ̣t đô ̣ sâu lớp của cây tı̀m kiếm, các tra ̣ng thái trên mức đó đươ ̣c đánh giá theo mô ̣t hàm heuristic Chương trı̀nh sử du ̣ng giải thuâ ̣t cắt tı̉a α-β.Ý tưởng của tı̀m kiếm α-β đó là thay vı̀ tı̀m kiếm toàn bô ̣ không gian đến mô ̣t đô ̣ sâu cố đi ̣nh, tı̀m kiếm α-β thực hiê ̣n theo kiểu tı̀m kiếm sâu Giá tri ̣ α liên quan đến các nút MAX và có khuynh hướng không bao giờ giảm, trong khi giá tri ̣ β la ̣i liên quan đến các nút MIN và có khuynh hướng không bao giờ tăng

Hai luâ ̣t cắt tı̉a dựa trên các giá tri ̣ α, β:

- Quá trı̀nh tı̀m kiếm có thể kết thúc bên dưới mô ̣t nút MIN nào có giá tri ̣ β nhỏ hơn hoă ̣c bằng giá tri ̣ α của mô ̣t nút cha MAX bất kı̀ nào đó

- Quá trı̀nh tı̀m kiếm có thể kết thúc bên dưới mô ̣t nút MAX nào có giá tri ̣ α nhỏ hơn hoă ̣c bằng giá tri ̣ β của mô ̣t nút cha MIN bất kı̀ nào đó

Giải thuâ ̣t giúp tı̉a bớt nhánh trên cây trò chơi, từ đó tăng hiê ̣u quả tı̀m kiếm

Ta xét chi tiết phương pháp đươ ̣c dùng để giải quyết bài toán:

1 Biểu diễn các quân cờ

- Ta xây dư ̣ng các lớp biểu diễn cho từng quân cờ

- Trong mỗi lớp ta sẽ ta ̣o mô ̣t hàm getValue() trả la ̣i giá tri ̣ của quân đó Bên

ca ̣nh đó, ở các lớp Cannon, Chariot, Horse, Soldier, ta dùng mô ̣t mảng lưu

la ̣i giá tri ̣ khác nhau ta ̣i mỗi vi ̣ trı́ của chúng trên bàn cờ Các giá tri ̣ dùng để phu ̣c vu ̣ cho viê ̣c xây dư ̣ng hàm lươ ̣ng giá sau này

- Dư ̣a trên luâ ̣t chơi của môn cờ tướng, trong mỗi lớp ta cũng xây dựng hàm để kiểm tra các nước đi hơ ̣p lê ̣ cho từng quân cờ, đảm bảo đươ ̣c vi ̣ trı́ giới

ha ̣n, tı́nh bi ̣ chă ̣n của mô ̣t số quân

2 Hàm lươ ̣ng giá thế cờ

Trang 6

Như đã trı̀nh bày ở trên, trong mỗi lớp biểu diễn quân cờ sẽ có hàm để trả

la ̣i giá tri ̣ của quân cờ đó Để tı́nh giá tri ̣ của mô ̣t thế cờ, ta thiết kế mô ̣t hàm lươ ̣ng giá đơn giản Đó là, lấy tổng điểm quân mı̀nh trừ đi tổng điểm quân đối phương

Giá tri ̣ của các quân cờ đươ ̣c tı́nh dựa theo cách tı́nh giá tri ̣ trong tài liê ̣u

“Computer Chinese Chess”

Dưới đây là giá tri ̣ mă ̣c đi ̣nh của các quân cờ:

General Chariot Cannon Elephant Horse Advisor Soldier

Giá tri ̣ vi ̣ trı́ của các quân:

Cannon: int[][]=

{6, 4, 0, -10, -12, -10, 0, 4, 6},

{2, 2, 0, -4, -14, -4, 0, 2, 2},

{2, 2, 0, -10, -8, -10, 0, 2, 2},

{0, 0, -2, 4, 10, 4, -2, 0, 0},

{0, 0, 0, 2, 8, 2, 0, 0, 0},

{-2, 0, 4, 2, 6, 2, 4, 0, -2},

{0, 0, 0, 2, 4, 2, 0, 0, 0},

{4, 0, 8, 6, 10, 6, 8, 0, 4},

{0, 2, 4, 6, 6, 6, 4, 2, 0},

{0, 0, 2, 6, 6, 6, 2, 0, 0}

Chariot: int[][]=

{14, 14, 12, 18, 16, 18, 12, 14, 14}, {16, 20, 18, 24, 26, 24, 18, 20, 16}, {12, 12, 12, 18, 18, 18, 12, 12, 12}, {12, 18, 16, 22, 22, 22, 16, 18, 12}, {12, 14, 12, 18, 18, 18, 12, 14, 12}, {12, 16, 14, 20, 20, 20, 14, 16, 12}, {6, 10, 8, 14, 14, 14, 8, 10, 6}, {4, 8, 6, 14, 12, 14, 6, 8, 4}, {8, 4, 8, 16, 8, 16, 8, 4, 8}, {-2, 10, 6, 14, 12, 14, 6, 10, -2}};

Trang 7

Horse: int[][]=

{4, 8, 16, 12, 4, 12, 16, 8, 4},

{4, 10, 28, 16, 8, 16, 28, 10, 4},

{12, 14, 16, 20, 18, 20, 16, 14, 12},

{8, 24, 18, 24, 20, 24, 18, 24, 8},

{6, 16, 14, 18, 16, 18, 14, 16, 6},

{4, 12, 16, 14, 12, 14, 16, 12, 4},

{2, 6, 8, 6, 10, 6, 8, 6, 2},

{4, 2, 8, 8, 4, 8, 8, 2, 4},

{0, 2, 4, 4, -2, 4, 4, 2, 0},

{0, -4, 0, 0, 0, 0, 0, -4, 0}

Soldier: int[][]=

{0, 3, 6, 9, 12, 9, 6, 3, 0}, {18, 36, 56, 80, 120, 80, 56, 36, 18} {14, 26, 42, 60, 80, 60, 42, 26, 14} {10, 20, 30, 34, 40, 34, 30, 20, 10}, {6, 12, 18, 18, 20, 18, 18, 12, 6}, {2, 0, 8, 0, 8, 0, 8, 0, 2},

{0, 0, -2, 0, 4, 0, -2, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0}

3 Giải thuâ ̣t tı̀m kiếm α-β

 Là một giải thuật cho bài toán tìm kiếm có đối thủ dựa trên ý tưởng về chiến lược tối ưu cho mỗi nước đi tiếp theo của mỗi bên

 Có sử dụng tri thức bổ sung giúp cắt một bộ phận thuộc tập khả năng mà không có khả năng tạo ra nước đi tốt hơn nước khác

 Trong bài toán cờ tướng:

 Trạng thái ban đầu là trạng thái bàn cơ hai bên khi bắt đầu chơi

 Các toán tử là các nước đi hợp lệ

 Trạng thái kết thúc là tính thế khi một trong hai bên bị mất tướng

III Các phương pháp, tư liệu sử dụng từ bên ngoài

 -Tư liệu tham khảo từ bài viết của Shi-Jim Yen, Jar-hang Chen,Tai-Ning Yang, Shun-Chin Hsu (Taipei, Taiwan);

(http://web.csie.ndhu.edu.tw/sjyen/Papers/2004CCC.pdf)

 Bảng đánh giá giá trị ban đầu của các quân

Trang 8

 Bảng đánh giá giá trị theo vị trí của từng quân

 Hàm lượng giá của chương trình sử dụng ý tưởng của tài liệu đã nên

đó là sử dụng các giá trị vị trí và chỉ số của quân mà đánh giá giá trị ước lượng của thế cờ

 Ngoài ra các thư viện sử dụng trong chương trình gồm có:

 Các gói thư viện chuẩn do java cung cấp

Trang 9

IV Những vấn đề khó khăn gặp phải

 Trong thời gian chấp nhận được, thuật toán cắt tỉa chỉ có độ sâu tối đa thấp (<=4)

 Chương trình sử dụng quá nhiều bộ nhớ RAM (> 700MB)

 Sử dụng hàm lượng giá chưa tốt dẫn đến chất lượng các nước đánh của máy tính chưa cao

 Vấn đề đọc ghi dữ liệu đồng thời (Concurrent Modification)

 Vấn đề khi chạy đa luồng do chưa sử dụng tốt việc chia công việc cho các luồng và phải phụ thuộc máy ảo Java xử lý với luồng

V Phương pháp giải quyết

 Sử dụng cấu trúc dữ liệu hàng đợi ưu tiên để sắp xếp các trạng thái bàn cờ theo giá trị ước lượng tại mỗi độ sâu trước khi tìm kiếm ở độ sâu thấp hơn

 Tối ưu bộ nhớ thông qua việc : không tạo ra bộ nhớ mới để lưu trữ cả trạng thái của bàn cờ mà chỉ lưu trữ vết thay đổi của trạng thái bàn cờ mức hiện tại

so với mức cha

 Tăng tốc độ chương trình bằng cách tính giá trị ước lượng của thế cờ ngay tại lúc thay đổi sang thế cờ khác mà không phải tính tất cả tại lúc so sánh

 Hàm lượng giá có sử dụng việc tăng giá trị ước lượng hơn khi là nước chiếu

và khi một nước cờ có khả năng bắt quân đối thủ

VI Đánh giá về chương trình

Trang 10

 Ưu điểm:

 Đã có sự thông minh cơ bản của trò chơi cờ tướng

 Với độ sâu cắt tỉa là 6 chương trình đủ thông minh để chơi thắng người chơi có trình độ trung bình

 Hoàn toàn có thể chơi với người chơi và không gặp bug

 Nhược điểm:

 Độ sâu của cắt tỉa chưa bằng với phần lớn các chương trình đánh cờ tướng hiện tại

 Cấu trúc lưu trữ của dữ liệu trong chương trình chưa tối ưu nên chương trình vẫn còn yêu cầu nhiều bộ nhớ

 Hàm ước lượng trạng thái đang còn cơ bản

 Một số kết quả đạt được của chương trình

Trang 11

VII Hướng phát triển

 Tối ưu hàm lượng giá

 Tạo cơ sở dữ liệu cho các nước đi đầu

 Tăng tầm quan trọng của các thế cờ tại các nước cuối

 Sử dụng cách thức lưu trữ trạng thái bàn cờ khác (qua giá trị số )

 Thực hiện việc tính toán song song hàm cắt tỉa

Ngày đăng: 23/12/2015, 23:19

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w