Behavior Tree là gì? Các ứng dụng của cây hành vi

Thứ tư, 02/02/2023-11:02
Behavior Tree bắt nguồn từ ngành công nghiệp trò chơi điện tử như một công cụ mạnh mẽ để mô hình hóa hành vi của các nhân vật trong game mà không phải người chơi chính(NPC).Vậy Behavior Tree là gì?

Behavior Tree là gì?

Behavior Tree hay cây hành vi là một mô hình toán học mô tả chi tiết kế hoạch thực hiện một tập hợp các nhiệm vụ được xác định trước. Nếu bạn có một tập hữu hạn các tác vụ, thì cây hành vi là nơi bạn chỉ định cách chương trình chuyển từ tác vụ này sang tác vụ khác.

Cây hành vi ban đầu được sử dụng để phát triển trò chơi điện tử nhưng hiện được sử dụng rộng rãi trong chế tạo người máy, khoa học máy tính và trí tuệ nhân tạo (AI). Với cây hành vi, các nhiệm vụ phức tạp, chẳng hạn như bắt Pacman, có thể thực hiện được thông qua một loạt các nhiệm vụ đơn giản. Trong “Pacman”, những nhiệm vụ này bao gồm xác định vị trí của những viên thuốc và trái cây.

Cây hành vi trông giống hệt như một lưu đồ mà chúng ta thường thấy trong các văn phòng, biểu đồ này giải thích quy trình của một quy trình cụ thể. Ví dụ: trong bệnh viện, bạn thường thấy sơ đồ phân loại, giúp các chuyên gia chăm sóc sức khỏe ưu tiên bệnh nhân theo nhu cầu y tế. 


Behavior Tree là một mô hình toán học
Behavior Tree là một mô hình toán học

Cây hành vi trở nên phổ biến nhờ mô hình phát triển của chúng: có thể tạo ra một hành vi phức tạp bằng cách chỉ lập trình các hành động của NPC và sau đó thiết kế cấu trúc cây (thường thông qua kéo và thả) có các nút lá là các hành động và các nút bên trong của chúng xác định việc ra quyết định của NPC. Cây hành vi trực quan và dễ thiết kế, thử nghiệm và gỡ lỗi, đồng thời cung cấp nhiều mô-đun, khả năng mở rộng và khả năng sử dụng lại hơn các phương pháp tạo hành vi khác.

Trong những năm qua, việc triển khai đa dạng cây hành vi tiếp tục cải thiện cả về hiệu quả và khả năng để đáp ứng nhu cầu của ngành, cho đến khi chúng phát triển thành cây hành vi hướng sự kiện. Cây hành vi hướng sự kiện đã giải quyết một số vấn đề về khả năng mở rộng của cây hành vi cổ điển bằng cách thay đổi cách cây xử lý nội bộ quá trình thực thi của nó và bằng cách giới thiệu một loại nút mới có thể phản ứng với các sự kiện và hủy bỏ các nút đang chạy. Ngày nay, khái niệm cây hành vi hướng sự kiện là một tiêu chuẩn và được sử dụng trong hầu hết các triển khai, mặc dù chúng vẫn được gọi là "cây hành vi" để đơn giản.

Một khía cạnh cốt lõi của Cây hành vi là không giống như một phương thức trong cơ sở mã của bạn, một nút hoặc nhánh cụ thể trong cây có thể mất nhiều tích tắc để hoàn thành trò chơi. Trong triển khai cơ bản của cây hành vi, hệ thống sẽ duyệt qua từng khung hình từ gốc của cây, kiểm tra từng nút trên cây để xem nút nào đang hoạt động, kiểm tra lại bất kỳ nút nào trên đường đi, cho đến khi chạm tới nút hiện đang hoạt động để đánh dấu vào nó một lần nữa.

Một trong những chủ đề chính về cây hành vi mà chúng ta đã bỏ qua cho đến nay là trạng thái trả về của một tác vụ. Người dùng có thể có một nhiệm vụ cần nhiều hơn một khung để hoàn thành. Ví dụ: hầu hết các hoạt cảnh sẽ không bắt đầu và kết thúc chỉ trong một khung hình. Ngoài ra, các tác vụ có điều kiện cần một cách để cho tác vụ cha của chúng biết điều kiện đó có đúng hay không để tác vụ cha có thể quyết định xem nó có nên tiếp tục chạy các tác vụ con của nó hay không. Cả hai vấn đề này đều có thể được giải quyết bằng cách sử dụng trạng thái tác vụ. Một tác vụ ở một trong ba trạng thái khác nhau: đang chạy, thành công hoặc thất bại. 

Các ứng dụng của cây hành vi

Behavior Tree có những ứng dụng như sau: 

Cây hành vi trong Robotics

Cây hành vi làm cho các ứng dụng robot hiệu quả và năng suất hơn. Hãy tưởng tượng một người máy được giao nhiệm vụ nhặt lon từ sàn nhà để đặt chúng lên một kệ cụ thể. Nếu không sử dụng cây hành vi, rô-bốt sẽ đi theo lộ trình của nó, bất kể các sự kiện. Ví dụ, rô-bốt sẽ không dừng lại ngay cả khi nó làm rơi lon hoặc khi có người đi thẳng vào đường đi của nó. Kết quả là, nó sẽ không thực hiện nhiệm vụ của mình một cách hiệu quả.

Khi cùng một robot được tạo bằng cách sử dụng cây hành vi, nó có thể được lập trình để dừng khi có thứ gì đó chặn đường đi của nó. Nó có thể được dạy thêm để quay trở lại vị trí ban đầu hoặc cảnh báo con người khi điều này xảy ra.


Cây hành vi có nhiều ứng dụng khác nhau
Cây hành vi có nhiều ứng dụng khác nhau

Cây hành vi trong trò chơi máy tính

Như đã đề cập trước đây, cây hành vi lần đầu tiên được sử dụng trong trò chơi máy tính để kiểm soát hành vi của nhân vật không phải người chơi hoặc nhân vật trò chơi mà người chơi không điều khiển. Về bản chất, cây hành vi cung cấp AI cho những nhân vật này. Một số ví dụ về trò chơi máy tính sử dụng cây hành vi là:

  • Pacman
  • Halo 
  • Spore 
  • Bioshock

Cây hành vi hoạt động như thế nào?

Nói một cách đơn giản, mục tiêu của cây hành vi là cung cấp cho các nhân vật không phải người chơi AI để họ có thể thực hiện các hành động cụ thể. Nếu bạn để ý trong video trò chơi “Pacman” này, những bóng ma dường như bị thu hút bởi những viên thuốc, rất có thể đó là nơi Pacman sẽ ở:

Những con ma được dạy thông qua cây hành vi để đánh bại Pacman bằng cách đi đến nơi có những viên thuốc.

Trong những năm qua, cây hành vi đã phát triển để theo kịp sự phát triển của ngành. Hiện tại, các cây hành vi chủ yếu được điều khiển theo sự kiện, có nghĩa là các nhân vật và chương trình không phải người chơi đã có thể được lập trình để phản ứng với các sự kiện. 

Hạn chế của cây hành vi

Tạo rô bốt, ứng dụng và trò chơi bằng cách sử dụng cây hành vi làm cho chúng tốt hơn rất nhiều về hiệu quả và hiệu suất. Tuy nhiên, cây hành vi có những hạn chế. Một trong số đó là nhu cầu về các công cụ khi điều hướng qua các cây hành vi lớn.

Hạn chế đáng kể nhất là nó không dạy một chương trình để đưa ra quyết định tốt hơn. Vì quá trình ra quyết định được mã hóa cứng vào cây nên nó không dạy các nhân vật hoặc rô-bốt cách đưa ra quyết định.

Thực thi Behavior Tree như thế nào?

Cây hành vi được biểu diễn bằng đồ họa dưới dạng cây có hướng trong đó các nút được phân loại là nút gốc, nút luồng điều khiển hoặc nút thực thi (nhiệm vụ). Đối với mỗi cặp nút được kết nối, nút đi được gọi là nút cha và nút đến được gọi là nút con. Gốc không có cha và chính xác một con, các nút luồng điều khiển có một cha và ít nhất một con và các nút thực thi có một cha và không có con. Về mặt đồ họa, nút con của nút luồng điều khiển được đặt bên dưới nó, theo thứ tự từ trái sang phải.


Việc thực thi cây hành vi bắt đầu từ gốc gửi các dấu tích với tần suất nhất định lên cho con của chúng
Việc thực thi cây hành vi bắt đầu từ gốc gửi các dấu tích với tần suất nhất định lên cho con của chúng

Việc thực thi cây hành vi bắt đầu từ gốc gửi các dấu tích với tần suất nhất định cho con của nó. Đánh dấu là tín hiệu kích hoạt cho phép thực hiện một nhiệm vụ con. Khi việc thực thi một nút trong cây hành vi được cho phép, nó sẽ trả về cho nút gốc trạng thái đang chạy nếu việc thực hiện của nó chưa kết thúc, thành công nếu nó đã đạt được mục tiêu hoặc thất bại nếu không.

Nút luồng điều khiển

Một nút luồng điều khiển được sử dụng để kiểm soát các nhiệm vụ con mà nó được cấu thành. Nút luồng điều khiển có thể là nút bộ chọn (dự phòng) hoặc nút trình tự. Họ lần lượt thực hiện từng nhiệm vụ phụ của mình. Khi một nhiệm vụ con được hoàn thành và trả về trạng thái của nó (thành công hay thất bại), nút luồng điều khiển sẽ quyết định có thực hiện nhiệm vụ con tiếp theo hay không.

Nút bộ chọn (dự phòng)

Các nút dự phòng được sử dụng để tìm và thực thi nút con đầu tiên không bị lỗi. Nút dự phòng sẽ trả về ngay lập tức với mã trạng thái là thành công hoặc đang chạy khi một trong các nút con của nó trả về thành công hoặc đang chạy (xem Hình I và mã giả bên dưới). Các em được đánh dấu theo thứ tự quan trọng, từ trái sang phải.

Nút trình tự

Các nút trình tự được sử dụng để tìm và thực hiện phần tử con đầu tiên chưa thành công. Một nút trình tự sẽ trả về ngay lập tức với mã trạng thái là lỗi hoặc đang chạy khi một trong các nút con của nó trả về lỗi hoặc đang chạy (xem Hình II và mã giả bên dưới). Các em được đánh dấu theo thứ tự, từ trái sang phải.

Behavior Tree - Cây hành vi đã cải thiện đáng kể cách thức phát triển robot, trò chơi điện tử và các phần mềm chương trình máy tính. Sự phát triển của nó theo hướng hướng đến sự kiện thực tế cũng giúp nâng cao hiệu quả và làm cho các sản phẩm công nghệ trở nên thông minh hơn. Tuy nhiên, giống như bất kỳ công nghệ nào, nó cũng có những thách thức và hạn chế. Nhu cầu về nhiều tính năng và chức năng hơn có thể thúc đẩy sự phát triển hơn nữa của cây hành vi.

Theo: Reatimes.vn
Copy link
Chia sẻ:

Cùng chủ đề

Việc mất 10 tiếng để làm được AI hoàn thành trong 10 giây: Các sinh viên tài chính ngân hàng chuẩn bị mất việc?

Thách thức và xu hướng của ngành Fintech tại Đông Nam Á trong năm 2024

Đẩy mạnh vốn FDI vào lĩnh vực Fintech, công nghệ cao

AI có thể là một mối nguy đối với nhân loại?

Bitcoin trở thành tài sản có giá trị lớn thứ 8 toàn cầu

Mặt trái của AI: Tiêu thụ điện năng ở mức khổng lồ

Kỷ nguyên công nghệ gia tăng áp lực cạnh tranh giữa các doanh nghiệp bất động sản

Hé lộ 3 kênh podcast ‘giải ngố đầu tư’ dành cho người mới bắt đầu

Tin mới cập nhật

Phân khúc nhà ở xã hội "đuối sức" trong quý I/2024

1 giờ trước

TS. Cấn Văn Lực: Thị trường Fintech cần được thay đổi về cách tiếp cận

1 giờ trước

Nỗ lực đẩy nhanh nâng hạng thị trường chứng khoán

2 giờ trước

Kinh nghiệm xây dựng những mẫu nhà cấp 4 khung thép cực đẹp

3 giờ trước

Hướng nằm ngủ kiêng kỵ là gì? Cách kê giường ngủ đúng hướng tài lộc, tốt cho sức khỏe

5 giờ trước