Đồ án thực hành môn Trí tuệ nhân tạo - BTL2
# 1. Tạo và kích hoạt virtual environment
python3 -m venv venv
source venv/bin/activate
# 2. Cài đặt dependencies
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
# 3. Chạy game
python3 main.py
# 4. Hoặc chạy evaluation
python3 main.py --evaluateGặp vấn đề? Xem phần Troubleshooting bên dưới.
Project này hiện thực game playing agent cho trò chơi Gomoku (Cờ Caro) với 2 giải thuật:
- Minimax với Alpha-Beta Pruning (75% điểm)
- Machine Learning Agent (25% điểm)
- Kích thước: Bàn cờ 15x15
- Luật chơi: Người chơi lần lượt đặt quân cờ (X hoặc O), người nào tạo được 5 quân liên tiếp theo hàng ngang, dọc, hoặc chéo sẽ thắng
- Hệ số nhánh: Rất cao (tối đa 225 nước đi có thể)
- Độ sâu cây: Có thể lên đến 225 (tổng số ô trên bàn cờ)
btl2-ai/
├── game.py # Logic trò chơi Gomoku
├── agents.py # Các agent: Random, Minimax, ML
├── gui.py # Giao diện người dùng với Pygame
├── evaluate.py # Hệ thống đánh giá agents
├── requirements.txt # Dependencies
└── README.md # File này
cd /Applications/homework/btl2-aimacOS/Linux:
# Tạo virtual environment
python3 -m venv venv
# Kích hoạt virtual environment
source venv/bin/activate
# Upgrade pip
python3 -m pip install --upgrade pip
# Cài đặt dependencies
python3 -m pip install -r requirements.txtWindows:
# Tạo virtual environment
python -m venv venv
# Kích hoạt virtual environment
venv\Scripts\activate
# Upgrade pip
python -m pip install --upgrade pip
# Cài đặt dependencies
python -m pip install -r requirements.txtHoặc dùng Setup Script tự động:
# macOS/Linux
./setup.sh
# Windows
setup.batpygame: Giao diện đồ họanumpy: Xử lý ma trận và mảngtensorflow: Machine Learningscikit-learn: Các thuật toán ML bổ trợmatplotlib: Vẽ biểu đồ (optional)
# Chạy quick test để verify
python3 quick_test.pyLưu ý cho macOS:
- Nếu gặp lỗi
pip: command not found, dùngpython3 -m pipthay vìpip - Nếu gặp lỗi với tensorflow, có thể cần cài Rosetta 2 (cho Mac M1/M2):
softwareupdate --install-rosetta
Lưu ý: Đảm bảo đã kích hoạt virtual environment trước khi chạy:
source venv/bin/activate # macOS/Linux
# hoặc
venv\Scripts\activate # Windows# macOS/Linux
python3 main.py
# hoặc trực tiếp
python3 gui.pyGiao diện sẽ hiển thị menu với các tùy chọn:
- Human vs Minimax: Chơi với AI Minimax
- Human vs ML Agent: Chơi với AI Machine Learning
- Minimax vs Random: Xem Minimax đấu với Random
- ML vs Random: Xem ML Agent đấu với Random
- Minimax vs ML: Xem hai AI đấu với nhau
# Chạy evaluation đầy đủ
python3 evaluate.py
# hoặc dùng main.py với options
python3 main.py --evaluate
# Tùy chỉnh số trận (mặc định 50)
python3 main.py --evaluate --games 20Script này sẽ:
- Chạy 50 trận giữa Minimax vs Random Agent
- Chạy 50 trận giữa ML Agent vs Random Agent
- Chạy 20 trận giữa Minimax vs ML Agent
- Hiển thị tỉ lệ thắng và kết quả đánh giá
Yêu cầu đạt được:
- ✅ Minimax thắng Random >= 90%
- ✅ ML Agent thắng Random >= 60%
- Chọn nước đi ngẫu nhiên từ các ô trống
- Dùng làm baseline để đánh giá
Đặc điểm:
- Độ sâu tìm kiếm: 3-4 levels
- Sử dụng Alpha-Beta Pruning để cắt tỉa
- Heuristic evaluation function đánh giá:
- Chuỗi 5 quân: 100,000 điểm
- Chuỗi 4 quân: 10,000 điểm
- Chuỗi 3 quân: 1,000 điểm
- Chuỗi 2 quân: 100 điểm
- Tối ưu hóa: Chỉ xét các nước đi gần quân cờ đã có (radius=2)
Độ phức tạp:
- Time complexity: O(b^d) với pruning
- Space complexity: O(d)
- b = branching factor (high), d = depth
Đặc điểm:
- Sử dụng pattern recognition
- Đánh giá dựa trên các mẫu (patterns):
- Five in a row: 100,000
- Open four: 50,000
- Four: 10,000
- Open three: 5,000
- Three: 1,000
- Phân tích threat (mối đe dọa) của đối thủ
- Có element của exploration (random factor)
Cải tiến có thể thêm:
- Neural Network với TensorFlow
- Reinforcement Learning
- Training từ database các ván đấu
- ✅ Agent chơi đúng luật
- ✅ Minimax thắng Random >= 90%
- ✅ ML Agent thắng Random >= 60%
- Minimax: 75% điểm BTL
- ML Agent: 25% điểm BTL
- Mỗi 10% thiếu win rate = -2 điểm
Giao diện menu với các chế độ chơi
- Bàn cờ 15x15 đẹp mắt
- Info panel hiển thị thông tin game
- Highlight nước đi cuối cùng
- Button Reset và Menu
Hiển thị người thắng cuộc và thông báo
- UI Đẹp Mắt: Giao diện hiện đại với Pygame
- Nhiều Chế Độ: Human vs AI, AI vs AI
- Tối Ưu Hóa: Alpha-Beta Pruning, Smart Move Selection
- Đánh Giá Tự Động: System test tự động với kết quả chi tiết
- Mở Rộng Dễ Dàng: Code structure rõ ràng, dễ thêm agent mới
- Deep Learning: Sử dụng CNN cho board evaluation
- MCTS: Monte Carlo Tree Search
- Reinforcement Learning: AlphaGo-style training
- Opening Book: Database các nước đi mở màn
- Endgame Solver: Giải chính xác endgame
- Performance Profiling: Tối ưu hóa tốc độ
- Đồ án BTL2 môn Trí tuệ nhân tạo
- Năm học 2025
MIT License - Sử dụng tự do cho mục đích học tập
- Russell & Norvig - "Artificial Intelligence: A Modern Approach"
- Minimax Algorithm with Alpha-Beta Pruning
- Gomoku AI Strategies
- Python Game Development with Pygame
Lưu ý: Project này được thiết kế cho mục đích học tập. Code có thể được cải tiến thêm về mặt performance và AI strategy.
Tạo video thuyết trình (tối đa 15 phút) bao gồm:
- Giới thiệu trò chơi Gomoku
- Demo các chế độ chơi
- Giải thích thuật toán Minimax
- Giải thích ML Agent
- Kết quả evaluation
- Kết luận và hướng phát triển
Giải pháp: Dùng python3 -m pip thay vì pip
python3 -m pip install -r requirements.txtGiải pháp: Đảm bảo bạn đang ở đúng thư mục
cd /Applications/homework/btl2-ai
python3 -m venv venv
source venv/bin/activate
# Bạn sẽ thấy (venv) xuất hiện ở đầu dòng lệnh
(venv) ➜ btl2-aiGiải pháp 1: Cài Rosetta 2
softwareupdate --install-rosettaGiải pháp 2: Dùng TensorFlow phiên bản cho Apple Silicon
python3 -m pip install tensorflow-macos
python3 -m pip install tensorflow-metalGiải pháp 3 (tạm thời): Skip TensorFlow nếu chỉ test Minimax
# Chỉnh sửa requirements.txt, comment dòng tensorflow
# tensorflow==2.15.0 # Comment dòng này
# Sau đó cài các package còn lại
python3 -m pip install pygame numpy scikit-learn matplotlibGiải pháp: Cài đặt pygame đúng cách
python3 -m pip uninstall pygame
python3 -m pip install pygameNếu vẫn lỗi, thử:
brew install sdl2 sdl2_image sdl2_ttf sdl2_mixer
python3 -m pip install pygameGiải pháp: Cấp quyền thực thi
chmod +x setup.sh
./setup.shGiải pháp: Đảm bảo virtual environment được kích hoạt
# Kích hoạt lại venv
source venv/bin/activate
# Kiểm tra xem đang dùng python nào
which python3
# Nên hiển thị: /Applications/homework/btl2-ai/venv/bin/python3
# Cài lại trong venv
python3 -m pip install -r requirements.txtChạy lệnh sau để kiểm tra:
python3 -c "import pygame, numpy; print('✓ Dependencies OK')"Nếu không có lỗi, bạn đã sẵn sàng!
Tham khảo các file hướng dẫn khác:
QUICKSTART.md- Hướng dẫn nhanhUSAGE.md- Hướng dẫn chi tiếtSTART_HERE.txt- Getting started guide