thuyết trình báo cáo môn tri tuê nhân tạo áp dụng thuật toán tìm kiếm min max và alphabeta cắt tỉa xây dựng trò chơi cờ ca rô trên android

15 2.3K 0
thuyết trình báo cáo môn tri tuê nhân tạo áp dụng thuật toán tìm kiếm min max và alphabeta cắt tỉa xây dựng trò chơi cờ ca rô trên android

Đ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

1 Trường Đại Học Bách Khoa Hà Nội Bộ Môn Hệ Thống Thông Tin Báo Cáo Trí Tuệ Nhân Tạo Đề Tài: Game Cờ Caro Trên Android Nhóm sinh viên: SHSV: Đặng Tiến Đạt 20090656 Trần Đình Quang 20093577 Lê Huy Hoàng 20091144 Nguyễn Thanh Sơn 20092261 Trần Mạnh Hùng 20091336 Giảng viên hướng dẫn: TS. Phạm Văn Hải Hà Nội 4-8-2013 2 Mục lục LỜI NÓI ĐẦU 3 I. Giới thiệu bài toán 5 II. Phân công công việc 5 III. Công nghệ sử dụng 5 IV. Chiến lược tìm kiếm 5 V. Kỹ thuật lượng giá 11 VI. Các khó khăn gặp phải 13 VII. Hướng cải tiến và phát triển 14 1. Cải tiến không gian trạng thái 14 2. Dùng tri thức bổ sung bên ngoài 14 VIII. Tài liệu tham khảo 15 3 LỜI NÓI ĐẦU Trí tuệ nhân tạo là trí tuệ được biểu diễn bởi bất cứ một hệ thống nhân tạo nào. Thuật ngữ này thường dùng để nói đến các máy tính có mục đích không nhất định và ngành khoa nghiên cứu về các lý thuyết và ứng dụng của trí tuệ nhân tạo. Tuy rằng trí thông minh nhân tạo có nghĩa rộng như là trí thông minh trong khoa học viễn tưởng, nó là một trong những ngành trọng yếu của tin học. Trí thông minh nhân tạo liên quan đến cách cư xử, sự học hỏi và khả năng thích ứng thông minh của máy móc. Các ví dụ ứng dụng bao gồm các tác vụ điều khiển, lập kế hoạch và lập lịch (scheduling), khả năng trả lời các câu hỏi về chẩn đoán bệnh, trả lời khách hàng về các sản phẩm của một công ty, nhận dạng chữ viết tay, nhận dạng tiếng nói và khuôn mặt. Bởi vậy, trí thông minh nhân tạo đã trở thành một môn học, với mục đích chính là cung cấp lời giải cho các vấn đề của cuộc sống thực tế. Ngày nay, các hệ thống nhân tạo được dùng thường xuyên trong kinh tế, y dược, các ngành kỹ thuật và quân sự, cũng như trong các phần mềm máy tính thông dụng trong gia đình và trò chơi điện tử. Để áp dụng những kiến thức về AI được học trên lớp cũng như tìm hiểu qua internet, nhóm chúng em đi đến quyết định chung là xây dựng trò chơi cờ ca rô trên nền tảng Android. Trong quá trình làm bài tập lớn, chúng em xin chân thành cảm ơn thầy Phạm Văn Hải đã tận tình hướng dẫn, cảm ơn các bạn đã đóng góp những ý kiến bổ ích để trò chơi được tốt hơn. Do chưa có nhiều kinh nghiệm cũng như kiến thức về AI còn hạn hẹp nên trò chơi chưa được tối ưu lắm. Mong thầy và các bạn góp ý để game được tốt hơn. Chúng em xin chân thành cảm ơn! 4 NỘI DUNG TRÌNH BÀY 1. Giới thiệu bài toán 2. Phân công công việc 3. Công nghệ sử dụng 4. Chiến lược tìm kiếm 5. Kỹ thuật lượng giá 6. Các khó khăn gặp phải 7. Hướng cải tiến và phát triển 8. Tài liệu tham khảo 5 I. Giới thiệu bài toán Trò chơi cờ caro được thực hiện bởi hai đối thử trên bàn cờ hình vuông kích thước n*n (n tùy ý). Hai ký hiệu X và O sẽ đại diện cho hai quân cờ. người chơi có nhiệm vụ thay phiên nhau điền ký hiệu của mình vào các ô trên bàn cờ. Người thắng sẽ là người đầu tiên tạo được 5 quân của mình thành một chuỗi liên tiếp trên một hàng ngang, dọc, chéo. II. Phân công công việc  Đạt + Hoàng: nghiên cứu thuật toán và tìm kiếm hàm lượng giá  Quang + Sơn : Code  Hùng : Cài đặt, kiểm thử cộng viết báo cáo III. Công nghệ sử dụng  Tool: eclipse  Các thuật toán tìm kiếm với chi thức bổ xung: Minimax và Alphabeta cắt tỉa.  Ngôn ngữ sử dụng : Javas  Nền tảng phát triển: Hệ điều hành Android IV. Chiến lược tìm kiếm  Phân tích Đến lượt đi của mình, mỗi người chơi cố gắng tạo ra các nước đi uy hiếp đối phương là cao nhất và đưa tướng của đối phương về trạng thái chiếu hết (checkmate) Ở chế độ chơi người với máy tính : Nguời lập trình phải xây dựng hàm để tìm kiếm cho máy tính các nước đi tối ưu nhất. Mỗi nước đi mà máy tính lựa chọn sẽ một trong số các khả năng mà máy tính có thể đi, ta gọi 6 đây là các trạng thái nước đi của máy tính. Việc xét hết các trạng thái nước đi của bàn cờ là một việc không mấy dễ dàng .Việc duyệt hết các khả năng này có thể làm cho không gian trạng thái sẽ rất lớn ảnh hưởng tới khả năng xử lý của CPU và do đó thời gian cho máy chọn một phương án tối ưu sẽ rất lâu. Vấn đề này yêu cầu sử dụng giải thuật heuristic cho máy để tăng khả năng tối ưu, giảm thời gian “suy nghĩ” cho những phương án lựa chọn của máy. Người lập trình áp dụng thủ tục cắt tỉa alpha - beta (alpha-beta prunning) để cài đặt cho chương trình.  Cây trò chơi Trong quá trình chơi, trạng thái của bàn cờ được thay đổi liên tục bởi một nước đi của 1 trong 2 đối thủ. Ta có thể biểu diễn các trạng thái này dưới dạng một cây tìm kiếm(gọi là cây trò chơi), mỗi nút tương ứng với một trạng thái bất kỳ, các nhánh nối giữa các nút cho ta biết từ trạng thái này sang trạng thái kia thông qua một nước đi nào đó.  Thuật toán MiniMax Minimax(còn gọi là minmax) là một phương pháp trong có mục đích là tối thiểu hóa (minimize) tổn thất vốn được dự tính có thể là "tối đa" (maximize). Có thể hiểu ngược lại là, nó nhằm tối đa hóa lợi ích vốn được dự tính là tối thiểu (maximin). Nó bắt nguồn từ trò chơi có tổng bằng không. Nó cũng được mở rộng cho nhiều trò chơi phức tạp hơn và giúp đưa ra các quyết định chung khi có sự hiện diện của sự không chắc chắn. Minimax thường dùng để giải quyết những trò chơi có tính chất đối kháng. Giả sử hai đối thủ trong trò chơi có tên là MAX và MIN  Max: biểu diễn cho mục đích của đối thủ này là làm lớn tối đa lợi thế của mình  Min: biểu diễn cho mục đích của đối thủ này là làm nhỏ tối đa lợi thế của đối phương. Trên cây tìm kiếm sẽ phân lớp thành các lớp Max và Min. 7 Minimax sẽ truyền các giá trị này lên cao dần trên đồ thị, qua các nút cha mẹ kế tiếp theo các luật sau:  Nếu trạng thái cha mẹ là Max, gán cho nó giá trị lớn nhất có trong các trạng thái con của nó.  Nếu trạng thái bố, mẹ là Min, gán cho nó giá trị nhỏ nhất có trong các trạng thái con của nó. Hình 1: Cây nhị phân tìm kiếm Max-Min  Các nút lá được gán các giá trị heuristic  Còn giá trị tại các nút trong là các giá trị nhận được dựa trên giải thuật Minimax 8 Giải thuật function MINIMAX-DECISION(state) returns an action vMAX-VALUE(state) return the action in SUCCESSORS(state) with value v function MAX-VALUE(state) returns a ultility state if TERMINAL-TEST(state) then return UTILITY(state) v -∞ for a,s in SUCCESSORS(state)do vMAX(v,MIN-VALUE(s)) return v function MIN-VALUE(state) returns a ultility state if TERMINAL-TEST(state) then return UTILITY(state) v -∞ for a,s in SUCCESSORS(state)do vMIN(v,MAX-VALUE(s)) return v Ta thấy để gán giá trị cho một nút nào đó ta phải xét hết tất cả các nút con của nó rồi truy hồi dần về nút gốc. Vấn đề gặp phải ở đây là một sự bùng nổ hàm mũ số lượng các nút phải xét. Để giải quyết vấn đề này ta dùng phương pháp cắt tỉa Alphabeta 4.4 Phương pháp cắt tỉa Alphabeta  Ý tưởng: Nếu một nhánh tìm kiếm nào đó không cải thiện đối với giá trị(hàm lượng giá) mà chúng ta xét ở phần sau, thì không cần xét đến nhánh tìm kiếm đó nữa.  Việc cắt tỉa các nhánh tìm kiếm “tồi” không ảnh hưởng đến kết quả cuối cùng. 9 GIẢI THUẬT function ALPHA-BETA-SEARCH(state) returns an action v MAX-VALUE(state,- ,+ ) return the action in SUCCESSORS(state) with value v function MAX-VALUE(state) returns a ultility state if TERMINAL-TEST(state) then return UTILITY(state) v -∞ for a,s in SUCCESSORS(state)do vMAX(v,MIN-VALUE(s,α,β)) if(v≥β) then return v αMAX(α,v) return v function MIN-VALUE(state) returns a ultility state if TERMINAL-TEST(state) then return UTILITY(state) v +∞ for a,s in SUCCESSORS(state)do vMIN(v,MAX-VALUE(s,α,β)) if(v≤ α) then return v ß MIN(β,v) return v 10  Cắt tỉa α Max S= α Min A= α Z α - cut =z z ≤α  Cắt tỉa β Min S= β Max A= β Z ß - cut =z z ≥ β Z ≤ α Z ≥ β [...]... VI Các khó khăn gặp phải  Việc xây dựng chương trình gặp một số khó khăn như việc tìm hàm đánh giá, việc xử lý từ thuật toán chụng cho trò chơi đối kháng thành code riêng của cờ ca rô  Tố ưu thuật toán và giảm thời gian tính toán của máy, tăng cường xét các độ sâu cao hơn 13 VII Hướng cải tiến và phát tri n 1 Cải tiến không gian trạng thái Do không gian trạng thái bàn cờ rất lớn, vì vậy ta phải xét... trí tuệ nhân tạo của thầy Phạm Văn Hải  Slide trí tuệ nhân tạo của thầy Nguyễn Nhật Quang  Giáo trình trí tuệ nhân tạo của thầy Đinh Mạnh Tường  Trò chơi đối kháng và phương pháp tìm kiếm của thầy Phạm Hồng Nguyên  http://www.java2s.com/Tutorial/Java/0280 SWT/Catalog028 0 SWT.htm  -Kéo thả giao diện với Eclipse: http://www.ptpsoft.com.vn/?page=hotnews&id=694&catid=96 IX Hướng dẫn cài đặt 1 Trên smartphone...Ví dụ minh họa Hình 2: định trị cây trò chơi bằng phương pháp cắt tỉa α- β V Kỹ thuật lượng giá Hàm lượng giá cực kỳ quan trọng trong phương pháp cắt tỉa α- β Một hàm lượng giá tốt sẽ rút bớt cho ta rất nhiều những trạng thái phải xét Trong bài toán cờ caro, hai yếu tố có vai trò quyết định cho trận đấu là tổng số nước có thể thắng của quân X và tổng số nước có thể thắng của... Trên smartphone Android Trong thư mục gửi code bọn em có build file demo-co -ca- ro.apk Thầy chỉ cần copy file này vào thư mục download của smartphone Android rùi tiến hành cài đặt là chạy bình thường 2 Trên PC Muốn chạy chương trình trên PC trước hết phải cài phần mềm bluestacks Đây là phần mềm giả lập Android trên PC Link dowload bulestacks http://www.bluestacks.com/ Sau khi tiến hành tải và cài đặt thì... đánh là những ô có tầm quan trọng cao hơn những ô ở xa khu vực đánh Những ô càng xa thì tầm quan trọng càng giảm Như vậy số nút phải xét sẽ giảm đi thay vào đó ta sẽ tăng độ sâu cho cây tìm kiếm => như vậy máy sẽ thông minh hơn 2 Dùng tri thức bổ sung bên ngoài  Ta sẽ sử dụng 1 openingbook để lưu trữ những thế cờ mà máy chắc thắng để cho máy luôn có xu hướng đưa đối thủ vào 1 trong số thế đó  Ta sẽ tao... tổng bình phương số quân X liên tiếp mà O chặn được trên các đường ngang, dọc, chéo Trường hợp riêng:  Nếu X chặn được 4 quân O liên tiếp trên một phương nào đó thì cộng thêm 100 vào giá trị hàm Eval(n)  Nếu O chặn được 4 quân X liên tiếp trên một phương nào đó thì trừ đi 100 vào giá trị hàm Eval(n) 12 Ví dụ cụ thể Giả sử tại độ sâu k của cây trò chơi ta có trang thái sau: o x o o x x o x o x Eval1=(1+1+4+1+1+4+1+1+1+1+4+1+4+1+1+1)(1+1+9+1+1+1+1+1+1+1+1+1+1+1+1+1+4)=0... tiếp bằng 4 thì cộng thêm 50 vào giá trị hàm Eval1(n) và cộng thêm 100 nếu số quân X liên tiếp bằng 5 để thấy rõ sự cấp thiết của nước đi này  nếu số quân O liên tiếp bằng 4 trên một phương nào đó thì trừ đi 50 vào giá trị hàm Eval 1(n) và trừ đi 100 nếu số quân O liên tiếp bằng 5  Eval2(n) =X’(n)-O’(n) với X’(n) là tổng bình phương số quân O liên tiếp mà X chặn được và O’(n) là tổng bình phương... kỳ Vì vậy ta sẽ sử dụng hàm lượng giá sau Xét tại trạng thái n thì: Eval(n)=Eval1(n)+Eval2(n) Trong đó:  Eval1(n) là hàm tấn công  Eval2(n) là hàm phòng thủ 11 Cụ thể tính giá trị tính nhu sau:  Eval1(n)=X(n)-O(n) với X(n) là tổng bình phương số quân X liên tiếp trên các đường ngang, dọc, chéo và O(n) là tổng bình phương số quân O liên tiếp trên các đường ngang, dọc, chéo Ví dụ trên một hàng ngang... trình trên PC trước hết phải cài phần mềm bluestacks Đây là phần mềm giả lập Android trên PC Link dowload bulestacks http://www.bluestacks.com/ Sau khi tiến hành tải và cài đặt thì chạy file demo -ca- ca-ro.apk trên PC bình thường 15 .  Việc xây dựng chương trình gặp một số khó khăn như việc tìm hàm đánh giá, việc xử lý từ thuật toán chụng cho trò chơi đối kháng thành code riêng của cờ ca rô  Tố ưu thuật toán và giảm. trí tuệ nhân tạo của thầy Phạm Văn Hải  Slide trí tuệ nhân tạo của thầy Nguyễn Nhật Quang  Giáo trình trí tuệ nhân tạo của thầy Đinh Mạnh Tường  Trò chơi đối kháng và phương pháp tìm kiếm. nghiên cứu thuật toán và tìm kiếm hàm lượng giá  Quang + Sơn : Code  Hùng : Cài đặt, kiểm thử cộng viết báo cáo III. Công nghệ sử dụng  Tool: eclipse  Các thuật toán tìm kiếm với chi

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

Từ khóa liên quan

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

Tài liệu liên quan