Trong bài viết trước Nhập môn Dynamic Programming, chúng ta đã thống nhất rằng DP là “bản đồ” để tìm đường đi ngắn nhất. Nhưng để máy tính có thể đọc được bản đồ đó, chúng ta không thể đưa cho nó một chiếc xe thật. Chúng ta phải đưa cho nó các Phương trình Toán học.
Bước này được gọi là Mô hình hóa (Mathematical Modeling). Đây là phần “xương sống” để mô phỏng các thuật toán điều khiển. Nếu mô hình sai, mọi kết quả tối ưu đều vô nghĩa.
Hôm nay, chúng ta sẽ cùng nhau chuyển đổi bài toán vật lý của xe FCHEV sang ngôn ngữ của Toán học: Không gian trạng thái (State-Space) và Hàm mục tiêu (Cost Function). 📐
1. Mô hình hóa hệ thống (System Modeling)
Trước khi điều khiển năng lượng, ta cần biết chiếc xe cần bao nhiêu năng lượng để di chuyển. Đây là bài toán Động lực học dọc trục (Longitudinal Dynamics).
Công suất yêu cầu tại bánh xe () tại bất kỳ thời điểm nào được tính dựa trên định luật II Newton:
Từ lực kéo, ta tính được công suất điện mà hệ thống (Fuel Cell + Battery) phải cung cấp (sau khi trừ đi hiệu suất của Motor và Inverter):
Lưu ý: Trong thuật toán DP, chu trình lái ( và ) đã biết trước, nên là một hằng số đầu vào (Disturbance/Input) tại mỗi bước thời gian.
2. Thiết lập bài toán tối ưu (Optimization Problem Formulation)
Để áp dụng Dynamic Programming, chúng ta phải đưa hệ thống về dạng chuẩn của Điều khiển tối ưu rời rạc (Discrete-time Optimal Control). Cấu trúc chuẩn bao gồm 3 yếu tố: (Trạng thái), (Điều khiển), và (Nhiễu).
a. Biến trạng thái (State Variable - )
Biến trạng thái là “ký ức” của hệ thống. Trong bài toán EMS cho xe lai, biến quan trọng nhất thay đổi theo thời gian chính là Trạng thái năng lượng của Pin (State of Charge - SOC).
Phương trình chuyển trạng thái (State Transition Equation) từ bước sang :
(Đừng hoảng sợ, đây chỉ là công thức tính dòng điện được viết lại dựa trên mô hình pin Rint đơn giản).
b. Biến điều khiển (Control Variable - )
Đây là biến quyết định mà chúng ta (hoặc máy tính) phải đưa ra. Chúng ta có thể chọn điều khiển dòng điện pin hoặc công suất Fuel Cell. Thông thường, mình chọn Công suất Fuel Cell làm biến điều khiển:
c. Cân bằng công suất (Power Balance Constraint)
Tại mọi thời điểm, năng lượng cung cấp phải bằng năng lượng tiêu thụ:
Suy ra, công suất pin () là biến phụ thuộc: .
3. Hàm mục tiêu (Cost Function)
Mục tiêu của DP là tìm ra chuỗi điều khiển để cực tiểu hóa một hàm chi phí .
Trong đó:
-
(Instantaneous Cost): Chi phí tức thời tại mỗi bước. Ở đây chính là lượng Hydro tiêu thụ (gram) trong giây đó. (Giá trị được tra từ bản đồ hiệu suất Fuel Cell).
-
(Terminal Cost): Chi phí phạt tại điểm cuối cùng.
- Để đảm bảo công bằng, chúng ta thường ép buộc lúc kết thúc hành trình phải bằng lúc bắt đầu ().
- Nếu xe về đích mà bị lệch, ta sẽ phạt một số điểm cực lớn (Infinity penalty) để DP buộc phải tìm đường khác.
4. Các ràng buộc (Constraints)
Toán học cho phép là âm vô cùng hoặc dương vô cùng, nhưng Vật lý thì không. Chúng ta phải đặt ra các giới hạn cứng (Inequality Constraints):
-
Ràng buộc Fuel Cell:
-
Ràng buộc Pin (Battery):
5. Ví dụ Tính toán Minh họa (Case Study)
Để hình dung rõ hơn cách DP hoạt động tại một bước thời gian (), chúng ta hãy cùng làm một bài toán nhỏ với các số liệu giả định.
Giả thiết tại thời điểm :
- Nhu cầu: Người lái đạp ga, yêu cầu công suất .
- Trạng thái hiện tại: Pin đang có .
- Thời gian: Bước nhảy .
- Thông số Pin: Dung lượng (), Điện áp hở mạch , Điện trở trong .
Thuật toán DP sẽ thử nghiệm (discretize) 3 phương án điều khiển () khả thi cho Fuel Cell và so sánh chúng:
Bước 1: Phân chia công suất (Power Split)
Từ phương trình cân bằng năng lượng :
- Option A (Chế độ EV): Tắt Fuel Cell (). Pin gánh toàn bộ .
- Option B (Chế độ Load Follow): Fuel Cell gánh vừa đủ (). Pin nghỉ .
- Option C (Chế độ Sạc): Fuel Cell chạy mạnh (). Dư 15kW nạp vào pin .
Bước 2: Tính toán Chi phí Tức thời (Instantaneous Cost - )
Tra bản đồ tiêu thụ nhiên liệu (Fuel Map) của Fuel Cell:
- Option A: .
- Option B: .
- Option C: .
Bước 3: Cập nhật Trạng thái (State Transition - )
Tính lượng điện năng pin thay đổi trong 1 giây và mới. (Công thức tính nhanh: )
- Option A (Xả 30kW): Tốn năng lượng lớn. tụt xuống .
- Option B (Nghỉ): Không tốn năng lượng. giữ nguyên .
- Option C (Sạc 15kW): Nhận năng lượng. tăng lên .
Bước 4: Đánh giá Tổng chi phí (Cost-to-Go + Instantaneous Cost)
Đây là bước quyết định. DP không chỉ nhìn hiện tại mà còn nhìn tương lai. Giá trị tương lai () được lấy từ bảng kết quả đã tính ngược từ đích về (đây là ma trận Cost-to-Go).
Giả sử ma trận Cost-to-Go cho biết: Nếu SOC thấp (59.8%), chi phí tương lai sẽ rất đắt (vì sau này phải sạc bù). Nếu SOC cao (60.1%), chi phí tương lai rẻ.
| Phương án | Chi phí nhiên liệu hiện tại () | Chi phí tương lai giả định () | TỔNG CHI PHÍ () |
|---|---|---|---|
| A () | 0 g (Rẻ nhất hiện tại) | 100 g (Đắt do pin cạn) | 100 g |
| B () | 0.45 g | 50 g (Trung bình) | 50.45 g |
| C () | 0.75 g (Đắt nhất hiện tại) | 49.8 g (Rẻ do pin đầy) | 50.55 g |
Kết luận của DP: Tại giây này, Option B là tối ưu nhất (Total Cost thấp nhất là 50.45). Mặc dù Option A không tốn giọt Hydro nào ngay lúc này, nhưng DP biết rằng việc làm cạn pin sẽ phải trả giá đắt trong tương lai, nên nó không chọn.
Tổng kết
Chúng ta vừa hoàn thành việc “dịch” một chiếc xe vật lý thành các công thức toán học:
- Trạng thái (): SOC của pin.
- Hành động (): Công suất Fuel Cell.
- Mục tiêu (): Tiết kiệm Hydro tối đa.
- Luật chơi (Constraints): Giới hạn vật lý của thiết bị.
Khi đã có đầy đủ các thành phần này, việc còn lại chỉ là giải phương trình Bellman bằng thuật toán. Nhưng giải như thế nào trên máy tính? Làm sao để xử lý lưới trạng thái (Discretization)?
Trong bài viết tiếp theo, mình sẽ chia sẻ code MATLAB chi tiết để giải bài toán này. Hãy chuẩn bị sẵn sàng MATLAB nhé! 💻