Sự khác biệt giữa Cây quyết định & Cây hành vi cho trò chơi AI


Câu trả lời:


80

Hai là khá khác nhau. Các chỉ số thực sự là trong tên. Cây quyết định chỉ để đưa ra quyết định. Cây hành vi là để kiểm soát hành vi. Cho phép tôi giải thích. Một sự khác biệt lớn trong hai là cách chúng đi qua, tương tự như cách chúng được đặt ra và các loại 'nút' khác nhau.

Cây quyết định được đánh giá từ gốc đến lá, mọi lúc. Để cây quyết định hoạt động đúng, các nút con của mỗi cha mẹ phải thể hiện tất cả các quyết định có thể có cho nút đó. Nếu một nút có thể được trả lời "Có, Không, Có thể", phải có ba con, nút Có, Không có nút và Có thể nút. Điều này có nghĩa là luôn có một số nút thấp hơn để đi qua, cho đến khi đạt đến một nút cuối. Các giao dịch luôn luôn đi xuống. Dạng đồ họa:

nhập mô tả hình ảnh ở đây

Khá đơn giản. Chúng tôi bắt đầu từ gốc, và dựa trên một số đánh giá, chọn 1, 2 hoặc 3. Chúng tôi chọn 3. Sau đó, chúng tôi thực hiện một số đánh giá khác và chọn B hoặc B ... Vâng, tôi đã sử dụng lại đồ họa từ bên dưới, xin lỗi. Giả vờ B bên trái là ma thuật B.

Cây hành vi có một đánh giá khác nhau. Lần đầu tiên chúng được đánh giá (hoặc chúng được đặt lại), chúng bắt đầu từ gốc (các nút cha đóng vai trò như bộ chọn) và mỗi đứa trẻ được đánh giá từ trái sang phải. Các nút con được sắp xếp dựa trên mức độ ưu tiên của chúng. Nếu tất cả các điều kiện của nút con được đáp ứng, hành vi của nó được bắt đầu. Khi một nút bắt đầu một hành vi, nút đó được đặt thành 'đang chạy' và nó trả về hành vi đó. Lần sau khi cây được ước tính, nó lại kiểm tra các nút ưu tiên cao nhất, sau đó khi đến nút 'đang chạy', nó biết chọn nơi mà nó rời đi. Nút có thể có một chuỗi các hành động và điều kiện trước khi đạt đến trạng thái kết thúc. Nếu bất kỳ điều kiện không thành công, truyền tải trở lại cho cha mẹ. Bộ chọn cha sau đó chuyển sang con ưu tiên tiếp theo. Tôi sẽ thử một hình thức đồ họa ở đây:

nhập mô tả hình ảnh ở đây

Truyền tải bắt đầu từ gốc, đến con 1, kiểm tra tình trạng của con (đại loại như "có kẻ thù nào ở gần không?"). Điều kiện không thành công và di chuyển ngược lên cây để chuyển sang nút hai. Nút 2 có một hành động được thực hiện (có thể giống như tìm đường dẫn). Sau đó, một hành vi (một cái gì đó giống như đi theo con đường). Đường dẫn sau được thiết lập để chạy và cây trả về trạng thái của nó là đang chạy. Các nút không thành công hoặc hoàn thành được trả về 'Sẵn sàng'. Sau đó, lần tiếp theo chúng tôi kiểm tra, chúng tôi bắt đầu lại với nút ưu tiên cao nhất. Nó thất bại một lần nữa, vì vậy chúng tôi tiến hành nút hai. Ở đó chúng tôi thấy chúng tôi có một hành vi đang chạy. Chúng tôi cũng thấy hành vi đã hoàn thành, vì vậy chúng tôi đánh dấu nó đã hoàn thành và trả lại. Cây sau đó được thiết lập lại và sẵn sàng để đi một lần nữa.

Như bạn có thể thấy các cây hành vi phức tạp hơn. Cây hành vi mạnh hơn và cho phép hành vi phức tạp hơn. Cây quyết định rất dễ hiểu và đơn giản để thực hiện. Vì vậy, bạn sẽ sử dụng cây hành vi khi bạn muốn hành vi phức tạp hơn hoặc kiểm soát hành vi nhiều hơn. Cây quyết định có thể được sử dụng như một phần của cây hành vi hoặc được sử dụng một mình cho AI đơn giản.

Một số hiểu biết tốt về cách cây hành vi được phân tích cú pháp có thể được tìm thấy ở đây .


Giải thích và minh họa tuyệt vời. Vì vậy, khi bạn nói "Nếu tất cả các điều kiện của nút con được đáp ứng ..." thì các Bộ chọn và Chuỗi có chứa các điều kiện hay chỉ các nút lá, tức là các Hành động?
Lancer miễn phí

1
Các nút con là hành vi, hành động, điều kiện hoặc bộ chọn có nhiều con hơn. Họ được đánh giá từ trái sang phải.
MichaelHouse

Bài đăng tuyệt vời, mặc dù tôi nghĩ rằng tôi vẫn có một câu hỏi nổi bật (sẽ đăng riêng). Bạn đã sử dụng gì để tạo GIF động?
tôi--

0-2-A không nên chơi lại nếu 0-2-B đang chạy ??? github.com/pirobot/pi_trees/issues/1
lệch

@ nopnop77 Không nếu điều kiện 0-2 vẫn ước tính thành 0-2-B. Bạn có thể thấy rằng 0-2 được đánh giá lại, nhưng một lần nữa không dẫn đến việc A được chọn.
MichaelHouse
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.