Skip to content

MakeENV

Ngô Xuân Phong edited this page Jun 1, 2023 · 8 revisions

TỔNG HỢP HƯỚNG DẪN CODE HỆ THỐNG

Link git hệ thống mẫu: RockPaperScissors

1. Thiết kế mô phỏng environment, actions và state

1. Environment (env)

  • 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.

2. Actions

  • 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”.

3. State

  • 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

2. Xây dựng các hàm trong hệ thống

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

3. Test lại hệ thống

3.1 Test bằng hàm trong 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ỳ

3.1.1 import check_env

from setup import make
from tests.CheckEnv import check_env

env = make("RockPaperScissors")
print(check_env(env))

3.1.2 test bằng pytest

trên terminal

pip install pytest
pytest

3.2 Test bằng cách mô phỏng lại trực tiếp

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

3.3 Test lại bằng hệ thống đồ hoạ

  • 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
Clone this wiki locally