Genetic Programming - Nhiệm vụ hạ cánh tàu vũ trụ

Legos LightLegos Light
2 min read
💡
Kỳ trước, mình đã thực hiện 1 demo bằng Q-Learning về cách huấn luyện tàu vũ trụ hạ cánh. Kỳ này, cũng y hệt setup bài toán như vậy, mình sẽ dùng Genetic Programming thực hiện nhiệm vụ tương tự.

Nếu như bạn không nhớ hoặc chưa biết Giải Thuật Di Truyền Genetic Programming là gì thì có thể vào bài viết trước đây của mình để xem lại nhé.

Nhắc lại vấn đề

Nhiệm vụ của bạn là phải huấn luyện tàu vũ trụ hạ cánh trong điều kiện có trọng lực kéo xuống, và có gió ngẫu nhiên đẩy tàu văng sang trái hoặc sang phải. Tàu có các động cơ đẩy: TRÁI, PHẢI, LÊN. Tàu hạ cánh thành công nếu:

  • Hạ cánh vào vùng quy định

  • Vận tốc tiếp đất bao gồm vận tốc hướng xuống và vận tốc hướng ngang phải bé hơn các giá trị cho trước.

Setup cho bài toán Genetic Programming

  • Nhiễm sắc thể Chromosome là một chuỗi các hành động được thể hiện bằng 1 mảng (array) có kích thước cố định mà mỗi phần tử là đại diện cho một hành động cụ thể tại mỗi frame liên tiếp nhau có giá trị đại diện từ \(0-3\):

    • \(0\) - Không làm gì cả

    • \(1\) - Bay lên

    • \(2\) - Bay sang trái

    • \(3\) - Bay sang phải

  • Từ đó, các phương pháp lai ghép (crossover), phương pháp biến dị (mutate) hoàn toàn giống như phương pháp của các bài toán trước.

Demo

🙁
Thực ra, sau khi xây dựng xong demo, mình thấy cách mình áp dụng Genetic Programming như này không tốt lắm để giải quyết bài toán này vì nó không linh hoạt trong kích thước chromosome, không thể huấn luyện được nếu thay đổi vị trí xuất phát liên tục. 😥☹🥴

Ở demo này, mình vẽ ra tất cả các tàu vũ trụ trong quần thể, và chỉ xuất phát tại một điểm cố định với các setup như sau:

  • Chromosome length = 160

  • Tốc độ hạ cánh an toàn phương dọc \(v_{\text{y_safe}} = 2.0\)

  • Tốc độ hạ cánh an toàn phương ngang \(v_{\text{x_safe}} = 1.2\)

0
Subscribe to my newsletter

Read articles from Legos Light directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Legos Light
Legos Light