Tìm hiểu giải thuật minimax và cắt tỉa anpha beta,ứng dụng vào lập trình trò chơi mang tính đối kháng

20 1.1K 0
Tìm hiểu giải thuật minimax và cắt tỉa anpha beta,ứng dụng vào lập trình trò chơi mang tính đối kháng

Đ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 truyền thông ******************************** Môn học:Trí tuệ nhân tạo Báo cáo tập lớn Đề tài:Tìm hiểu giải thuật Minimax cắt tỉa Anpha-Beta,ứng dụng vào lập trình trò chơi mang tính đối kháng Giáo viên hướng dẫn:Phạm Văn Hải Sinh viên thực hiện: Lê Thành Đạt MSSV: 20111374 Nhóm 17 Lời mở đầu Trong trò chơi,chúng ta thường yêu thích trò chơi có nhiều người chơi,trong ưa thích trò chơi mang tính đối kháng nhằm khơi dậy hứng thú khả suy nghĩ người chơi.Ta kể đến trò chơi như:cờ vua,cờ vây,cờ tướng,cờ caro,ô ăn quan…Đặc điểm trò chơi người chơi cần phải suy nghĩ phán đoán nước đối thủ nhằm đưa nước tốt cho Nắm bắt đặc điểm này,trong lĩnh vực nghiên cứu trí tuệ nhân tạo tìm giải thuật Minimax giải thuật cải tiến cắt tỉa Anpha-Beta áp dụng vào lập trình trò chơi nói trên.Với ưu điểm tốc độ nhanh,bộ nhớ lớn, máy tính có khả duyệt độ sâu trò chơi lớn mà người làm vậy.Các trò chơi thực tốt cho rèn luyện khả tư ghi nhớ Trong đề tài em áp dụng giải thuật vào lập trình trò chơi Ô ăn quan.Do số hạn chế mặt thời gian…nên trò chơi bộc lộ số nhược điểm mong thầy,cô,các bạn đóng góp ý kiến giúp em hoàn thiện tốt trò chơi P hần một:Giới thiệu đôi nét giải thuật tìm kiếm Minimax cắt tỉa Anpha-Beta I) Trò chơi đối kháng,các phương pháp tìm kiếm nước 1,Trò chơi đối kháng Đây trò chơi có hai người chơi, ta lập trình cho máy tính để người chơi đấu trí với máy tính Đặc điểm trò chơi sau: * Có hai đấu thủ, người nước tới lượt * Các đấu thủ biết thông tin tình trạng trận đấu * Trận đấu không kéo dài vô tận, phải diễn hòa, bên thắng bên thua Đôi ta gọi trò chơi Minimax (dựa tên thuật toán tìm kiếm áp dụng cho chúng).Sau số hình ảnh minh họa: Hình 1:Cờ vua Hình 2:Cờ tướng Hình 3:Cờ Caro Hình 4: Ô ăn quan 2) Không gian trạng thái trò chơi Không gian trạng thái trò chơi biểu diển theo sơ đồ hình cây,Nó tập trạng thái cảu trò chơi xảy trạng thái xét(nút gốc trò chơi): Nhìn vào sơ đồ ta liền nghĩ đến vấn đề biết toàn thông tin trò chơi tức từ nút gốc nút lá,a cần chọn nhánh dẫn tới nước thắng để quân đảm bảo thắng lợi Nếu vậy, loại cờ trở thành trò chơi buồn tẻ, chẳng đâu bí huyền ảo thần kì bàn cờ chẳng khác bàn tính Rất tiếc (hoặc may) rằng, cách làm lại thực gọi bùng nổ tổ hợp Ví dụ, từ cờ, trung bình có khả 16 nước khác (ta gọi hệ số nhánh nút b = 16) Như vậy, sau tầng ta có 16 nút con, nút lại có 16 Tổng số nút độ sâu thứ hai 16x16 = b^2 Cứ độ sâu d có b^d nút Nếu giả sử độ sâu 100 (hệ số nhánh 16 độ sâu 100 số nhỏ số thường gặp trò chơi cờ), số nhánh phải duyệt lên đến 16^100 hay xấp xỉ 10^120 - số lớn khủng khiếp Để hình dung số lớn nào, ta giả sử tất nguyên tử vũ trụ trở thành máy tính để tính nước với tốc độ giây tính cỡ 10^10 (10 tỷ) nước đi, chúng hoạt động từ thời vụ nổ lớn đến (theo số lý thuyết, giới hình thành sau vụ nổ gọi vụ nổ lớn bigbang, trước cỡ 15 tỷ năm) đến nước II.Thủ tục Minimax Để giải vấn đề bùng nổ tổ hợp,một phương pháp đơn giản thay duyệt hết không gian trạng thái trò chơi(điều gây bùng nổ tổ hợp) duyệt đến độ sâu định đó,trong trò chơi ta gọi “nhìn xa”.Rõ ràng xét sâu,ta lường nhiều tình xảy trò chơi để chọn nước phù hợp Thủ tục Minimax áp dụng trò chơi đối kháng nói trên.Trong trò chơi có hai người chơi người chơi Max người chơi Min,theo thuật toán người chơi Max tìm nước dẫn đến điểm trở nên lớn (hay cao được) hay điểm đối thủ bớt âm (nhỏ giá trị tuyệt đối) Còn đấu thủ anh ta, người chơi Min, lại sức phản kháng lại, để dẫn tới điểm âm âm hay điểm dương đối thủ nhỏ III.Thuật toán cắt tỉa Anpha-Beta Thủ tục AlphaBeta cải tiến thuật toán Minimax nhằm tỉa bớt nhánh trò chơi, làm giảm số lượng nút phải sinh lượng giá, tăng độ sâu tìm kiếm Giả sử hình 1.6 cờ mà hai nút lượng giá Nếu thực thủ tục Minimax nút cho thấy người chơi cực đại đảm bảo nước bên trái điểm dù lượng giá nút khác cho kết < Theo Phạm Hồng Nguyên> Nguyên tắc Alpha-Beta Nếu biết điều thật tồi đừng thời gian tìm hiểu tồi tệ đến đâu P hần hai:Áp dụng giải thuật Minimax cắt tỉa Anpha-Beta vào lập trình trò chơi Ô ăn quan I.Giới thiệu trò chơi Ô ăn quan Ô ăn quan, hay gọi tắt ăn quan ô quan trò chơi dân gian trẻ em người Kinh, Việt Nammà chủ yếu bé gái Đây trò chơi có tính chất chiến thuật thường dành cho hai người chơi sử dụng vật liệu đa dạng, dễ kiếm để chuẩn bị cho trò chơi Bàn chơi Bàn chơi hình chữ nhật chia thành mười ô vuông, bên có năm ô đối xứng Ở hai cạnh ngắn hình chữ nhật có hai ô hình bán nguyệt hướng phía Các ô hình vuông gọi ô quân hai ô hình bán nguyệt gọi ô quan Quân chơi - Gồm hai loại quan quân, quan có kích thước lớn quân -Quan có giá trị 10 quân,dùng để tính điểm kết thúc trò chơi - Số lượng quan quân có số lượng 50 Bố trí quân chơi - Quan đặt hai ô hình bán nguyệt, ô quan Quân bố trí vào ô vuông, ô quân Hình minh họa Người chơi - Gồm hai người chơi, người ngồi vị trí đối xứng cạnh dài hình chữ nhật ô vuông bên thuộc quyền kiểm soát người chơi ngồi bên Luật chơi Luật quân • Người chơi tức “Player1” người trước • Người chơi bốc quân phía ô bắt đầu Khi đến lượt, người chơi dùng tất quân ô có quân để rải vào ô quân, ô gần Người chơi rải ngược hay xuôi chiều kim đồng hồ tùy ý • Khi rải hết quân cuối cùng, tùy tình mà người chơi phải xử lý tiếp sau: • Nếu liền sau ô vuông có chứa quân tiếp tục dùng tất số quân để rải chiều chọn • Nếu liền sau ô trống (không phân biệt ô quan hay ô quân) đến ô có chứa quân người chơi ăn tất số quân ô Số quân bị ăn bốc khỏi bàn chơi để người chơi tính điểm kết thúc • Nếu liền sau ô có quân bị ăn lại ô trống đến ô có quân người chơi có quyền ăn tiếp quân ô • Nếu liền sau ô quan có chứa quân ô trống trở lên người chơi bị lượt quyền tiếp thuộc đối phương Rải quân • Trường hợp đến lượt ô vuông thuộc quyền kiểm soát người chơi không quân người phải dùng quân đặt vào ô quân • Nếu người chơi không đủ quân phải vay đối phương trả lại tính điểm Hệ thống tự động bốc quân cho người chơi vay Ăn quân Nếu người chơi quân đến ô trống, ô có quân người chơi ăn số quân ô Kết thúc Cuộc chơi kết thúc toàn quân quan hai ô quan bị ăn hết Trường hợp hai ô quan bị ăn hết quân quân hình vuông phía bên coi thuộc người chơi bên ấy; tình gọi hết quan thu quân nước Người chơi nhiều quân người thắng cuộc,với quan có giá trị 10 quân II.Ứng dụng giải thuật Minimax cắt tỉa Anpha-Beta vào lập trình game Ô ăn quan 1.Không gian trạng thái trò chơi -Biểu diễn trạng thái bàn cờ:Mỗi trạng thái bàn cờ mô tả ma trận chiều kích thước 12.Mỗi phần tử lưu giá trị ô,cụ thể phần tử lưu giá trị ô Quan,các phần tử lại mảng lưu giá trị ô quân 5 5 5 5 5 Tương đương Việc số hóa bàn cờ thuận tiện cho việc biểu diễn bàn cờ máy tính -Cây không gian trạng thái: Ban đầu,người chơi chọn ô bên để đi,mỗi ô có cách chọn hướng đi,trái phải => có 10 nhánh 10 2,Những vấn đề gặp phải phương pháp giải vấn đề a)Biểu diễn trạng thái bàn cờ máy tính Như nói trên,ta biểu diễn bàn cờ ma trận số nguyên 12 phần tử lưu trữ giá trị 10 ô quân ô quan b)Hàm lượng giá Vấn đề gặp phải:Không giống trò chơi cờ vua,cờ tướng,caro…Ta nhìn vào trạng thái bàn cờ ta biết lợi thế,điểm thua thiệt đối thủ mà không cần biết trước hai bên chơi nào.Ô ăn quan lượng vậy,nhưng để giành chiến thắng vào 11 điểm số hai bên,mà điểm số hai bên thay đổi,cập nhật trình chơi, lượng giá cho trạng thái không hiệu Phương pháp giải quyết: Giả sư từ trạng thái a bàn cờ chuyển sang trạng thái b bàn cờ,ta lượng giá cho cặp trạng thái này,và giá trị lượng giá điểm giành trình chuyển trạng thái class ObjValuation { public int[]MatrixBefore=new int[12]; public int point; public int path; public int sign ; public int []MatrixAfter=new int[12]; …} c)Giải thuật Minimax cắt tỉa Anpha-Beta Vấn đề gặp phải:tương tự phần lượng giá.Nếu đạt đến độ sâu cần xét,ta trả lại giá trị lượng giá độ sâu điều thật vô nghĩa trò chơi dùng điểm để phân định thắng thua 12 Thay trả lại giá trị nút lá,trong suốt trình duyệt ta tính tổng điểm nhánh( chuyển trạng thái ta lượng giá,với bên Min điểm âm,của Max dương).Vậy giải thuật Minimax hay cắt tỉa Anpha-Beta,tại nút ta trả lại tổng điểm hai bên nhánh trò chơi.Chính dựa vào tổng điểm này,sự lượng giá,và trình duyệt trò chơi giải thuật Minimax hay cắt tỉa Anpha-Beta thực có ý nghĩa Giải thuật cắt tỉa Anpha-Beta: Thêm hai số Anpha Beta,hằng số anpha giá trị lớn mà người chơi Max có giá trị anpha người chơi Max cập nhật duyệt nhánh con,trong xét đệ quy nhánh con,bên Max truyền cho bên Min số anpha này,nếu bên Min có nhánh trả lại giá trị nhỏ anpha nhánh lại Min không cần xét nữa.Tương tự người chơi Min cập nhật giá trị beta,rồi truyền cho nhánh Max 13 Vấn đề gặp phải sử dụng giải thuật cắt tỉa anpha-beta: Đó tổng điểm,nó thay đổi duyệt từ đáy lên,còn giá trị anpha-beta lại truyền từ xuống theo kiểu nút cha cập nhật từ truyền cho khác Không thể đem giá trị không độ sâu so sánh được,giải pháp nút cha truyền cho thêm giá trị father_point,đây điểm giành nút cha,giá trị anpha-beta cha cập nhật,khi xuống nút con,nút lấy điểm cộng với điểm cha truyền xuống (kết giá trị nút cha) việc so sánh 14 III.Hệ thống chương trình Chương trình game viết hoàn toàn ngôn ngữ Java 1,Cấu trúc hệ thống Hệ thống gồm lớp,trong có lớp chính: +MainMenu:Chứa giao diện bắt đầu chương trình +OanQuan:Chứa giao diện trò chơi,đây lớp trung tâm chương trình +AnpaBeta:Đây lớp cài đặt thuật toán Anpha-Beta +ObjValuation:Đối tượng chính,chứa cặp trạng thái cần lượng giá (MatrixBefore[] MatrixAfter[]),và giá trị lượng giá(point) +Valuation:Đối tượng chứa trạng thái đầu(MatrixBefore[]),chứa nước người chơi( path=ô đi,sign= -1 hướng trái, sign=1,hướng phải) làm sở phục vụ lớp ObjValuation 15 Sơ đồ thiết kế chương trình 2.Một số hình ảnh Demo chương trình: 16 Giao diện bắt đầu: Giao diện thiết lập tùy chọn(Option): 17 Giao diện xem trợ giúp thông tin trò chơi(Help): 18 Giao diện trò chơi: IV)Kết luận Thông qua đề tài này,em hiểu rõ giải thuật học phần Trí tuệ nhân tạo nói chung giải thuật Minimax giải thuật cải tiến cắt tỉa Anpha-Beta nói riêng Do tự code từ đầu tới cuối nên phần đồ họa sơ sài,thiết kế chưa thật tối ưu.Hướng mở rộng đề tài tiếp tục hòa thiện chương trình tốt đồng thời tìm hiểu trò chơi khác nhằm củng cố kiến thức môn học này! V) Tài liệu tham khảo -Slide Trí tuệ nhân tạo (Phạm Văn Hải) -Cuốn sách:Tự viết trò chơi Cờ tướng(Phạm Hồng Nguyên) -Trang web http://play.zing.vn/detail-games/chi-tiet.o-an-quan.6.html 19 http://my.opera.com/hodawa/blog/?startidx=168 20

Ngày đăng: 01/07/2016, 12:54

Từ khóa liên quan

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

Tài liệu liên quan