Quy Hoạch Động Lặp Giá Trị (Value Iteration) Cho Quá Trình Quyết Định Markov
Vk+1(s) = maxa ∈ A [ R(s, a) + γ ∑s' ∈ S P(s' | s, a) Vk(s') ]
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: linear-algebra-matrix-operations.
Nội dung đề bài
Mục tiêu kiến thức
- Một quá trình quyết định Markov hữu hạn được định nghĩa bởi bộ langle S, A, P, R, γ rangle:
- S trạng thái, A hành động.
- Xác suất chuyển trạng thái P(s' | s, a): mảng kích thước (S, A, S).
- Phần thưởng kỳ vọng R(s, a): mảng kích thước (S, A).
- Hệ số chiết khấu γ ∈ [0, 1).
- **Phương trình tối ưu Bellman cho hàm giá trị V*(s)**:
Vk+1(s) = maxa ∈ A [ R(s, a) + γ ∑s' ∈ S P(s' | s, a) Vk(s') ]
- Thuật toán Value Iteration cập nhật lặp cho tới khi:
maxs ∈ S |Vk+1(s) - Vk(s)| < θ
- Chính sách tất định tối ưu tương ứng:
π*(s) = argmaxa ∈ A [ R(s, a) + γ ∑s' P(s' | s, a) V*(s') ]
Yêu cầu
Viết hàm:
def value_iteration(
transitions: np.ndarray,
rewards: np.ndarray,
gamma: float = 0.99,
theta: float = 1e-6
) -> tuple[np.ndarray, np.ndarray]:
pass- Đầu vào:
transitions: mảngfloatkích thước(S, A, S)thỏa mãn ∑s' P(s'|s,a) = 1.rewards: mảngfloatkích thước(S, A).- Đầu ra:
V: vector(S,)chứa giá trị tối ưu của mỗi trạng thái.policy: vector số nguyên(S,)chứa chỉ số hành động tối ưu cho mỗi trạng thái (nếu hòa lấy chỉ số nhỏ nhất).
Input
- Hàm
value_iteration(transitions,rewards,gamma,theta): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng.
Output
- Hàm
value_iteration: Trả về kết quả kiểutuple[np.ndarray, np.ndarray]theo đúng đặc tả kỹ thuật và kích thước quy định.
Ràng buộc
- Thời gian chạy tối đa: 2000ms.
- Giới hạn bộ nhớ: 256MB.
- Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
transitions = np.zeros((2, 2, 2))
transitions[0, 0, 0] = 1.0
transitions[0, 1, 1] = 1.0
transitions[1, 0, 1] = 1.0
transitions[1, 1, 1] = 1.0
rewards = np.zeros((2, 2))
rewards[0, 0] = 0.0
rewards[0, 1] = 10.0
rewards[1, 0] = 0.0
rewards[1, 1] = 0.0
V, policy = value_iteration(transitions, rewards, gamma=0.9)Output
([10., 0.], [1, 0])Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Ví dụ 2
Input
transitions = np.zeros((3, 1, 3))
transitions[0, 0, 1] = 1.0
transitions[1, 0, 2] = 1.0
transitions[2, 0, 2] = 1.0
rewards = np.zeros((3, 1))
rewards[0, 0] = 0.0
rewards[1, 0] = 100.0
rewards[2, 0] = 0.0
gamma = 0.5
V, policy = value_iteration(transitions, rewards, gamma=gamma)Output
([ 50., 100., 0.], [0, 0, 0])Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
