1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo PHÁT TRIỂN hệ THỐNG THÔNG MINH

22 4 0

Đ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

lOMoARcPSD|11424851 HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA CÔNG NGHỆ THÔNG TIN - BÁO CÁO PHÁT TRIỂN HỆ THỐNG THƠNG MINH Mã học phần INT14151 Nhóm Lớp học phần 05 Nhóm tập lớn 02 Tên mã đề tài tập lớn 20 - Hệ thống thi đấu Othello với người chơi Các thành viên nhóm Nguyễn Thanh Châu – B19DCCN096 Vũ Minh Hoàng - B19DCCN285 Nguyễn Văn Bến - B19DCCN065 Nguyễn Viết Huy - B19DCCN315 Đào Ngọc Huy - B19DCCN305 lOMoARcPSD|11424851 HÀ NỘI, 09/2022 Chương – Xây dựng thuật toán I - Xây dựng liệu (đối với đề tài dùng học máy): - Đề tài khơng sử dụng học máy có giám sát hay bán giám sát II – Đánh giá lựa chọn thuật toán: Lựa chọn thuật toán: - Minimax (từ github thầy đề xuất): thuật tốn tìm kiếm có đối thủ Xét đồ thị rộng lớn với node trạng thái bàn cờ Mỗi node mang số điểm khác nhau, tìm đường ngắn đến node có số điểm dương vơ (khi bạn thắng trò chơi) - Monte Carlo Tree Search: tương tự đồ thị Minimax, trạng thái bắt đầu có node bàn cờ Sau “sinh” trạng thái xảy từ trạng thái tại, phân tích đến độ sâu chắn việc dẫn người chơi đến trạng thái thắng hay thua, trả kết (VD: 3/7 nước cờ khả thi thời điểm dẫn người chơi đến thắng ván cờ, etc) - Negamax: Một biến thể minimax, trừ số điểm hai người chơi cho để xét tính âm/dương tổng điểm hai người chơi, thay tính điểm người - Genetic Algorithm: Giải thuật di truyền, nhận gen dạng xâu nhị phân mang nhiều thông tin khác nhau, từ chọn lọc giữ lại thơng tin cần thiết để “di truyền” lại cho hệ Ở đây, trạng thái bàn cờ mã hoá thành nhiều “gen” Lựa chọn phương pháp đánh giá phù hợp: - Phương pháp lựa chọn: đánh giá chéo, cho engine đánh vòng tròn Lí do: tiết kiệm thời gian, thích hợp để test hàng loạt - Negamax bị loại bỏ, thuật toán tương đồng với Minimax, độ hiệu qua thử nghiệm hai thuật tốn khơng tốt so với Minimax Quá trình đánh giá: - Các thuật toán : o Genetic Algorithm viết tắt GA o Monte Carlo Tree Search viết tắt MCTS o Minimax MNM - Ta đánh giá theo cặp 25 ván đấu (trước sau) lOMoARcPSD|11424851 - Các thông số thêm bảng : o Depth : Độ sâu tìm kiếm (Với thuật tốn dựa việc tìm kiếm) o Win : Số chiến thắng o Lose : Số thất bại o Win Ratio : Tỉ lệ chiến thắng o Corner Hit : Số lần mà thuật tốn chiếm vị trí góc bàn cờ Đây vị trí quan trọng để có lợi o Danger Zone Hit : Số lần mà thuật toán đặt cờ vào hình vng thứ hai tính từ ngồi vào Đây vùng dễ bị đối phương chiếm góc cạnh bàn cờ o Missed Turn : Số lần bỏ qua lượt nhường đối phương (Vì khơng cịn nước để đánh tiếp) o Draw : Số trận hòa - GA vs MNM GA đánh trước Win Lose Win Ratio Corner Hit Danger Zone Hit Missed Turn Số trận hòa GA 10 15 0.4 45 lần 244 lần 52 lần MNM 13 0.52 53 lần 256 lần 52 lần lần lOMoARcPSD|11424851 MNM đánh trước Win Lose Win Ratio Corner Hit Danger Zone Hit Missed Turn Số trận hòa MNM 23 0.92 68 lần 240 lần 17 lần GA 23 0.08 29 lần 260 lần 27 lần lần Xét tổng thể, thuật toán MNM xác GA - MNM vs MTCS MNM đánh trước Win Lose Win Ratio Corner Hit Danger Zone Hit Missed Turn Số trận hòa MNM 22 0.08 10 lần 306 lần 46 lần MTCS 22 0.88 89 lần 202 lần 65 lần lần Xét tổng thể, thuật tốn NVB nhanh có tỉ lệ chiến thắng cao Thuật tốn MNM hịa thắng NVB từ độ sâu tìm kiếm từ trở lên - GA vs MTCS GA đánh trước GA MTCS lOMoARcPSD|11424851 Win Lose Win Ratio Corner Hit Danger Zone Hit Missed Turn Số trận hòa 19 0.2 23 lần 240 lần 50 lần 19 0.76 75 lần 257 lần 45 lần lần Xét tổng thể, thuật toán MTCS nhanh có tỉ lệ chiến thắng cao Thuật tốn GA hịa thắng MTCS từ độ sâu tìm kiếm từ 4, trở lên Vậy ta sử dụng thuật tốn Minimax cho chương trình, đánh bại tất thuật tốn lại Chương – Kiến trúc client server I - Mơ tả Client a Menu bên ngồi : Giao diện tổng quan : o Giao diện khởi động game lOMoARcPSD|11424851 o Ấn vào biểu tượng tam giác phía giao diện để hiển thị menu o Menu có tùy chọn chính:  Click vào khung Cờ Othello hình để bắt đầu chơi lOMoARcPSD|11424851  Click vào khung cài đặt để vào giao diện cài đặt  Trong giao diện cài đặt có tùy chọn bật/tắt âm lượng tùy chọn độ sâu thuật toán game lOMoARcPSD|11424851  Click vào khung Thơng tin nhóm để xem thơng tin thành viên nhóm lOMoARcPSD|11424851 lOMoARcPSD|11424851 Sơ đồ lớp : Mô tả lớp : o MainMenuSceneUI : Là lớp chứa menu của giao diện o MainMenu : Được thừa kế từ Interface Menu Lớp chứa Panel Ta chọn Panel việc click chuột MainMenu đẩy Panel khác hiển thị Panel vừa chọn trung tâm o Panel (Bảng giao diện) : Như tên gọi, bảng giao diện mơ hình tương tự form java Nó chứa thành phần giao diện thêm trực tiếp từ IDE Các bảng giao diện thay đổi kích cỡ tùy ý để phù hợp với hình o PanelContent : Chứa nội dung bảng giao diện Chủ yếu thành phần giao diện Button, Dropdown, Label… o AboutTeamPanelContent : Hiển thị thơng tin nhóm tập lOMoARcPSD|11424851 o SettingPanelContent : Được thừa kế từ PanelContent Hiển thị tùy chọn cài đặt Các hàm UpdateSoundValue UpdateDepthValue cập nhật giá trị từ InputField nằm giao diện tương ứng vào cài đặt hệ thống trò chơi o OthelloPanelContent : Được thừa kế từ PanelContent Hiển thị giao diện chọn chế độ chơi Hàm SaveVersusSetting() thị trò chơi thuộc dạng (Máy-Máy, Người-Người, Người-Máy) o GameSetting : Một lớp toàn cục (static) chứa thông tin cài đặt hệ thống trị chơi (âm thanh, hình ảnh, …) b Khi chơi game : Giao diện tổng quan : o Bàn cờ mô hiển thị quân đen quân trắng tương đương với quân cờ người chơi o Các quân cờ có màu thứ ba hệ thống gợi ý nước hợp lệ o Tại góc bên trái hình có tùy chọn lOMoARcPSD|11424851 o Khi click vào ô tuỳ chọn, hệ thống hiển thị tùy chọn cho người chơi lựa chọn: Tiếp tục, khởi động lại thoát o Chọn “Tiếp tục” người chơi muốn tiếp tục ván đấu o Chọn “Khởi động lại” để bắt đầu ván cờ mới, giữ nguyên tuỳ chỉnh thuật toán người chơi o Chọn “Khởi động lại”, hệ thống quay giao diện lúc ban đầu Downloaded by nhung nhung (nhungnguyen949595@gmail.com) lOMoARcPSD|11424851 Sơ đồ lớp : Mô tả lớp :  PlaySceneUI : Chứa menu hiển thị người dùng chơi game  MainHUD : Chứa bảng điều khiển giao diện  LogPanel : Bảng giao diện có nhiệm vụ hiển thị thơng tin Log góc hình  PauseMenu : Một menu chứa Button giao diện Mỗi button gọi tới hàm RestartGame(), ContinueGame(), QuitGame() chúng click c Bắt đầu đánh cờ : Đây phần lõi hoạt động game nên khơng có mơ tả giao diện Sơ đồ lớp : Downloaded by nhung nhung (nhungnguyen949595@gmail.com) lOMoARcPSD|11424851 Mô tả lớp: o StateBasedGameManager : Quản lí trị chơi Othello Đây máy trạng thái thay đổi liên tục vòng tròn trạng thái với o StateController : Đại diện cho trạng thái trị chơi Chúng thực số hành động với trị chơi, ví dụ: Kiểm tra bàn cờ, hỏi server nước đi, yêu cầu người chơi đánh … Cách thức mà trạng thái thực dó OnEnter() -> OnExit() -> Chuyển sang trạng thái o StateController_Initialize : Trạng thái khởi tạo ban đầu trò chơi Đặt bàn cờ cách gọi Reset() o StateController_Player : Một lớp trừu tượng đại diện cho trạng thái điều khiển bàn cờ o StateController_Human : Được thừa kế từ StateController_Player Cho phép người dùng tham gia đặt quân cờ vào vị trí Downloaded by nhung nhung (nhungnguyen949595@gmail.com) lOMoARcPSD|11424851 click hình (với điều kiện nước hợp lệ màu cờ mà người đánh được) o StateController_AskServer : Được thừa kế từ StateController_Player, thay người chơi đánh cờ trực tiếp, trạng thái tạo kết nối với Server tiến hành “hỏi” Server nước tốt o AvailableMoveAnalyzer : Một lớp tiện ích dùng để phân tích bàn cờ xem quân cờ có nước o AvailableMoveSelector : Cho phép người dùng chọn quân cờ khả dụng để đánh o StateController_Checker : Mỗi người chơi, máy thực xong nước mình, lớp tiếp hành kiểm tra số lượng quân cờ bàn, số lượng không đổi sau lượt thơng báo kết thúc trị chơi o SimpleTCPClient : Một lớp bao bọc Client C# Mục đích nhằm đơn giản hóa q trình giao tiếp với Server Ngồi cịn có lớp dùng để quản lí bàn cờ, o Board_PieceManager : Chịu trách nhiệm thêm quân cờ vào bàn cờ, xóa quân cờ, đặt lại bàn cờ tùy theo yêu cầu StateController Downloaded by nhung nhung (nhungnguyen949595@gmail.com) lOMoARcPSD|11424851 II - Mô tả Server a Giao diện : Server định đối kháng cờ Othello thiết kế theo hướng nhận phản hồi tin nhắn Do dùng dạng Console đơn giản để thông báo luồng tin nhắn tới b Kiến trúc: Biểu đồ lớp : Downloaded by nhung nhung (nhungnguyen949595@gmail.com) lOMoARcPSD|11424851 Tổng quan lớp / module : o Module Main:  Đóng vai trị khởi động server  Module tạo đối tượng OthelloServer bắt đầu gọi OthelloServer.Start() để tiến hành lắng nghe kết nối từ client o Module OthelloServer:  Tiếp nhận kết nối từ Client  Khi có Client kết nối thành cơng, tạo Thread riêng biệt để xử lí u cầu mà Client u cầu  Start() : Tiến hành chạy server, lắng nghe kết nối tới  AcceptConnection() : Chấp nhận kết nối thành công, tạo Thread để chạy với kết nối  ThreadCall() : Hàm thread gọi liên tục để xử lí tin nhắn tới gửi tin nhắn o Module MessageHandler :  Tiếp nhận tin nhắn từ Client thông qua Receive()  Phân tích tin nhắn thành dạng từ điển Server sử dụng từ điển kết tin nhắn phân tích từ lớp để xử lí thơng qua Parsing()  Gửi tin nhắn tới Client theo yêu cầu Server thơng qua Send()  Chuẩn hóa tin nhắn thành dạng Client hiểu  Server gửi lại từ điển kết xử lí cho module này, sau module có nhiệm vụ chuyển tới Client o Interface Response :  Đóng vai trị giao diện chung cho thuật tốn tìm kiếm nước Downloaded by nhung nhung (nhungnguyen949595@gmail.com) lOMoARcPSD|11424851  Che dấu đóng gói cách thuật tốn cài đặt khỏi phần Server  Các lớp thừa kế phải cài đặt phương thức ResponseRequest  Ln đảm bảo tính qn trả lời câu hỏi mà Client đưa  Đóng vai trị xử lí cho Server đánh cờ o lớp thừa kế Interface Response :  Cài đặt dạng thuật toán khác : Minimax, Cắt tỉa Alpha, Beta, Tham Lam  Đối với thuật tốn có tìm kiếm độ sâu, ta u cầu thêm giá trị độ sâu tìm kiếm tin nhắn từ Client cần thiết Chi tiết chức xử lí cấp : o Các lớp thừa kế Interface Response đóng vai trị xử lí cấp  Mỗi lớp triển khai thuật tốn khác nhau, cách thức xử lí khác tốc độ thực thi khác  Hiện tại, Server có lớp xử lí cấp :  Response_Greedy : Cài đặt thuật toán tham lam Đây lớp có tốc độ xử lí nhanh nhất, độ xác thấp  Response_Minimax : Cài đặt thuật tốn minimax Lớp có tốc độ xử lí chậm Greedy, lại có nước tốt  Response_ABPruning : Một cải tiến minimax Lớp có tốc độ nhanh Độ xác Minimax với hàm lượng giá tương đương - Nhìn chung, lớp xử lí cấp có chung cách thức làm việc sau: Downloaded by nhung nhung (nhungnguyen949595@gmail.com) lOMoARcPSD|11424851 o Cả lớp xử lí có quy trình thực giống sơ đồ trên, kết trả khác chủ yếu phần đánh giá nước nằm thuật tốn Do đó, ngồi lớp MinimaxPredict, có ABPruningPredict, GreedyPredict thực chức tương tự o Việc gọi SetupBoard() để cài đặt trạng thái bàn cờ từ Client tới Server trình bày phần sau III - Mô tả giao tiếp Client – Server a Tổng quan : o Client Server giao tiếp giao thức TCP o Cả hai sử dụng địa IP loopback với cổng kết nối 9999 o Các tin nhắn gửi theo Ví dụ Client gửi -> Server gửi > Client gửi … o Khi bên gửi tin nhắn cho bên kia, bên không gửi tin bên phản hồi xong nhằm đảm bảo tính qn thơng tin Client Server o Server mở nhiều luồng xử lí cặp kết nối với Client lúc Do đảm bảo Client ln sử dụng chức mà Server cung cấp Downloaded by nhung nhung (nhungnguyen949595@gmail.com) lOMoARcPSD|11424851 o Khi Client ngắt kết nối chừng với Server Server ngắt kết nối theo sau hoàn thành xử lí b Về việc trao đổi liệu: Mỗi trạng thái bàn cờ Client mơ tả dạng chuỗi kí tự gồm ‘0’, ‘1’, ‘*’ Trong : o ‘0’ để quân cờ màu trắng o ‘1’ để quân cờ màu đen o ‘*’ để trống Ví dụ bàn cờ Othello vừa bắt đầu ******** ******** ******** ***10*** ***01*** ******** ******** ******** Khi người chơi di chuyển xong tới lượt máy, Client gửi tin nhắn Server có dạng sau : [ALGORITHM-TYPE:….] [BOARD-STR:…] [DEPTH:…] [TEAM:…] Trong : o [ALGORITHM-TYPE: {x}] để Client muốn hỏi thuật toán x nước nên x MINIMAX, ABPRUNING, GREEDY, v v… o [BOARD-STR: {x}] để trạng thái bàn cờ cho Server x chuỗi kí tự mơ tả o [DEPTH: {x}] để độ sâu tìm kiếm mà Client mong muốn Với x giá trị độ sâu Downloaded by nhung nhung (nhungnguyen949595@gmail.com) lOMoARcPSD|11424851 o [TEAM: {x}] để Server nên tìm nước tốt cho màu cờ x = màu cờ trắng màu cờ đen, trường hợp khác khơng phản hồi Server sau phân tích tin nhắn mà Client gửi tiến hành xử lí Từ thông tin tin nhắn mà Client cung cấp, Server chọn thuật tốn phù hợp thơng qua phương thức AssignInterface () giải nước gửi Client thông qua ResponseRequest() c Sau tìm nước tốt thuật tốn có sẵn, Server trả kết nước gửi tin nhắn cho Client Tin nhắn có dạng : [PLACE-NEW-PIECE: {a}-{b}][TEAM: {x}] Trong : o [PLACE-NEW-PIECE: {a}-{b}] yêu cầu Client đặt quân cờ vào vị trí định, với a, b tọa độ cần đặt o [TEAM : {x}] màu quân cờ đặt, với x = màu trắng màu đen d Client nhận tin nhắn, phân tích tin nhắn đặt qn cờ vào bàn cờ e Sơ đồ mô tả mối quan hệ lớp hai bên: Downloaded by nhung nhung (nhungnguyen949595@gmail.com) lOMoARcPSD|11424851 Downloaded by nhung nhung (nhungnguyen949595@gmail.com) ... đặt hệ thống trị chơi (âm thanh, hình ảnh, …) b Khi chơi game : Giao diện tổng quan : o Bàn cờ mô hiển thị quân đen quân trắng tương đương với quân cờ người chơi o Các quân cờ có màu thứ ba hệ thống. .. UpdateSoundValue UpdateDepthValue cập nhật giá trị từ InputField nằm giao diện tương ứng vào cài đặt hệ thống trò chơi o OthelloPanelContent : Được thừa kế từ PanelContent Hiển thị giao diện chọn chế... gen dạng xâu nhị phân mang nhiều thơng tin khác nhau, từ chọn lọc giữ lại thông tin cần thiết để “di truyền” lại cho hệ Ở đây, trạng thái bàn cờ mã hoá thành nhiều “gen” Lựa chọn phương pháp

Ngày đăng: 12/12/2022, 23:07

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w