Bu soru, çeşitli bilgisayar oyunlarında oluşturduğum ve şu anda kullanılmakta olan veya kullanılması planlanan bilgisayar rakiplerine yaklaşımla ilgilidir.
Arka fon
"Mayın Tarlası Bayrakları" adlı bir oyun için bir bilgisayar rakip geliştirmeye çalışırken Geçen yıl (kısa tanımı: Mayın Tarlası Bir sıra tabanlı çok oyunculu sürümü zorunda almak rakibinizden daha fazla mayın) , şiddetle benim algoritmaları çalışma şeklini değiştirecek . İf-else-if-else gibi bir yaklaşım kullanmak yerine, en iyi hareketin ne olduğunu belirlemek için belirtilen ağırlıklarda bir dizi "skorer" kullanıyorum.
Mayın Tarlası Bayrakları gibi bir oyun için, sadece size bir mayın alma olasılığını en yüksek hamle yapmakla ilgili olduğunu düşünebilirsiniz, ancak bu o kadar basit değil. Bilgisayarın hangi hareketi yapacağı genellikle geçerli oyun durumundaki belirli bir hamle için çeşitli özelliklere bağlıdır. Özelliklere örnekler:
- Bu hamlenin bir mayın atma olasılığı nedir?
- Burada rakibime bir şey açıklama olasılığı nedir?
Sistemin tanımı
Sistem temel olarak şu şekilde çalışır:
- "Ön skorcular": Mevcut oyun durumu için bazı ön analizler yapılır (Mayın Tarlası Bayrakları açısından, bu genellikle: Tüm olasılıkların hesaplanması)
- "Golcüler": Bir dizi sıradan skorerden olası her hamlenin skorunu belirlemesi istenir, her skorer skoru kendi kriterlerine göre uygular. Yazı hakemi, yapılan ön analiz sonuçlarını kontrol edebilir.
- Yukarıdaki adımda hesaplanan puanlar birlikte toplanır ve bir hamle için puan olarak ayarlanır.
- Hareketler skorlarına göre sıralanır ve aynı skordaki tüm hareketlerin aynı rütbeyi alması için sıralanır.
- "Puan Sonrası": Yukarıdakilerin sonucu, puan alanın kendi kurallarına göre herhangi bir alanın puanını istedikleri şekilde değiştirme olanağına sahip olan "Puan Sonuculara" gönderilebilir.
Bir grup ön skorcu, skorer (ağırlıklarıyla) ve skor sonrası puanları birleştirirken , puan konfigürasyonu olarak adlandırdığım şey bu olur .
Örnek sonuç
Bu Mayın Tarlası Bayraklarına uygulanan puanlara bir örnektir. Atılan puan şudur:
Ve bu gerçek bir skor yapılandırmasının çıktısıdır. Olası hareketlerin sırasını gösterir, burada 1 en iyi sıralamadır ve beyaz ile vurgulanmıştır:
Oldukça esnek bir kod yazdığından, AI'lara bu yaklaşım diğer oyunlara da eklenebilir.
Avantajlar ve dezavantajlar
Aşağıda bu sistemin kendim hakkında düşünebileceğim bazı avantajları ve dezavantajları var
Avantajları
- Yapay zeka için çok sayıda farklı yapılandırma oluşturmak çok kolay.
- Genetik Algoritmalar ile kullanmak mümkündür: Her yazı hakemi ilişkili bir ağırlığa sahiptir, ağırlık gen olabilir.
- Bazı araçları kullanarak, belirli bir hamlenin neden yapıldığını ve bu hamlenin esas olarak hangi yazıların sorumlu olduğunu kontrol etmek mümkündür.
- Araçları kullanarak, olası hareketlerin toplam puanının / sırasının bir haritasını oluşturmak mümkündür (yukarıdaki ekran görüntüsü gibi)
- İnsanların oyun tarzına puanlar uygulayarak, insanın yapacağını düşündüğü hamleleri yapmaya çalışan bir "#AI_Mirror" oluşturmak mümkündür.
Dezavantajları
- AI'nın mümkün olduğunca iyi oynatılması için bir skor yapılandırmasını "doğru" ayarlamak son derece zor olabilir.
Sorular
Burada inşa ettiğim sistem AI dünyasında yaygın olarak biliniyor mu? Gerçek AI terimleriyle buna ne denir?
Bu yaklaşım anlamlı mı yoksa tavsiye edeceğiniz farklı bir yaklaşım var mı?
Bir skor yapılandırmasını değiştirmeyi kolaylaştıracak hangi yollar vardır?
Son soruya gelince, genetik algoritmalar kullanma olasılığının farkındayım, ayrıca SARSA'nın da biraz farkındayım (ve puanlamacımın bu sitenin ağırlıklarla özellik tanımına benzediğini düşünüyorum, ancak benim anlayışımdan tam olarak yarattığım şey bu değil buraya). SARSA ile ilgili bir sorun, oyun bitene kadar ödülü bilmemeniz, en iyi hamle genellikle hiç ödül vermeyen bir hamle. Mevcut kazanma şansınız hem mevcut puana (hem sizin hem de rakibinizin kaç mayın aldığını) ve mevcut haritanın neye benzediğine bağlıdır.
Bu soru ilk olarak artık geçersiz bir Yapay Zeka sitesinde yayınlanmıştır .
Bu yaklaşım için kullanılan (Java) kodu artık Kod İncelemesinde yayınlanmıştır .