2009-02-03 24 views
32

Tôi quan tâm đến việc xây dựng một công cụ Texas Hold 'Em AI trong Java. Đây là một dự án dài hạn, một dự án mà tôi dự định đầu tư ít nhất là hai năm. Tôi vẫn còn ở trường đại học, chưa xây dựng bất cứ điều gì đầy tham vọng và muốn giải quyết một vấn đề mà sẽ giữ quan tâm của tôi trong dài hạn. Tôi mới vào lĩnh vực AI. Từ lớp cấu trúc dữ liệu của tôi ở trường đại học, tôi biết các khối xây dựng cơ bản như BFS và DFS, backtracking, DP, cây, đồ thị, v.v. Tôi đang học regex, học SCJP và SCJD và tôi sẽ nhanh chóng) thống kê khóa học.Xây dựng một Texas Hold'em chơi AI..từ đầu

Câu hỏi:

-Bạn bắt đầu từ đâu? Tôi nên chọn những cuốn sách nào? AI chạy chương trình chơi poker nào? Tôi có thể lấy một trang từ dự án nguồn mở nào? Bất kỳ tài nguyên AI tốt nào trong Java? Tôi cũng thích học Lisp, Jatha có tốt không?

+10

bạn đã thành công trong việc phát triển có gì không? Đã hơn 2 năm ... –

Trả lời

5

Poker AI nổi tiếng là khó có được vì con người đặt cược không thể đoán trước. Nó thường được chia thành hai phần.

1) Tính toán tỷ lệ cược của bàn tay bạn là người chiến thắng.

2) Xây dựng chiến lược cá cược dựa trên 1.

tôi khuyên bạn nên bắt đầu với rất nhiều số liệu thống kê cho đọc phần 1. Có vẻ như dễ dàng tại blush đầu tiên, nhưng nó thực sự rất phức tạp (và nhận được nó sai sẽ diệt vong AI của bạn). Sau đó chuyển sang các thuật toán di truyền cho phần 2. Các chiến lược đặt cược chủ yếu là các thuật toán di truyền. Họ tự điều chỉnh dựa trên thành công và thất bại trong quá khứ + một số ngẫu nhiên để không thể dự đoán được.

-1

Một kết quả thú vị mà tôi đã nghe là nếu bạn giới hạn các tùy chọn đặt cược, kiểm tra và tất cả trong, bạn có thể viết AI thắng một đối một với xác suất ít nhất 49% và 49,5% nếu đó là (IIRC) không phải trước tiên.

Tôi không biết rằng AI này dễ viết hơn mà người ta biết phải đặt cược bao nhiêu, nhưng thực phẩm cho suy nghĩ: chọn số tiền đặt cược chỉ chiếm 1,5% xác suất thắng.

1

Tôi đã viết một AI Hold'Em trong lớp học của mình. Nó không đặc biệt nâng cao, tôi đã sử dụng một máy Q-Value đi qua một số trạng thái và cập nhật các giá trị Q cho mỗi trạng thái.

Tôi đã tìm thấy dự án AI Poker của Đại học Alberta là nguồn thông tin vô giá để tránh các cạm bẫy.

Như một áp phích nêu trên, bước đầu tiên là làm móng trong một vài quy tắc chơi poker có thể xác định - một trong một bài poker có thể được phát triển theo chương trình.

Một sự cố mà tôi gặp phải là không xây dựng khả năng cấu hình lại sớm. Ví dụ như có thể chuyển đổi lớp học/chơi.

tôi sẽ được quan tâm để nghe như thế nào bạn nhận được trên thả cho tôi một stevekeogh mail tại gmail.com

2

Ngoài ra, cho phép thuật toán di truyền điều chỉnh trọng lượng của mạng lưới thần kinh, trong đó xác định logic quyết định. Cách tiếp cận này rất phù hợp với poker AI.

Tôi tự tạo AI của mình như thế này. Lúc đầu, tôi đã tạo ra ~ 1000 người chơi, những người không biết cách chơi trò chơi. Dựa trên may mắn ban đầu của họ trong tay, tập thể dục của họ đã được trọng và tạo ra thế hệ mới. "Bộ não" mới đang chơi tốt hơn so với thế hệ trước.

Cuối cùng, các cá nhân giỏi nhất chơi rất tốt.

+4

Bạn có xuất bản kết quả của mình ở bất kỳ đâu không? –

+0

Khi bạn nói tốt nhất chơi rất tốt, bạn có ý nghĩa chống lại các AI khác hoặc chống lại con người? Tôi nghĩ rằng một thuật toán di truyền sẽ hoạt động kém. Poker là về sự hiểu biết đối thủ của bạn, không phải tỷ lệ cược. Trừ khi thuật toán di truyền của bạn bao gồm thông tin về khoảng cách từ nút khi cá cược tôi sẽ tìm thấy kết quả của bạn nghi ngờ. – jmucchiello

+1

Bạn đã không nhận được nó. GA đã không thực hiện ở tất cả, các mạng lưới thần kinh đã làm. GA chỉ là để phát triển lưới (điều chỉnh trọng lượng) dựa trên thành công của họ. Tôi đã chơi với cá nhân giỏi nhất và nó khá tốt. Không có mô hình phát hiện được trong logic của nó. Tôi cũng đặt 500k tay từ một khách hàng chơi bài và tạo ra các mô hình từ một vài người chơi giỏi nhất (với mạng thần kinh). Cá nhân giỏi nhất cũng đã đánh bại chúng. BB trung bình khoảng 1,5 sau một triệu tay. – nhaa123

2

Như đã đề nghị, cuốn sách Lý thuyết về Poker thực sự là nguồn thông tin vô giá để chơi trò chơi cũng như xây dựng AI. Bạn có lẽ nên mua nó vì nó không chi phí nhiều.

Nhóm đại học Alberta của đại học hiện nay là nhà nước-of-the-nghệ thuật, mặc dù họ có cạnh tranh gay gắt nổi lên mỗi bây giờ và sau đó. (Không phải tất cả các chương trình poker và AI nghiên cứu trong lĩnh vực này là công khai vì sự cám dỗ để sử dụng kết quả của một người trong poker internet, mặc dù đó là bị cấm.)

Trước tiên, bạn nên quyết định loại poker nào bạn sẽ giải quyết trước. hai người chơi hold'em là khá nhiều giải quyết, mặc dù con người tốt nhất vẫn đưa ra một cuộc chiến thực sự với AI tốt nhất có sẵn. AI có những ưu điểm chính trên con người bằng cách sử dụng bộ nhớ hoàn hảo không giới hạn của bàn tay trong quá khứ, phân tích hoàn hảo các mẫu dựa trên đó và vì chúng là máy móc, chúng không nghiêng như hầu như tất cả mọi người.

Cố định Hold'em có lẽ là dễ nhất để crack, vì vậy bạn có thể muốn bắt đầu với 1-1 hold'em cố định và sau đó quyết định những gì bạn muốn làm tiếp theo.

Dưới đây là một số khía cạnh mà thay đổi chiến lược đúng (và AI của bạn):

  • Một trò chơi tiền mặt là khác nhau từ một giải đấu -Các số lượng người chơi làm cho các quyết định khác nhau.
  • Hold'em không phải là poker duy nhất. Omaha, Stud và những thứ khác tồn tại và được phát rộng rãi .
  • Giới hạn cố định khác với Giới hạn nồi, khác với Giới hạn số .
  • Để đánh bại tốt nhất, bạn cần phải bao gồm rất nhiều điều rất tinh tế mà người chơi giỏi nhất nghĩ đến khi họ chơi. Để đánh bại một trò chơi nghiệp dư thấp, không ai trong số những thứ này được tính.

Nếu bạn quyết định để đi cho No Limit Hold'em, bạn có thể muốn kiểm tra hàng loạt ba-book Harrington trên Hold'em và một cuốn sách No Limit Poker - Lý thuyết và Thực hành. Đã đọc khá nhiều sách về poker, tôi có thể nói những cuốn sách này kết hợp với Lý thuyết Xì phé là đủ.

3

Tôi đã viết một động cơ Texas Hold'em Poker video trong Java

Mã này là một công cụ cốt lõi cho Texas Hold'em mà không cần quan điểm và những người khác

http://github.com/phstc/javapokertexasholdem

0

Chỉ cần để thêm vào các liên kết ở trên, một trong những điều quan trọng cần thực hiện sẽ là http://en.wikipedia.org/wiki/Kelly_criterion, điều này sẽ giúp tìm ra kích thước tối ưu của các cược đã đưa ra tỷ lệ cược dự kiến ​​trong một loạt các cược. Với con người có thể có sai sót trong phán đoán về tỷ lệ cược, nhưng nếu chương trình AI của bạn có thể khơi gợi một số tỷ lệ cược chuẩn hóa dựa trên bất kỳ thuật toán nào thì kỹ thuật đặt cược này cân bằng cả rủi ro và phần thưởng cho người chơi cờ bạc. dung dịch.

2

Tôi không chắc bạn thích trò chơi chính xác nào, nhưng cách tiếp cận điển hình là tạo ra một phiên bản trừu tượng nhỏ hơn nhiều, giải quyết trò chơi nhỏ hơn, sau đó ánh xạ các tình huống trò chơi thực sự trở lại trò chơi trừu tượng tạo lời khuyên. Hầu hết các tài liệu học thuật bỏ qua các chi tiết của quá trình này có lợi cho việc trình bày kết quả về hội tụ, khai thác và kết quả cạnh tranh.

Tuy nhiên, có một số cơ sở mã có sẵn công khai trình bày việc triển khai hoàn chỉnh. Một trong những cái tốt nhất là Fell Omen:

http://www.deducer.org/pmwiki/pmwiki.php?n=Main.ArtificialIntelligencePoker

Đây là một hoàn chỉnh bot chiến lược cơ bản có sử dụng chơi hư cấu để tối ưu hóa các chiến lược cho các trò chơi trừu tượng. Đó là một điểm khởi đầu tốt vì nó khá đơn giản, đầy đủ và đại diện cho một bài thuyết trình tốt về cách tiếp cận trò chơi trừu tượng.

Nếu bạn quan tâm trong việc phát triển xi AI, tôi sẽ khuyên bạn nên đọc tất cả mọi thứ từ năm 2007 và trên từ nhóm chơi poker UA và sinh viên Tuomas Sandholm của:

http://www.cs.cmu.edu/~sandholm/

http://poker.cs.ualberta.ca/publications.html

Các vấn đề liên quan