AI Oyunlarında Karar Ağaçları ile Davranış Ağaçları Arasındaki Fark


64

AI Game Development için Karar Ağaçları ile Davranış Ağaçları arasındaki bazı farklar nelerdir? Birini diğerinde hangi uygulamalar için kullanırsınız?

Yanıtlar:


80

İkisi oldukça farklı. Gerçek gösterge isimlerdedir. Karar ağaçları sadece karar vermek içindir. Davranış ağaçları davranışı kontrol etmek içindir. Açıklamama izin ver. İkisindeki en büyük fark, onların geçiş şekli, aynı şekilde ortaya konma biçimleri ve 'tipler' düğümü farklıdır.

Karar ağaçları her seferinde kökten yaprağa doğru değerlendirilir. Bir karar ağacının düzgün çalışması için her bir ebeveynin alt düğümlerinin o düğüm için tüm olası kararları temsil etmesi gerekir. Bir düğüm "Evet, Hayır, Belki" olarak cevaplandırılabilirse, üç çocuk, Evet düğümü, Düğüm yok ve Belki düğümü olmalıdır. Bu, bir son düğüme erişinceye kadar, geçiş için her zaman bazı alt düğümlerin olduğu anlamına gelir. Geçiş her zaman aşağı. Grafik formu:

görüntü tanımını buraya girin

Oldukça basit. Kökten başlıyoruz ve bazı değerlendirmelere göre, 1, 2 veya 3'ü seçiyoruz. 3'ü seçiyoruz. Sonra başka bir değerlendirme yapıp B veya B'yi seçiyoruz ... Peki, grafiği aşağıdan yeniden kullandım, üzgünüm. Soldaki B'nin sihir B. olduğu gibi davran.

Davranış ağaçları farklı bir değerlendirmeye sahiptir. İlk değerlendirildiklerinde (veya sıfırlandıklarında) kökten başlarlar (ebeveyn düğümleri seçiciler gibi davranırlar) ve her çocuk soldan sağa değerlendirilir. Alt düğümler önceliklerine göre sıralanır. Bir alt düğümün koşullarının tümü yerine getirilirse, davranışı başlatılır. Bir düğüm bir davranış başlattığında, o düğüm 'çalışıyor' olarak ayarlanır ve davranışı döndürür. Ağaç bir daha değerlendirildiğinde, en yüksek öncelikli düğümleri tekrar kontrol eder, daha sonra 'çalışan' bir düğüm söz konusu olduğunda, kaldığı yerden almayı bilir. Düğüm, bir son duruma ulaşmadan önce bir dizi eylem ve koşul içerebilir. Herhangi bir koşul başarısız olursa, geçiş üst öğeye döner. Ana seçici daha sonra bir sonraki öncelikli çocuğa geçer. Burada grafik bir form deneyeceğim:

görüntü tanımını buraya girin

Geçiş kökte başlar, 1. çocuğa gider, çocuğun durumunu kontrol eder ("yakınlardaki herhangi bir düşman?" Gibi bir şey). Koşul başarısız olur ve geçiş, ikinci düğüme geçmek için ağacı yukarı doğru hareket ettirir. Düğüm 2 gerçekleştirilen bir eylem (belki bir yol bulma gibi bir şey) vardır. Sonra bir davranış (yolu takip etmek gibi bir şey). Aşağıdaki yol çalışmaya ayarlanmış ve ağaç çalışma durumunu döndürür. Başarısız veya tamamlanmış olan düğümler 'Hazır' durumuna geri döner. Ardından bir dahaki sefere kontrol ettiğimizde, tekrar en yüksek öncelik düğümü ile başlarız. Yine başarısız oluyor, bu yüzden ikinci düğüme geçiyoruz. Orada çalışan bir davranışımız olduğunu görüyoruz. Davranışın tamamlandığını da tespit ettik, bu yüzden tamamlandı olarak işaretleyip geri döndürdük. Ağaç daha sonra sıfırlanır ve tekrar gitmeye hazırdır.

Gördüğünüz gibi davranış daha karmaşık. Davranış ağaçları daha güçlüdür ve daha karmaşık davranışa izin verir. Karar ağaçlarının anlaşılması ve uygulanması kolaydır. Bu nedenle, daha karmaşık davranış veya davranış üzerinde daha fazla kontrol sahibi olmak istediğinizde davranış ağaçlarını kullanırsınız. Karar ağaçları, davranış ağacının bir parçası olarak kullanılabilir veya basit AI için tek başına kullanılabilir.

Burada davranış ağaçlarının nasıl ayrıştırıldığının iyi bir şekilde anlaşılması mümkündür .


Harika açıklama ve resimler. Öyleyse, "Bir alt düğümün koşullarının tümü karşılanıyorsa ..." deyince Seçiciler ve Sıralar koşullar içeriyor mu, yoksa yalnızca yaprak düğümleri mi, yani Eylemler mi?
Ücretsiz Lancer,

1
Alt düğümler, daha fazla çocuğa sahip olan davranışlar, eylemler, koşullar veya seçicilerdir. Soldan sağa değerlendirilirler.
MichaelHouse

Harika bir yazı, sanırım hala önemli bir sorum var (ayrı ayrı gönderilecek). Animasyonlu GIF'ler oluşturmak için ne kullandınız?
Benim,

0-2-B çalışıyorsa 0-2-A bir daha çalınmamalıdır ??? github.com/pirobot/pi_trees/issues/1
17'de

@ nopnop77 0-2 koşullu hala 0-2-B olarak değerlendirilirse olmaz. 0-2'nin yeniden değerlendirildiğini görebilirsiniz, ancak bir kez daha A'nın seçilmesine neden olmaz.
MichaelHouse
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.