Trang chủ Program BEHAVIOR TREE

BEHAVIOR TREE

bởi root

Behavior tree (BT) là gì.

Behavior tree (cây hành vi) vi là một mô hình toán học dành cho việc thực hiện các hành động theo kế hoạch được sử dụng trong khoa học máy tính, robot, hệ thống điều khiển và game.
Hành động của AI là một quá trình duyệt các node của BT với các nốt là điều kiện hoặc thực thi.

Cấu tạo của Behavior tree.

Behavior tree bao gồm các node :

  • Node nguồn (root)
  • Node điểu khiển luồng (Flow control)
  • Node thực thi (execution).

Node thực thi có 3 trạng thái trả về:

  • Success : node thực thi thành công.
  • Failure : node thực thi thất bại
  • Running : node vẫn đang thực thi.

Flow control

Với thứ tự duyện là từ trên xuống dưới và từ trái sang phải các node flow control sẽ đóng vai trò quy tắc điều hướng cho BT. Có 2 loại node flow control :

Selector (fall back node):

Điều hướng dạng nốt sẽ trả về trạng thái thành công (Success) ngay nếu một trong các nhánh con trả về thành công (Success) hoặc đang chạy (running).

Sequence:

Điều hướng dạng duyệt từng nhánh con cho đến khi một trong các nhánh con trả về failure hoặc running. Trả về failure ngay khi gặp nốt con trả về failure.

Ngoài ra flow control còn được gọi là các node composite và có 1 loại node cho phép tất cả các nhánh con của nó được thực thi cùng lúc : Parallel.

Áp dụng cụ thể

Dựa vào tính chất của các Flow control bản thân các node thực thi cũng sẽ tạo ra sự điều hướng của BT

Action node : node thực thi đơn giản là thực thi 1 nhiệm vụ rõ ràng.

Condition node : node thực thi đóng vai trò là điều kiện để thực thi các nhánh hoặc node con tiếp theo khi node được đặt dưới Sequence: Within Sight là điều kiện kiểm tra xem mục tiêu có nằm trong tầm ngắm hay không là điều kiện để đi tới action cần có là bắn (shoot) nhưng trước đó lại cần kiểm tra thêm 1 điều kiện nữa là có đạn hay không bằng node Enough Bullet.

Decorator task: là các dạng node chỉ có 1 nhánh con sẽ có dạng kiểm tra liên tục hoặc thay đổi giá trị trả về của nhánh con. Ví dụ như luôn trả lại Succes , thực hiện nhánh con cho đến khi trả lại Success (hay Failure), đảo ngược giá trị của nhánh con trả lại.

Ưu nhược điểm

Ưu điểm :

  • Có thể thực thi cùng lúc nhiều Action tương ứng với đống Conditions, không nhất thiết lúc nào cũng chỉ có một action.
  • Cấu trúc trực quan dễ thiết kế hay debug.
  • Có thể sử dụng lại.

Nhược điểm

  • Tùy vào số Condition nodes mà trong một Tick(), số lượng nhánh được duyệt, số lượng Condition, Action node được thực thi sẽ khác nhau, nên chi phí trong một Tick() sẽ thay đổi, và trong trường hợp xấu nhất, có thể tất cả các nhánh của BT đều phải duyệt đến, dẫn đến vấn đề performance khi sử dụng BT. Và đó cũng chính là một nhược điểm của BT : nếu design không tốt, performance sẽ giảm nặng.
  • Vì tính chia nhỏ và sử dụng lại được nên dễ gây “ngáo” BT : chia nhỏ thực thi thành các node nhỏ một cách không cần thiết mất thời gian hơn cho việc tính toán và tối ưu.
Nhấn để đánh giá bài viết!
[Số đánh giá: 0 Trung bình: 0]

Có thể bạn quan tâm

Để lại bình luận