báo cáo môn trí tuê nhân tạo áp dụng minimax và cắt tỉa alpha-beta xây dựng game cờ tướng trên windows phone

20 2.8K 13
báo cáo môn trí tuê nhân tạo  áp dụng minimax và cắt tỉa alpha-beta xây dựng game cờ tướng trên windows phone

Đ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

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 TRÍ TUỆ NHÂN TẠO Ứng dụng Alpha-beta cắt tỉa xây dựng game cờ tướng GVHD: Thầy Phạm Văn Hải Nhóm thực hiện: 6 Lê Văn Thành 20102156 Lê Minh Quân 20102034 Tạ Văn Trường 20102404 Nguyễn Đức Thọ 20102258 Nguyễn Văn Thông 20102261 Nguyễn Trọng Hiển 20101533 Mục lục Phần 1: Tổng quan về các vấn đề liên quan 1. Giới thiệu về trò chơi cờ tướng Trò chơi cờ tướng là một trong những trò chơi thể thao trí tuệ hấp dẫn, được đưa vào thi đấu quốc tế. Cờ tướng có xuất xứ từ Trung Quốc và nhanh chóng được nhiều người chơi trên toàn thế giới. Cờ tướng cũng giống như các môn cờ khác là trò chơi đối kháng 2 người, người chơi sử dụng kĩ năng, tư duy chiến thuật để giành chiến thắng. Cờ tướng cũng là một loại cờ có nhiều chiến thuật, áp dụng nhiều tư duy nhất. Cờ tướng nhìn qua có vẻ giống cờ vua nhưng luật di chuyển và khống chế phạm vi của quân cờ được áp đặt lên, làm cho người chơi có thêm nhiều chiến thuật trong cách phòng ngự và tấn công. Bàn cờ tướng có kích thướng 9x10, ở thời điểm xuất phát 2 bên được phân cách bởi sông (còn gọi là “hà”), người chiếm được “hà” sẽ có nhiều lợi thế trong tấn công. Cờ tướng gồm 7 quân cờ chính: Tướng, Sĩ, Tượng, Xe, Pháo, Mã, Tốt. 2. Windows Phone và framework XNA 4.0 Hiện nay, điện thoại di động ngày càng phổ biến và tiện lợi, việc sở hữu 1 chiếc smartphone là rất dễ dàng. Các ứng dụng trên điện thoại có rất nhiều với mục đích giải trí, học tập… Nhóm quyết định xây dựng game cờ tướng trên nền tảng Windows Phone. Windows Phone (Windows Phone 7 Series) là hệ điều hành của Microsoft dành cho SmartPhone kế tục nền tảng Windows. Khác với Windows Mobile, Windows Phone tập trung vào sự phát triển Marketplace – nơi các nhà phát triển có thể cung cấp sản phẩm tới người dùng. Với Windows Phone 7, Microsoft đã phát triển giao diện người dùng mới mang tên Metro – tích hợp khả năng liên kết phần cứng với phần mềm của hãng thứ 3 một cách dễ dàng Sau đó là các phiên bản 7.1, 7.5, 7.8 và gần đây nhất là phiên bản Windows Phone 8.0 với nhiều tính năng thông minh hỗ trợ 2 Phần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta Pruning 2 Vì mới bắt đầu tìm hiểu và làm ứng dụng Windows Phone đầu tiên, nhóm đã quyết định lựa cho nền tảng Windows Phone 7.1 không quá mới như 8.0 chạy ổn định, và hỗ trợ nhiều hơn so với 7.0 Ứng dụng viết trên nền XNA 4.0 framwork chuyển cho lập trình game trên các loại hệ điều hành windows. Phần 2: Xây dựng game cờ tướng 1. Biểu đồ UseCase Figure 1: Biểu đồ Usecase 2. Tìm lớp và xác định trách nhiệm cho lớp Game cờ tướng gồm có: bàn cờ và các quân cờ trên bàn cờ. Quân cờ gồm 7 loại quân với cách di chuyển khác nhau, nhưng có nhiều thuộc tính chung của 1 quân cờ. Bàn cờ được hình thành từ các quân cờ, như vậy ta xây dựng lớp quân cờ kết tập nên bàn cờ. 7 quân cờ cụ thể lại được kết thừa từ lớp quân cờ này. Người chơi chơi game ở màn chơi -> xây dựng lớp Game Xây dựng thuật toán chạy AI -> lớp computer 3 Nhóm 63 Figure 2: biểu đồ lớp tổng quan Figure 3: biểu đồ lớp kết tập 4 Phần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta Pruning 4 3. Thiết kế chi tiết cho các lớp Figure 4: Biểu đồ lớp chi tiết Xác định nước đi kế tiếp cho các quân cờ Tại mỗi bàn cờ nhất định, chúng ta cần duyệt qua tất cả các cách đi của các quân cờ để tìm ra nước đi tối ưu tiếp theo. Muốn làm được điều đó ta cần biết đặc điểm và cách đi của từng quân cờ. Luật chơi cờ tướng cơ bản : 5 Nhóm 65 Luật di chuyển các quân cờ như sau: 1. Tướng: Mỗi nước đi một ô, đi ngang hoặc dọc. Tướng luôn ở trong phạm vi cung."Cung" gồm 4 hình vuông nhỏ được gạch đường chéo. 2. Sĩ: Đi chéo, mỗi nước một ô. Sĩ luôn ở trong "Cung" giống như Tướng. 3. Tượng: Đi chéo 2 ô mỗi nước, đi ngang hoặc dọc. Tượng không được phép qua sông sang bàn cờ của đối phương.Nước đi của Tượng không hợp lệ khi có quân cờ chặn giữa đường. 4. Xe: Đi ngang hoặc dọc khắp bàn cờ miễn không có quân khác cản trên đường đi. 5. Mã: Đi ngang 2 ô và đi dọc 1 ô ( hoặc đi dọc 2 ô và đi ngang 1 ô) cho mỗi nước đi.Nếu có quân khác nằm cạnh mã và cản đường ngang 2 hoặc cản đường dọc 2, thì mã không được đi đường đó. 6. Pháo: Đi ngang hoặc dọc giống như Xe. Điểm khác là khi Pháo muốn ăn quân của đối phương thì giữa Pháo và quân muốn ăn phải có quân cản ở giữa. 7. Tốt: Đi mỗi nước một ô. Nếu Tốt chưa qua sông thì chỉ được đi thẳng tiến. Khi đã vượt qua sông có thể đi ngang hoặc đi thẳng tiến, mỗi nước một ô. 8. Ăn quân: Khi quân di chuyển đến một vị trí đang đứng của quân đối phương, quân đối phương bị ăn và bị lấy ra khỏi bàn cờ. 9. Chống tướng: 2 tướng trên bàn không được nằm trên cùng một cột dọc mà không có quân cản ở giữa.Nước đi để 2 quân tướng ở vị trí chống tướng là không hợp lệ. Dựa vào luật chơi cờ tướng cơ bản trên, ta xây dựng được phương pháp xác định nước đi tiếp theo của từng quân cờ. 6 Phần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta Pruning 6 Coi bàn cờ là một mảng 2 chiều a[i,j] với a[i,j]=0 tức là chưa có quân cờ và a[i,j]={1,2,3,4,5,6,7} tương ứng với quân {tướng, sỹ, tượng, xe, mã , pháo, tốt} của quân ta và a[i,j]={-1,-2,-3,-4,-5,-6,-7} tương ứng quân {tướng, sỹ, tượng, xe , mã , pháo, tốt } của quân địch. Bây giờ ta cần xác định những ô có thể đi của các quân cờ với vị trị hiện tại của chúng là a[i,j] 1. Tướng : Ta kiểm tra tất cả các ô Nếu thỏa mãn 3 điều kiện thì cập nhật vị trí quân tướng có thể đi. 2. Sỹ : Ta kiểm tra tất cả các ô Nếu thỏa mãn 3 điều kiện thì cập nhật vị trí quân sỹ có thể đi. 3. Tượng : If then ( quân tượng đi được tới ô a[i-2,j-2] If then ( quân tượng đi được tới ô a[i-2,j+2] If then ( quân tượng đi được tới ô a[i+2,j-2] 7 Nhóm 67 If then ( quân tượng đi được tới ô a[i+2,j+2] 4. Xe : + For (k=i+1 , k<11 , k++) If ( a[k,j]==0 ) then (cập nhật nước đi của quân xe) else break; + For (k=i-1 , k>0 , k ) If ( a[k,j]==0 ) then (cập nhật nước đi của quân xe) else break; + For (k=j+1 , k<10 , k++) If ( a[i,k]==0 ) then (cập nhật nước đi của quân xe) else break; + For (k=j-1 , k>0 , k ) If ( a[i,k]==0 ) then (cập nhật nước đi của quân xe) else break; 5. Mã : If then ( quân mã đi được tới ô a[i-2,j-1] ) If then ( quân mã đi được tới ô a[i-2,j+1] ) If then ( quân mã đi được tới ô a[i+1,j+2] ) If then ( quân mã đi được tới ô a[i-1,j+2] ) If then ( quân mã đi được tới ô a[i-2,j+1] ) If then ( quân mã đi được tới ô a[i-2,j-1] ) If then ( quân mã đi được tới ô a[i-1,j-2] ) If then ( quân mã đi được tới ô a[i+1,j-2] ) 6. Pháo : + For (k=i+1 , k<11 , k++) 8 Phần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta Pruning 8 If ( a[k,j]==0 ) then (cập nhật nước đi của quân pháo) else break; + For (k=i-1 , k>0 , k ) If ( a[k,j]==0 ) then (cập nhật nước đi của quân pháo) else break; + For (k=j+1 , k<10 , k++) If ( a[i,k]==0 ) then (cập nhật nước đi của quân pháo) else break; + For (k=j-1 , k>0 , k ) If ( a[i,k]==0 ) then (cập nhật nước đi của quân pháo) else break; 7. Tốt Chưa sang sông : if a[i+1,j] < 1 then ( quân tốt đi được tới vị trí a[i+1,j] ) Đã sang sông : Ta kiểm tra tất cả các ô Nếu thỏa mãn 3 điều kiện thì cập nhật vị trí quân tốt có thể đi. Phần 2: Xây dựng thuật giải Alpha-Beta Pruning Game cờ tướng là một trong những game chơi đối kháng, phù hợp với việc áp dụng thuật giải Minimax kết hợp với Alpha-beta cắt tỉa trong đó 1 người chơi là Max, 1 người chơi là Min, thay phiên nhau đi các nước, kết thúc ván cờ có 1 thắng 1 người thua, hoặc rơi vào trạng thái hòa thì cần phải có trọng tài để đánh giá. 9 Nhóm 69 1. Thuật giải Minimax • Mimimax là giải thuật áp dụng vào các trò chơi mang tính đối kháng, 1 người chơi là Max, 1 người chơi là Min. Minimax sử dụng tri thức là 1 hàm lượng giá, khi khởi tạo hàm lượng giá này có giá trị là 0, ứng với khả năng giành chiến thắng của Max và Min là như nhau. • Nước đi của Max ảnh hướng đến nước đi của Min và ngược lại, Max tìm cách cực đại hóa hàm lượng giá, Min tìm cách cực tiểu giá trị này. • Cây trò chơi Minmax được hình thành từ trạng thái bắt đầu và các nước đi hợp lệ của Max (Min). • Giải thuật Minimax tìm kiếm nước đi có lợi nhất dựa và hàm đánh giá, ở các cây con của Max, Max chọn các trạng thái tốt nhất với nó là những trạng thái hàm đánh giá cực đại và ngược lại với Min, nó chọn các trạng thái sao cho hàm đánh giá là nhỏ nhất. • Độ phức tạp của Minimax tăng theo hàm mũ và phụ thuộc vào độ sâu tìm kiếm. Trên thực tế không có máy tính nào cho phép tính đến trạng thái đích từ trạng thái bắt đầu, vì cây trò chơi là quá lớn vì thế chỉ có thể cài đặt ở một độ sâu nhất định, đảm bảo về mặt thời gian. Với sự bùng nổ của cây trò chơi Minimax và giải thuật Minimax cổ điển không có sự tối ưu nào để giảm bớt sự phức tạp tìm kiếm, bỏ bớt những nút không tối ưu. Chính vì thế người ta đã áp dụng cắt tỉa Alpha-beta vào việc tối ưu tìm kiếm. 10 Phần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta Pruning 10 [...]... Phần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta Pruning 14 max max min ≥4 min 4 12 ≤3 6 4 5 3 x max max min ≥4 Min ≤3 4 12 6 4 5 3 ≤2 x 2 3 Áp dụng vào bài toán chơi cờ tướng a) Hàm lượng giá Tri thức áp dụng vào bài toán sao cho đánh giá đúng được thế cờ, giá trị bàn cờ để có được lợi thế trong trò chơi cờ tướng Máy...11 Nhóm 6 2 Thuật giải Alpha-beta cắt tỉa Tư tưởng của cắt tải alpha-beta: “Nếu một nhánh tìm kiếm nào đó không thể cải thiện đối với giá trị (hàm tiện ích) mà chúng ta đã có, thì không cần xét đến nhánh tìm kiếm đó nữa!” Cắt tỉa Alpha-beta được áp dụng vào nhằm cắt tỉa bớt những nhánh tồi tiết kiệm chi phí thời gian, bộ nhớ cho cây tìm kiếm Lợi ích của việc cắt tỉa alpha-beta nằm trong thực tế... Phần 3: Kết luận • Nhóm cài đặt và sử dụng thành công thuật toán, test trên máy thật Nokia Lumia 520 • Giao diện còn sơ sài khi chỉ tập trung vào thiết kế và giải thuật • Một số việc tối ưu nhằm cài thiện tốc độ, lượng giá tốt hơn chưa sử dụng được 19 20 Phần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta Pruning • Phần 4:... chi tiết, viết báo cáo, làm slide, test chương trình Cài đặt giải thuật, xây dựng cây trò chơi, đề xuất các phương án tối ưu, lượng giá cho quân cờ Nghiên cứu giải thuật để đi đến cài đặt, lượng giá cho quân cờ Code chi tiết các lớp quân cờ, bàn cờ, test chương trình Xây dựng phương thức sinh các nước đi kế tiếp cho các quân cờ Thiết kế giao diện Tài liệu tham khảo Slide môn Trí tuệ nhân tạo – Nguyễn... sẽ có thể cắt bớt được các nhánh không cần thiết Từ đó tốc độ của chương trình sẽ nhanh hơn và tối ưu hơn 17 18 Phần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta Pruning 4 Phương án tối ưu cho bài toán a) Tối ưu hàm lượng giá • Đánh giá giá trị các quân cờ 1 cách chính xác và tỉ mỉ hơn: Phân tích tình huống cờ theo giai... các quân cờ để khi sinh các bàn cờ, mình có những bàn cờ tối ưu đặt trước, xét trước như vậy sẽ cắt tỉa được nhiều Nhóm đã áp dụng sắp xếp các quân Xe, Pháo, Mã lên trước, vì các bàn cờ do các con này sinh có giá trị hơn các bàn cờ do quân Tốt, Sĩ, Tượng, Tướng gây ra Do đó cắt tỉa được nhiều Cách sắp xếp còn tỏ ra hiệu quả khi các bàn cờ có giá trị bằng nhau thì chọn bàn cờ nào trước, cách sắp xếp như... β, không (maximizingPlayer))) nếu β ≤ α phá vỡ (* Beta cắt *) trở α khác 11 12 Phần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta Pruning cho mỗi đứa trẻ của nút β: = min (β, alphabeta (trẻ em, độ sâu - 1, α, β, không (maximizingPlayer))) nếu β ≤ α phá vỡ (* Alpha cắt *) trở β (* Ban đầu gọi *) alphabeta (nguồn gốc, độ... cứ vào thế cờ (bàn cờ) máy sẽ gán cho nó một điểm số (lượng giá tĩnh) để đánh giá độ tốt xấu Nhờ điểm này máy mới có thể so sánh các thế cờ với nhau và biết chọn nước đi tốt nhất Đâylà một nhiệm vụ rất khó khan và phức tạp do không tồn tại một thuật toán tổng quát và 14 15 Nhóm 6 thống nhất nào để tính điểm cả Điểm của một thế cờ dựa trên rấtnhiều yếu tố mà khó có thể số hoá hết được như phụ thuộcvào... sức Trong bài toán này, nhóm sử dụng cách lượng giá đơn giản và dễ hiểu nhất Đánh giá giá trị bàn cờ thông qua giá trị của các quân cờ Cách đánh giá này tuy không đem lại nhiều chiến thuật trong cách chơi cờ, nhưng là đơn giản và dễ hiểu khi một bên sở hữu nhiều quân cờ có giá trị cao hơn sẽ có nhiều lợi thế hơn trong việc giành chiến thắng Nhóm đánh giá giá trị các quân cờ như sau: • Giá trị quân tốt... player) nằm trong lớp Computer public Computer AlphaBetaPruning(ChessBoard board, int alpha, int beta, int depth, int player) 15 16 Phần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta PruningPhần 2: Xây dựng thuật giải Alpha-Beta Pruning { Computer com = new Computer(); if (depth == 0 || board.CheckWinNegativeTeam() || board.CheckWinPositiveTeam()) { com.Value = board.Value; . ĐẠ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 TRÍ TUỆ NHÂN TẠO Ứng dụng Alpha-beta cắt tỉa xây dựng game cờ tướng GVHD: Thầy Phạm Văn Hải Nhóm thực hiện: 6 Lê. dễ dàng. Các ứng dụng trên điện thoại có rất nhiều với mục đích giải trí, học tập… Nhóm quyết định xây dựng game cờ tướng trên nền tảng Windows Phone. Windows Phone (Windows Phone 7 Series). tướng ở vị trí chống tướng là không hợp lệ. Dựa vào luật chơi cờ tướng cơ bản trên, ta xây dựng được phương pháp xác định nước đi tiếp theo của từng quân cờ. 6 Phần 2: Xây dựng thuật giải Alpha-Beta

Ngày đăng: 23/10/2014, 23:51

Từ khóa liên quan

Mục lục

  • Phần 1: Tổng quan về các vấn đề liên quan

    • 1. Giới thiệu về trò chơi cờ tướng

    • 2. Windows Phone và framework XNA 4.0

    • Phần 2: Xây dựng game cờ tướng

      • 1. Biểu đồ UseCase

      • 2. Tìm lớp và xác định trách nhiệm cho lớp

      • 3. Thiết kế chi tiết cho các lớp

        • Xác định nước đi kế tiếp cho các quân cờ

        • Phần 2: Xây dựng thuật giải Alpha-Beta Pruning

          • 1. Thuật giải Minimax

          • 2. Thuật giải Alpha-beta cắt tỉa

          • 3. Áp dụng vào bài toán chơi cờ tướng

            • a) Hàm lượng giá

            • b) Thiết kế giải thuật trong game

            • c) Biểu diễn cây trò chơi

            • 4. Phương án tối ưu cho bài toán

              • a) Tối ưu hàm lượng giá

              • b) Tối ưu thời gian tìm kiếm

              • 5. Thống kê cài đặt thuật toán thành công

              • Phần 3: Kết luận

              • Phần 4: Phân công công việc

              • Tài liệu tham khảo

Tài liệu cùng người dùng

Tài liệu liên quan