-
Notifications
You must be signed in to change notification settings - Fork 6
MakeENV
Link git hệ thống mẫu: RockPaperScissors
- Chứa thông tin về tất cả các yếu tố có trong game. Có thể hiểu env giống như góc nhìn của người quản trò (trọng tài) đứng ngoài quan sát, có thể thấy được trạng thái của bàn chơi và trạng thái của toàn bộ người chơi.
- Mô phỏng env dưới dạng một hoặc nhiều array để phù hợp với việc sử dụng thư viện “python numba” tối ưu thời gian chạy.
- Thiết kế env như nào? Tìm hiểu và quan sát những người khác chơi game để bước đầu xác định các thông tin cần phải mô phỏng trong env.
-
Actions: Gồm tất các cả các hành động mà Agent có thể thực hiện trong game. Khi thiết kế, các actions được kí hiệu là các số tự nhiên tăng dần, bắt đầu từ 0 cho đến n-1, với n là “tổng số actions có thực hiện trong game”.
-
Game flow diagram: thể hiện mối quan hệ giữa env và actions, từ khi bắt đầu game đến lúc kết thúc game: Với env đã biết thì Agent có thể thực hiện những actions nào. Với mỗi action thì env sẽ thay đổi như thế nào.
- Là trạng thái của env mà Agent có thể quan sát được.
- Mô phỏng bằng duy nhất một numpy array, một chiều.
- Về các dữ liệu có tính chất phân loại khi đưa từ env vào state
- State của agent ở các vị trí khác nhau phải có chung một cách biểu diễn
Function | Input | Input Description | Ouput | Output Description |
---|---|---|---|---|
initEnv | None | np.array 1D | np.array 1D | env ở trạng thái ban đầu |
getAgentState | np.array 1D | env hiện tại | np.array 1D | state agent ở trạng thái hiện tại |
stepEnv | np.array 1D | env hiện tại | np.array 1D | env ở trạng thái mới sau khi áp dụng action |
getValidActions | np.float64 | state | np.float64 | Action có thể hành động |
getReward | np.float64 | state | int | 1: win, 0: loss, -1: Chưa kết thúc |
getActionSize | None | int | Tổng số action | |
getStateSize | None | int | Size của state array | |
getAgentSize | None | int | tổng số Agent tham gia đấu | |
checkEnded | np.array 1D | env | int | -1 chưa kết thúc game, 0 -> n: index của người thắng |
one_game | Một ván chơi | |||
n_games | n ván chơi, n là số ván ở đầu vào | |||
Run | Agent, int, any, int | Agent, số trận chơi, file data agent, level | Hàm để bắt đầu sử dụng hệ thống |
Đây là thủ tục bắt buộc để kiểm tra sau khi làm một hệ thống Hàm trả về thông tin đúng sai các quy định của hệ thống, nếu có lỗi sẽ trả ra các lỗi đang có Các bài test đang có trong hệ thống:
- Check độ dài State thay đổi trong quá trình chạy
- Check độ dài Actions thay đổi trong quá trình chạy
- Check đâu ra có đúng tiêu chuẩn 0, 1 hay không
- Check State âm
- Check chạy với agent numba và không numba
- Check số trận kết thúc khác với tổng số ván chơi
- Check số trận thắng khi dùng getReward với số ván thắng khi trả ra khi dùng numba_main_2
- Check getValidActions không bị lỗi khi nhập state bất kỳ
from setup import make
from tests.CheckEnv import check_env
env = make("RockPaperScissors")
print(check_env(env))
trên terminal
pip install pytest
pytest
Khi code một hệ thống mới, có thể test lại bằng cách mô phỏng lại một ván chơi gồm n người chơi với nhau, kiểm tra lại luật chơi
- Tạo một hệ thống mô phỏng đồ hoạ theo hướng dẫn
- Kiểm tra lại một ván game
Contributions are Welcome!