ความแตกต่างระหว่างต้นไม้การตัดสินใจและต้นไม้พฤติกรรมสำหรับเกม AI


64

อะไรคือความแตกต่างระหว่างต้นไม้การตัดสินใจและต้นไม้พฤติกรรมสำหรับการพัฒนาเกม AI? สำหรับแอปพลิเคชันใดที่คุณจะใช้หนึ่งแอป

คำตอบ:


80

ทั้งสองแตกต่างกันค่อนข้างสวย ตัวบ่งชี้ที่แท้จริงอยู่ในชื่อ ต้นไม้การตัดสินใจเป็นเพียงการตัดสินใจ ต้นไม้พฤติกรรมมีไว้สำหรับควบคุมพฤติกรรม ให้ฉันอธิบาย ความแตกต่างที่สำคัญในทั้งสองคือวิธีที่พวกเขาถูกสำรวจเช่นเดียวกับที่พวกเขาวางและโหนด 'ประเภท' จะแตกต่างกัน

ต้นไม้การตัดสินใจจะถูกประเมินจากรากถึงใบไม้ทุกครั้ง เพื่อให้แผนภูมิการตัดสินใจทำงานอย่างถูกต้องโหนดลูกของแต่ละพาเรนต์ต้องแสดงถึงการตัดสินใจที่เป็นไปได้ทั้งหมดสำหรับโหนดนั้น หากโหนดสามารถตอบ "ใช่, ไม่, อาจจะ" จะต้องมีลูกสามคน, ใช่โหนด, ไม่มีโหนดและอาจโหนด ซึ่งหมายความว่าจะมีโหนดที่ต่ำกว่าที่จะทำการสำรวจจนกว่าจะถึงโหนดสุดท้าย เส้นทางเดินลงเสมอ รูปแบบกราฟิก:

ป้อนคำอธิบายรูปภาพที่นี่

ค่อนข้างง่าย เราเริ่มต้นที่รูทและขึ้นอยู่กับการประเมินผลเลือก 1, 2 หรือ 3 เราเลือก 3 จากนั้นเราทำการประเมินผลอื่นและเลือก B หรือ B ... ดีฉันนำกราฟิกกลับมาใช้ใหม่จากด้านล่างขออภัย ทำท่า B ทางซ้ายคือ Magic B

ต้นไม้พฤติกรรมมีการประเมินผลที่แตกต่างกัน ครั้งแรกที่พวกเขาถูกประเมิน (หรือพวกเขากำลังรีเซ็ต) พวกเขาเริ่มต้นจากรูท (โหนดพาเรนต์ทำหน้าที่เหมือนกับตัวเลือก) และเด็กแต่ละคนจะถูกประเมินจากซ้ายไปขวา โหนดลูกจะถูกจัดเรียงตามลำดับความสำคัญ. หากตรงตามเงื่อนไขของโหนดลูกทั้งหมดพฤติกรรมของมันจะเริ่มต้นขึ้น เมื่อโหนดเริ่มต้นพฤติกรรมโหนดนั้นจะถูกตั้งค่าเป็น 'กำลังทำงาน' และจะส่งคืนพฤติกรรม ในครั้งต่อไปที่ต้นไม้ถูกประเมินมันจะตรวจสอบโหนดที่มีลำดับความสำคัญสูงสุดอีกครั้งจากนั้นเมื่อมันมาถึงโหนด 'ที่ทำงานอยู่' มันจะรู้ว่าจะเลือกตำแหน่งที่มันปิดทิ้งไว้ได้ โหนดสามารถมีลำดับของการกระทำและเงื่อนไขก่อนถึงสถานะสิ้นสุด หากเงื่อนไขใด ๆ ล้มเหลวการส่งผ่านจะกลับสู่พาเรนต์ ตัวเลือกพาเรนต์จะย้ายไปยังระดับความสำคัญถัดไป ฉันจะลองแบบฟอร์มกราฟิกที่นี่:

ป้อนคำอธิบายรูปภาพที่นี่

การสำรวจเส้นทางเริ่มต้นที่รูตไปยังเด็ก 1 ตรวจสอบสภาพเด็ก (เช่น "ศัตรูใกล้ ๆ ") เงื่อนไขล้มเหลวและการย้ายผ่านจะสำรองข้อมูลทรีเพื่อย้ายไปยังโหนดสอง โหนด 2 มีการดำเนินการที่ดำเนินการอยู่ (อาจคล้ายกับการค้นหาเส้นทาง) จากนั้นมีพฤติกรรม (เช่นติดตามเส้นทาง) พา ธ ต่อไปนี้ถูกตั้งค่าให้ทำงานและทรีจะคืนค่าสถานะเป็นทำงาน โหนดที่ล้มเหลวหรือเสร็จสิ้นจะถูกส่งกลับเป็น 'พร้อม' จากนั้นในครั้งต่อไปที่เราตรวจสอบเราจะเริ่มต้นอีกครั้งด้วยโหนดลำดับความสำคัญสูงสุด มันล้มเหลวอีกครั้งดังนั้นเราจึงไปยังโหนดที่สอง ที่นั่นเราพบว่าเรามีพฤติกรรมที่ทำงานอยู่ นอกจากนี้เรายังพบว่าพฤติกรรมนั้นเสร็จสมบูรณ์แล้วดังนั้นเราจึงทำเครื่องหมายว่าเสร็จสิ้นแล้วส่งคืน ต้นไม้จะถูกรีเซ็ตและพร้อมที่จะไปอีกครั้ง

อย่างที่คุณเห็นต้นไม้พฤติกรรมมีความซับซ้อนมากขึ้น ต้นไม้พฤติกรรมมีพลังมากกว่าและอนุญาตให้มีพฤติกรรมที่ซับซ้อนมากขึ้น ต้นไม้ตัดสินใจง่ายต่อการเข้าใจและง่ายต่อการนำไปใช้ ดังนั้นคุณจะต้องใช้ต้นไม้พฤติกรรมเมื่อคุณต้องการพฤติกรรมที่ซับซ้อนมากขึ้นหรือควบคุมพฤติกรรมได้มากขึ้น ต้นไม้การตัดสินใจสามารถใช้เป็นส่วนหนึ่งของต้นไม้พฤติกรรมหรือใช้เพียงอย่างเดียวสำหรับ AI แบบง่าย

บางคนเข้าใจที่ดีของวิธีการที่ต้นไม้พฤติกรรมมีการแยกวิเคราะห์สามารถพบได้ที่นี่


คำอธิบายและภาพประกอบที่ยอดเยี่ยม ดังนั้นเมื่อคุณพูดว่า "หากตรงตามเงื่อนไขของโหนดลูกทั้งหมด ... " Selectors and Sequences มีเงื่อนไขหรือโหนดปลายใบไม้เท่านั้นเช่น Actions?
แลนเซอร์ฟรี

1
โหนดลูกคือพฤติกรรมการกระทำเงื่อนไขหรือตัวเลือกที่มีลูกมากขึ้น พวกเขากำลังประเมินจากซ้ายไปขวา
MichaelHouse

โพสต์ยอดเยี่ยมถึงแม้ว่าฉันคิดว่าฉันยังมีคำถามยอดเยี่ยมอยู่ (จะโพสต์แยกกัน) คุณใช้อะไรในการสร้างภาพเคลื่อนไหว GIF
ฉัน -

0-2-A ไม่ควรเล่นอีกครั้งหาก 0-2-B ทำงานอยู่ ??? github.com/pirobot/pi_trees/issues/1
devside

@ nopnop77 ไม่ใช่ว่าเงื่อนไข 0-2 ยังคงประเมินเป็น 0-2-B คุณจะเห็นว่ามีการประเมินค่า 0-2 อีกครั้ง แต่จะไม่ส่งผลให้มีการเลือก A อีกครั้ง
MichaelHouse
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.