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

LUẬN văn tốt NGHIỆP đại học PHÁT TRIỂN GAME cờ GÁNH

54 100 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

Thông tin cơ bản

Định dạng
Số trang 54
Dung lượng 1,21 MB

Nội dung

ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC PHÁT TRIỂN GAME CỜ GÁNH HỘI ĐỒNG: Khoa Học Máy Tính 02 GVHD: Ths Vương Bá Thịnh GVPB: Ths Võ Văn Vinh -o0o SVTH: Vũ Ngọc Đức Nguyễn Tấn Lộc 51200858 1427023 TP HỒ CHÍ MÍNH, THÁNG 06/2019 LỜI CAM ĐOAN Nhóm báo cáo luận văn xin cam đoan rằng, ngoại trừ kết tham khảo từ cơng trình khác ghi rõ luận văn, nội dung trình bày luận văn chúng tơi thực chưa có nội dung nộp để lấy cấp trường khác TPHCM, ngày 12 tháng 04 năm 2019 LỜI CẢM ƠN Để hồn thành luận văn này, nhóm nghiên cứu phải trải qua trình đào tạo bản, kỹ lưỡng Thầy Cô Giảng Viên, Cán Bộ Khoa Khoa Học Kỹ Thuật Máy Tính, trường Đại Học Bách Khoa Thành Phố Hồ Chí Minh Hành trình trải qua suốt khóa học nhóm chúng em hành trình trải qua nhiều thử thách gian nan Đã có lúc Thầy Cơ vơ nghiêm khắc kỷ luật với hành vi sai trái thiếu hiểu biết chúng em Nhưng chúng em hiểu điều xuất phát từ quan tâm tình u thương Thầy Cơ Đây q vơ quý báu để thành viên nhóm trưởng thành hơn, tích lũy nhiều kiến thức, kinh nghiệm cho đường tương lai Chúng em khơng thể qn dẫn tận tình, động viên tình cảm ấm áp Thầy Cơ dành cho thành viên Cả nhóm khơng thể hồn thành khóa học khơng có điều Tất thành viên nhóm nghiên cứu chân thành cảm ơn q Thầy Cơ dìu dắt chúng em suốt chặng đường vừa qua Nhóm nghiêm cứu vơ biết ơn Thầy Vương Bá Thịnh giảng dạy cho chúng em mơn có ý nghĩa quan trọng, làm tiền đề cho luận văn Trí tuệ nhận tạo Lập trình game Đồng thời Thầy người trực tiếp hướng dẫn nhóm hồn thành đề tài luận văn Cả nhóm xin hứa với quý Thầy Cô, sau trường chúng em cơng dân tử tế, có tri thức, có trình độ, vận dụng tất kiến thức tốt đẹp mà Thầy Cơ truyền dạy để góp phần xây dựng tổ quốc nói riêng giói nói chung ngày tốt đẹp Chúng em xin hứa! Nhóm nghiên cứu Vũ Ngọc Đức Nguyễn Tấn Lộc TĨM TẮT Cách mạng công nghiệp 4.0 (CMCN 4.0) , diễn với tốc độ nhanh chóng Tác động mạnh mẽ làm thay đổi tất mặt đời sống xã hội người, vật chất lẫn tinh thần Đây thời điểm vô thách thức đầy hội cho đất nước người Việt Nam Đặc biệt ngành Khoa Học Và Kỹ Thuật Máy Tính, phải cờ đầu để nghiên cứu ứng dụng thành tựu công nghệ CMCN 4.0 vào đời sống lĩnh vực xã hội Việc thành hay bại định trực tiếp vào khả Việt Nam sánh vai với cường quốc Năm Châu hay khơng Trí tuệ nhân tạo (AI) lĩnh vực quan trọng CMCN 4.0 Con người tạo AI có khả đánh bại người số lĩnh vực Một số ví dụ cụ thể là:  Ngày 06/08/2018 đánh dấu bước tiến lớn với ngành công nghệ AI nhân loại, trí tuệ nhân tạo OpenAI Elon Musk thức đánh bại, nói “nghiền nát” game thủ Dota chuyên nghiệp gồm Fog, Merlini, Blitz, Capitalist MoonMeander  Ngày 24/1/2019 Trí tuệ nhân tạo dựa DeepMind Google đời mang tên AlphaStar đánh bại game thủ Starcraft II chuyên nghiệp TLO MaNa với tỷ số cách biệt 10-1 Nhóm nảy sinh ý tưởng việc áp dụng AI vào game trí tuệ mang tính giải trí thịnh hành Việt Nam như: Cờ Tướng , Cờ Vua , Cờ Vây, Cờ Gánh… Sau xem xét kỹ lưỡng, nhóm định chọn game Cờ Gánh làm đề tài nghiên cứu mức độ phổ biến, tính đơn giản nó, dễ tiếp cận người đề tài nghiên cứu AI game Cờ Gánh mẻ Nội dung báo cáo trình bày nghiên cứu AI sử dụng giải thuật đến AI sử dụng giải thuật nâng cao Cụ thể loại AI:  MiniMax  Monte Carlo Tree Search Với loại AI có bảng đánh giá lực loại Và cuối tổng kết, so sánh, đánh giá MỤC LỤC Phần - Tổng quan Phát biểu vấn đề: Mục tiêu đề tài nghiên cứu: Phần - Cơ sở lý thuyết chung .8 Giới thiệu: 1.1 Board Game .8 1.2 Cờ Gánh .8 Luật chơi: Lý thuyết: 11 3.1 Phân tích trò chơi .11 3.2 Không gian trạng thái trò chơi 11 3.3 Hệ số phân nhánh .11 3.4 Mạng nơron nhân tạo (Neural Networks) 12 3.4.1 Mạng nơron nhân tạo (Neural Networks) gì? 12 3.4.2 Một số kiểu Neural Networks 13 3.5 AI game Cờ Gánh 16 3.6 Mơ hình thiết kế .16 3.7 Dòng điều khiển .17 Phần - Mơ hình trí tuệ nhân tạo MiniMax 19 Cơ sở lý thuyết: .19 1.1 Hàm lượng giá 19 1.2 Hàm đánh giá tuyến tính có trọng số 20 1.3 Chọn tham số .21 Hiện thực MiniMax: 21 Phần - Mơ hình trí tuệ nhân tạo Monte Carlo Tree Search 26 Cơ sở lý thuyết: .26 1.1 Bước lựa chọn: 28 1.2 Bước mở rộng: 29 1.3 Bước mô phỏng: .30 1.4 Bước truyền ngược: 31 1.5 Lựa chọn bước di chuyển: 31 Hiện thực: .32 Phần 5: Thiết kế UI 34 Giao diện hình khởi động Game: 34 Giao diện vào chơi Game: 35 Giao diện Setting Game: 36 Phần - Kiểm chứng đánh giá giải thuật 37 Phần - Tổng kết 39 Đánh giá kết quả: 39 Đóng góp luận văn: 39 Hướng phát triển: 39 3.1 Các cải tiến thêm vào MiniMax 40 3.2 Các cải tiến thêm vào MCTS 41 3.3 Một số hướng mở rộng tương lai: 42 DANH SÁCH HÌNH VẼ 43 DANH SÁCH BẢNG VÀ BIỂU ĐỒ 44 Tài liệu tham khảo .45 Phụ Chương 1: Giải thuật Minimax 47 Phụ Chương 2: Giải thuật MCTS .49 Phần - Tổng quan Phát biểu vấn đề: Theo phát triển thời đại, nhu cầu người ngày nâng cao để phục vụ cho sống Game loại hình giải trí phổ biến thời điểm ngày phát triển đa dạng thể loại Trong Board game thể loại dễ tiếp cận với người, dễ chơi, phù hợp với lưới tuổi, nên chúng em chọn phát triển game Board game có tên là: Cờ gánh Cờ gánh trò chơi dân gian Việt Nam, ưa chuộng, hay thú vị Nó có lâu đời, với mong muốn, mang lại trò chơi, đơn giản, thú vị cải biến thêm chút luật chơi, dựa luật chơi có sẵn, nhóm mong trị chơi tạo hứng thú cho người chơi Mục tiêu đề tài nghiên cứu: Tạo AI hiểu luật chơi thi đấu cờ với người chơi Tìm cách thắng nhiều điểm Kèm theo AI phải: -Ln ln đánh theo luật trị chơi -Tìm cách hiệu dựa tiêu chí cho trước Phần - Cơ sở lý thuyết chung Giới thiệu: 1.1 Board Game Board Game bao gồm bề mặt chơi (board) chia thành lĩnh vực điền tập hợp phần tử di động Một cách phổ biến nhất, phần liên kết trực tiếp với người chơi, bề mặt chơi thể môi trường vượt khỏi tầm kiểm soát trực tiếp người chơi Người chơi điều động phần tử họ bề mặt chơi nỗ lực để nắm bắt phần người chơi khác, đạt mục tiêu, giành quyền kiểm soát lãnh thổ, có số mặt hàng có giá trị Mối quan tâm người chơi trị chơi phân tích mối quan hệ hình học phần 1.2 Cờ Gánh Bàn cờ bề mặt phẳng có 25 điểm nằm giao điểm lưới vng nhân hình vẽ bên phải Các đường kẻ nằm ngang, thẳng đứng đường chéo, vẽ bàn cờ hình vẽ bên dưới, thể đường di chuyển phép quân cờ Tại xuất phát điểm, quân cờ hai người chơi bố trí điểm nằm rìa ngồi bàn cờ hình vẽ bên Bàn cờ gánh có 16 qn chia làm hai màu cho hai người chơi Trong bàn cờ này, phe màu xanh có quân phe màu đỏ có qn hình vẽ bên Mục tiêu người chơi ăn quân cờ đối phương Trận cờ kết thúc khi: + Một người chơi khơng cịn cờ bàn, người chiến thắng + Hoặc hai người đến lúc (thỏa số bước quy định ban đầu, ví dụ 200 bước mà chưa phân thắng thua) ta đếm số cờ lại bàn cờ, người chơi cịn nhiều cờ hơn, người chiến thắng Hình Hình ảnh bàn cờ gánh Luật chơi: Mỗi quân cờ di chuyển bước theo đường thẳng hay đường kẽ đến giao điểm trống Hình Mô tả cách di chuyển quân cờ Có hai cách để ăn quân cờ đối phương:  Gánh: Khi quân cờ phe vào hai quân cờ phe kia, hai quân cờ hai bên ăn Trong Hình 3, quân cờ H di chuyển theo mũi tên xanh vào hai quân đỏ N Q Hai quân bị ăn Hình Hình ảnh cách Gánh để ăn hai quân cờ khác  Nhảy qua đầu để ăn: Một quân cờ vị trí E, bay qua đầu qn cờ vị trí J, ăn quân cờ vị trí J Hình Hình ảnh cách Nhảy qua đầu quân cờ khác để ăn Phần - Tổng kết Đánh giá kết quả: Mục tiêu đề tài nghiên cứu đề hoàn thành Các agent tạo giải thuật có khả đánh cờ chiến thắng người chơi Đảm bảo yêu cầu đề ban đầu:  Luôn ln đánh theo luật trị chơi  Tìm cách hiệu dựa tiêu chí cho trước Mặc dù có khả chiến thắng, agent cần cải thiện để nâng cao tỉ lệ chiến thắng Nhất agent Monte Carlo Tree Search với tiềm phát triển cao, agent Mini Max tiềm để cải thiện bị giới hạn Đóng góp luận văn: Vì lý người tiên phong nghiên cứu đề tài trí tuệ nhân tạo áp dụng cho trò chơi Cờ Gánh Việt Nam, nên nhóm cịn gặp nhiều khó khăn, bỡ ngỡ Như thiếu báo khoa học làm tài liệu tham khảo Phải tham khảo sản phẩm Game xuất chợ ứng dụng Ngoài mục tiêu luận văn, nhóm nghiên cứu cố gắng tìm tịi, giải vấn đề nêu đạt đóng góp sau:  Kiểm chứng đánh giá giải thuật môi trường mô thực nghiệm  Cải biến cách chơi, góp phần tạo thú vị, dễ tiếp cận cho người Hướng phát triển: Game trí tuệ nhân tạo có xu hướng phát triển mạnh mẽ tương lai Nhóm mong muốn đóng góp phần cơng sức tiếp tục phát triển đề tài luận văn theo hướng sau: 3.1 Các cải tiến thêm vào MiniMax Mặc dù MiniMax triển khai với kỹ thuật trên, có khía cạnh thuật tốn cải thiện Vì lý đó, số gợi ý cho cải tiến bổ sung thảo luận phần đây: Ngẫu nhiên Trong số tình huống, đặc biệt MiniMax sử dụng hàm lượng giá đơn giản để đánh giá game, số tất bước di chuyển kết thúc với giá trị lượng giá Trong tình này, chọn bước di chuyển số bước di chuyển có giá trị tiện ích Điều dẫn đến tình agent ln ln di chuyển sai Điều này cải thiện cách chọn bước di chuyển cách ngẫu nhiên, số bước chuyển có giá trị tiện ích cao Cũng sử dụng hàm xác suất để chọn bước di chuyển Giá trị lượng giá sử dụng dẫn khả lựa chọn di chuyển, nghĩa chọn bước di chuyển ngẫu nhiên số tất di chuyển có thể, di chuyển với giá trị tiện ích cao có hội chọn cao Tìm kiếm liên tục Tối ưu hóa tìm kiếm cách cải thiện thuật tốn tìm kiếm thủ tục MiniMax cách khác để tăng hiệu suất thủ tục Với cải thiện cho phép thủ tục lưu trò chơi lần di chuyển tiết kiệm thời gian tính tốn cách khơng phải tính tốn lại tồn lần di chuyển, điều kết hợp với duyệt sâu lặp lặp lại để giảm 30% chi phí Một thuật tốn tìm kiếm cần nhiều nhớ số lỗ hổng bị để theo dõi cấu trúc liệu nâng cao cần có để thực điều Nếu thực cách, việc cải thiện tiết kiệm thời gian, việc giảm thời gian tính tốn bị hạn chế Dùng hash table Một cách khác để giảm hệ số phân nhánh đảm bảo hai trạng thái giống hệt không duyệt Điều đặt số yêu cầu việc triển khai MiniMax Trước hết, hai trạng thái trò chơi giống hệt phát hiện, phải ln trạng thái gần với nhất, khám phá Điều không cần thiết MiniMax sử dụng tìm kiếm duyệt sâu Ngồi ra, hai trạng thái tìm thấy cấp độ, số chúng nên duyệt Việc thực hash table để tránh duyệt trạng thái dẫn đến giảm đáng kể hệ số phân nhánh, chiều ngược lại nhớ sử dụng tăng cao Trong MiniMax, trạng thái xóa khỏi nhớ duyệt, tất trạng thái phải lưu giữ nhớ tìm thấy bước tốt Lập trình đa luồng Một cách hồn toàn khác để cải thiện hiệu suất MiniMax giúp có thêm sức mạnh xử lý Vì hầu hết máy tính có nhiều xử lý, nên tăng hiệu suất cách tận dụng tất xử lý Việc triển khai MiniMax theo cách an toàn theo luồng làm phức tạp việc triển khai, nhược điểm đáng ý 3.2 Các cải tiến thêm vào MCTS Dù MCTS làm việc khơng cần đến tri thức đặc trưng trò chơi Tuy nhiên, tri thức cần thiết để cải tiến phương pháp học tăng cường, học tăng cường phần MCTS Tìm kiếm lệch Thơng thường cơng thức UCB tìm số nước hợp lệ cách công bằng, nước hợp lệ lại thường bỏ qua Tuy nhiên, ta thêm giá trị cộng thêm vào giá trị UCB nước để điều chỉnh nước thực tốt hay xấu dựa vào tri thức đặc trưng từ ván cờ Lúc giá trị UCB bị lệch so với cơng thức thơng thường, việc tìm kiếm xác Theo cách đó, có nhiều công thức đưa ra, đề cập đến phần lý thuyết Giả lập lệch Trong giai đoạn giả lập, nước chọn ngẫu nhiên từ tập nước hợp lệ trạng thái ván cờ Tuy nhiên, để việc giả lập ngẫu nhiên hội tụ nhanh cần có định hướng tri thức đặc trưng từ ván cờ Lúc cần vai trò hàm lượng giá hành động, hàm xây dựng từ tri thức tốn chi phí việc xây dựng hàm lượng giá trạng thái 3.3 Một số hướng mở rộng tương lai: Có thể chơi online , liên kết mạng xã hội để mời bạn bè chơi cùng, bảng xếp hạng top người chơi Cải biến thêm cách chơi: biến quân cờ người khác thành quân cờ Áp dụng Machine Learning để cải thiện thông minh AI Game DANH SÁCH HÌNH VẼ Hình Hình ảnh bàn cờ gánh Hình Mô tả cách di chuyển quân cờ Hình Hình ảnh cách Gánh để ăn hai quân cờ khác 10 Hình Hình ảnh cách Nhảy qua đầu quân cờ khác để ăn 10 Hình Cấu tạo Neural 12 Hình Mạng tự kết hợp 14 Hình Mạng kết hợp khác kiểu .14 Hình Mạng truyền thẳng .15 Hình Mạng phản hồi 15 Hình 10 Mơ hình thiết kế game cờ gánh 16 Hình 11 Đồ thị dòng điều khiển .18 Hình 12 Cây trò chơi ban đầu 22 Hình 13 Bước duyệt sâu 22 Hình 15 Kết cuối .23 Hình 14 Các bước duyệt sâu 23 Hình 16 Các bước giải thuật MCTS1 27 Hình 17 Node chưa expand 29 Hình 18 Node sau expand 29 Hình 19 Flowchart q trình mơ 30 Hình 20 Giao diện hình khởi động 34 Hình 21 Giao diện vào chơi Game 35 Hình 22 Giao diện Setting Game 36 DANH SÁCH BẢNG VÀ BIỂU ĐỒ Bảng Thời gian chạy Minimax .24 Bảng Kết đối kháng phiên hàm lượng giá khác 25 Bảng Thời gian chạy MCTS 33 Bảng Kết đối kháng Minimax MCTS 37 Y Biểu đồ Thời gian chạy Minimax 37 Biểu đồ Thời gian chạy MCTS .38 Tài liệu tham khảo  Pritchard, D.B. 1994 "Chess itself is a simple game to learn but its resulting strategy is profound." . The Encyclopedia of Chess Variants Games & Puzzles Publications p. 84. ISBN 0-9524142-0-1 Madjidzadeh, Y 2003 Jiroft, The earliest oriental civilization Organization of the Ministry of Culture and Islamic Guidance, Tehran Piccione, Peter A July–August 1980. "In Search of the Meaning of Senet" (PDF). Archaeology: 55–58 Retrieved 2018-07-14 Jensen, Jennifer 2003. "Teaching Success Through Play: American Board and Table Games, 1840-1900". Magazine Antiques bnet Retrieved 2009-02-07 Fessenden, Tracy 2007. Culture and Redemption: Religion, the Secular, and American Literature Princeton University Press p. 271 Retrieved 2009-02-07 Hofer, Margaret K 2003. The Games We Played: The Golden Age of Board & Table Games Princeton Architectural Press Retrieved 2009-02-07 Downey, Greg November 1999. "Information Networks and Urban Spaces: The Case of the Telegraph Messenger Boy". Antenna Mercurians Archived from the original on August 2008 Retrieved 2009-02-07 a  b  c Damian Gareth Walker November 2014. A Book of Historic Board Games Lulu.com p. 13. ISBN 978-1-326-03480-1 a  b Smith, Quintin October 2012. "The Board Game Golden Age" Archived from the original on June 2013 Retrieved 2013-05-10 10  Duffy, Owen. "Board games' golden age: sociable, brilliant and driven by the internet". the Guardian 11 G Chaslot, S De Jong, J.-T Saito, J Uiterwijk 2006 "Monte-carlo tree search in production management problems", Proceedings of the 18th BeNeLux Conference on Artificial Intelligence Citeseer, pp 91-98 12 Coulom, R 2006 Efficient selectivity and backup op-erators in Monte-Carlo tree search In 5th InternationalConference on Computer and Games, 2006-05-29,72– 83 13 Robbins, H 1952 "Some aspects of the sequential design of experiments" Bulletin of the American Mathematical Society 58 (5): 527–535 doi:10.1090/S0002-9904-1952-09620-8 14 L Kocsis and C Szepesvari 2006 Bandit based monte-carlo planning In 15th EuropeanConference on Machine Learning (ECML), pages 282–293 15 Gelly, S.; Wang, Y.; Munos, R.; and Teytaud, O 2006.Modification of UCT with patterns in Monte-Carlo Go.Technical Report 6062, INRIA 16 P Auer, N Cesa-Bianchi, and P Fischer 2002 Finite time analysis of the multiarmedbandit problem Machine Learning, 47(2-3):235–256 17 Ikeda, K., Viennot, S 2013 “Efficiency of static knowledge bias in monte-carlo tree search”, In: Computers and Games 2013 Phụ Chương 1: Giải thuật Minimax protected int minimax(int playerTurn, ref int[][] upPlayerPos,ref int[][] downPlayerPos,ref List closeStack,int floor,int maxFloor) {         int result;         switch(gameComplete(upPlayerPos, downPlayerPos)){             case PlayerTurn.DOWNPOS:                 result = -1;                 break;             case PlayerTurn.UPPOS:                 result = 1;                 break;             default:                 result = 0;                 break;         }         if(result != 0) { return 18 * result * playerTurn;}         if(floor > maxFloor) { if (playerTurn == 1) { Debug.Log("Player play!"); return functionA(upPlayerPos.Length, downPlayerPos.Length) * playerTurn; } else { Debug.Log("Player play!"); return functionB(upPlayerPos.Length, downPlayerPos.Length) * playerTurn; }             return (upPlayerPos.Length - downPlayerPos.Length) * playerTurn;         }         floor += 1;         int[] move = new int[]{};         var score = -18;         var moves = simpleMoves(playerTurn, upPlayerPos, downPlayerPos);         var movesArray = moves.Select(item => item.ToArray()).ToArray();         demStack++;         bool checkExist = false;         string computerEncode = string.Empty;         string playerEncode = string.Empty;         foreach (var item in movesArray)         {             int[][] upPlayerPosTemp = (int[][]) upPlayerPos.Select(i => i.ToArray()).ToArray();             int[][] downPlayerPosTemp = (int[][]) downPlayerPos.Select(i => i.ToArray()).ToArray();                          changeBoard(false, item, playerTurn,ref upPlayerPosTemp,ref downPlayerPosTemp);             checkExist = false;             computerEncode = Flatten(upPlayerPosTemp);             playerEncode = Flatten(downPlayerPosTemp);             // Debug.LogError(computerEncode + " " + playerEncode);             foreach (var stackItem in closeStack)             {                 if(computerEncode == stackItem[0] && playerEncode == stackItem[1]) {                     checkExist = true;                     break;                 }             }             if(checkExist) continue;             else {                 closeStack.Add(new List () {computerEncode, playerEncode});             }             var thisScore = -minimax(playerTurn * -1,ref upPlayerPosTemp,ref downPlayerPosTemp,ref closeStack,floor,maxFloor);             if(thisScore > score) {                 score = thisScore;                 move = item;                 // Debug.LogError("Update Score!");             }         }         if(move.Length == 0) { return 0;}         // Debug.LogError("end perfect!");         return score;     } Phụ Chương 2: Giải thuật MCTS public class TreeNode {     static System.Random r = new System.Random();     static double epsilon = 1e-6; public int m_ScorePerKill = 10; public int m_PlayerScore = 0;     static double Cp = 2*(1/Math.Sqrt(2));     public int nodePlayerTurn;     public TreeNode[] children;     public float nVisits, totValue; public int[][] nodeUpPlayerPos/* player 1*/, nodeDownPlayerPos/* player 2*/,              moveDiagonalRightDown, moveDiagonalRightUp,              moveDiagonalLeftDown, moveDiagonalLeftUp; public int[][][] totalWayToMove; public int[] mapSize = new int[2]{5,5};//(Y, X)     public int[] lastMove = null;     public int x = 0;     public int y = 0;     public TreeNode(int playerTurn, int[][] upPlayerPos, int[][] downPlayerPos) { nodePlayerTurn = playerTurn; nodeUpPlayerPos = upPlayerPos; nodeDownPlayerPos = downPlayerPos;     } public PlayerTurn gameComplete(int[][] nodeUpPlayerPos, int[][] nodeDownPlayerPos) {         if(nodeUpPlayerPos.Length ==0) {             return PlayerTurn.DOWNPOS;         }         if(nodeDownPlayerPos.Length == 0) {             return PlayerTurn.UPPOS;         }         return PlayerTurn.NULL;     }     public void selectAction() {         LinkedList visited = new LinkedList();         TreeNode cur = this;         visited.AddLast(this);         while (!cur.isLeaf()) {             cur = cur.select();             visited.AddLast(cur);         }         if (cur.gameComplete(cur.nodeUpPlayerPos, cur.nodeDownPlayerPos) == PlayerTurn.NULL) // non-terminal state         {             cur.expand();             TreeNode newNode = cur.select();             if(newNode != null) {                 visited.AddLast(newNode);                 float value = rollOut(newNode); Debug.Log ("value" + value);                 foreach (TreeNode node in visited) {                     node.updateStats(value);                 }             }             else Debug.LogError ("select action selected a null node");         }         else {             float value = 0f;             switch(cur.gameComplete(cur.nodeUpPlayerPos, cur.nodeDownPlayerPos)){             case PlayerTurn.UPPOS : // pc win                 value = 1.0f;                 break;             case PlayerTurn.DOWNPOS : // player win                 value = 0.0f;                 break;             default : /* keep playing */                 //Debug.Log ("keep playing");                 break;             }             foreach (TreeNode node in visited) {                 node.updateStats(value);             }         }     }          public void expand(/*int[][] upPlayerPos, int[][] downPlayerPos */) {         Debug.Log("expand()"); TreeNode cure = this; var moves = simpleMoves(cure.nodePlayerTurn, cure.nodeUpPlayerPos, cure.nodeDownPlayerPos); int[][] am = moves.Select(item => item.ToArray()).ToArray();             Debug.LogWarning(showInfor(am));         if (moves.Count > 0) { Debug.Log("moves.Count" + moves.Count);             children = new TreeNode[moves.Count];             int[][][] tempUpposar = new int[moves.Count][][];             int[][][] tempDownposar = new int[moves.Count][][];             for (int i = 0; i < moves.Count; i++)             {                 tempUpposar[i] = (int[][]) cure.nodeUpPlayerPos.Clone();                 tempDownposar[i] = (int[][]) cure.nodeDownPlayerPos.Clone();             }                                           for(int i=0; i < moves.Count; i++) {                 children[i] = new TreeNode(-cure.nodePlayerTurn, tempUpposar[i], tempDownposar[i]); changeBoard(true, am[i], -children[i].nodePlayerTurn,ref tempUpposar[i],ref tempDownposar[i]);                 children[i].lastMove = am[i];             }         }     }          private TreeNode select() {         Debug.Log("select()"); TreeNode cur = this;         TreeNode selected = null;         double bestValue = Double.MinValue;         foreach (TreeNode c in cur.children) {             double uctValue = c.totValue / (c.nVisits + epsilon ) + Cp * Math.Sqrt(2 * Math.Log(cur.nVisits + 1) / (c.nVisits + epsilon) ) + r.NextDouble() * epsilon; // Debug.Log("UCT value = " + uctValue);             if (uctValue > bestValue) {                 selected = c;                 bestValue = uctValue;             }         }         return selected;     }     public bool isLeaf() {         //Debug.Log("isLeaf()"); TreeNode cur = this;         return cur.children == null;     }          public float rollOut(TreeNode tn) {         Debug.Log("rollOut()");         TreeNode rollGS = new TreeNode(tn.nodePlayerTurn, tn.nodeUpPlayerPos, tn.nodeDownPlayerPos);         bool stillPlaying = true;         float rc = 0;         int move; System.Random rr = new System.Random();         //Debug.Log ("Start rollout ."); var moves = simpleMoves(rollGS.nodePlayerTurn, rollGS.nodeUpPlayerPos, rollGS.nodeDownPlayerPos); int[][] am = moves.Select(item => item.ToArray()).ToArray(); move = rr.Next(moves.Count);         while ((moves.Count > 0) && stillPlaying) { // make a random move changeBoard(true, am[move], rollGS.nodePlayerTurn,ref rollGS.nodeUpPlayerPos,ref rollGS.nodeDownPlayerPos);             switch(gameComplete(rollGS.nodeUpPlayerPos, rollGS.nodeDownPlayerPos)){             case PlayerTurn.UPPOS : // pc win                 stillPlaying = false;                 rc = 1.0f;                 break;             case PlayerTurn.DOWNPOS : // player win                 stillPlaying = false;                 rc = 0.0f;                 break;             default : /* keep playing */                 //Debug.Log ("keep playing"); var newmoves = rollGS.simpleMoves(-rollGS.nodePlayerTurn, rollGS.nodeUpPlayerPos, rollGS.nodeDownPlayerPos);                 am = newmoves.Select(item => item.ToArray()).ToArray(); move = rr.Next(newmoves.Count); rollGS.nodePlayerTurn = -rollGS.nodePlayerTurn;                 break;             }         }         Debug.Log ("end of rollOut");         return rc;     }          public void updateStats(float value) {         //Debug.Log("updateStats()");         nVisits++;         totValue += value;     }          public TreeNode bestChild() { TreeNode cur = this;         float smallestScore = float.MinValue; TreeNode chosenNode = null; foreach (TreeNode child in cur.children) { if ((child.totValue / child.nVisits + epsilon) > smallestScore || (child.totValue / child.nVisits + epsilon) == smallestScore) { smallestScore = child.totValue / child.nVisits; chosenNode = child; } } return chosenNode;     } ... tiếp cận cho người Hướng phát triển: Game trí tuệ nhân tạo có xu hướng phát triển mạnh mẽ tương lai Nhóm mong muốn đóng góp phần cơng sức tiếp tục phát triển đề tài luận văn theo hướng sau: 3.1... dễ tiếp cận với người, dễ chơi, phù hợp với lưới tuổi, nên chúng em chọn phát triển game Board game có tên là: Cờ gánh Cờ gánh trò chơi dân gian Việt Nam, ưa chuộng, hay thú vị Nó có lâu đời, với... quan Phát biểu vấn đề: Theo phát triển thời đại, nhu cầu người ngày nâng cao để phục vụ cho sống Game loại hình giải trí phổ biến thời điểm ngày phát triển đa dạng thể loại Trong Board game thể

Ngày đăng: 07/08/2021, 18:34

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Pritchard, D.B. 1994. "Chess itself is a simple game to learn but its resulting strategy is profound." . The Encyclopedia of Chess Variants. Games &amp; Puzzles Publications. p. 84. ISBN 0-9524142-0-1 Sách, tạp chí
Tiêu đề: Chess itself is a simple game to learn but its resulting strategy is profound
3. Piccione, Peter A. July–August 1980. "In Search of the Meaning of Senet" (PDF). Archaeology: 55–58. Retrieved 2018-07-14 Sách, tạp chí
Tiêu đề: In Search of the Meaning of Senet
4. Jensen, Jennifer. 2003. "Teaching Success Through Play: American Board and Table Games, 1840-1900". Magazine Antiques. bnet. Retrieved 2009-02-07 Sách, tạp chí
Tiêu đề: Teaching Success Through Play: American Board and Table Games, 1840-1900
6. Hofer, Margaret K. 2003. The Games We Played: The Golden Age of Board &amp; Table Games. Princeton Architectural Press. Retrieved 2009-02-07 Sách, tạp chí
Tiêu đề: Hofer, Margaret K. 2003. The Games We Played: The Golden Age of Board &
7. Downey, Greg. November 1999. "Information Networks and Urban Spaces: The Case of the Telegraph Messenger Boy". Antenna. Mercurians. Archived from the original on 7 August 2008. Retrieved 2009-02-07 Sách, tạp chí
Tiêu đề: Information Networks and Urban Spaces: The Case of the Telegraph Messenger Boy
8. a b c Damian Gareth Walker. 5 November 2014. A Book of Historic Board Games. Lulu.com. p. 13. ISBN 978-1-326-03480-1 Sách, tạp chí
Tiêu đề: a b c
9. a b Smith, Quintin .October 2012. "The Board Game Golden Age". Archived from the original on 1 June 2013. Retrieved 2013-05-10 Sách, tạp chí
Tiêu đề: The Board Game Golden Age
10. Duffy, Owen. "Board games' golden age: sociable, brilliant and driven by the internet". the Guardian Sách, tạp chí
Tiêu đề: Board games' golden age: sociable, brilliant and driven by the internet
11. G. Chaslot, S. De Jong, J.-T. Saito, J. Uiterwijk. 2006. "Monte-carlo tree search in production management problems", Proceedings of the 18th BeNeLuxConference on Artificial Intelligence. Citeseer, pp. 91-98 Sách, tạp chí
Tiêu đề: Monte-carlo tree search in production management problems
12. Coulom, R. 2006. Efficient selectivity and backup op-erators in Monte-Carlo tree search. In 5th InternationalConference on Computer and Games, 2006-05-29,72–83 Sách, tạp chí
Tiêu đề: Coulom, R. 2006. Efficient selectivity and backup op-erators in Monte-Carlo tree search. In 5th InternationalConference on Computer and Games, 2006-05-29,72–
13. Robbins, H. 1952. "Some aspects of the sequential design of experiments". Bulletin of the American Mathematical Society. 58 (5): 527–535.doi:10.1090/S0002-9904-1952-09620-8 Sách, tạp chí
Tiêu đề: Some aspects of the sequential design of experiments
17. Ikeda, K., Viennot, S. 2013. “Efficiency of static knowledge bias in monte-carlo tree search”, In: Computers and Games 2013 Sách, tạp chí
Tiêu đề: Ikeda, K., Viennot, S. 2013. “Efficiency of static knowledge bias in monte-carlo tree search
2. Madjidzadeh, Y 2003. Jiroft, The earliest oriental civilization. Organization of the Ministry of Culture and Islamic Guidance, Tehran Khác
5. Fessenden, Tracy. 2007. Culture and Redemption: Religion, the Secular, and American Literature. Princeton University Press. p. 271. Retrieved 2009-02-07 Khác
14. L. Kocsis and C. Szepesvari. 2006. Bandit based monte-carlo planning. In 15th EuropeanConference on Machine Learning (ECML), pages 282–293 Khác
15. Gelly, S.; Wang, Y.; Munos, R.; and Teytaud, O. 2006.Modification of UCT with patterns in Monte-Carlo Go.Technical Report 6062, INRIA Khác
16. P. Auer, N. Cesa-Bianchi, and P. Fischer. 2002. Finite time analysis of the multiarmedbandit problem. Machine Learning, 47(2-3):235–256 Khác

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w