Dengelenmesi gereken bilgisayar rakiplerine puanlama yaklaşımı


16

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:

  1. "Ö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ı)
  2. "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.
  3. Yukarıdaki adımda hesaplanan puanlar birlikte toplanır ve bir hamle için puan olarak ayarlanır.
  4. Hareketler skorlarına göre sıralanır ve aynı skordaki tüm hareketlerin aynı rütbeyi alması için sıralanır.
  5. "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:

Atılan mayın tarama gemisi bayrakları haritası

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:

Puanlama yaklaşımına örnek çıktı

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 .

Yanıtlar:


7

Bir streçte uzman bir sistemdir (bulanık mantık gibi). Çıktıya dayalı karar parametrelerine geri bildirim yapmak için bir algoritma çalıştırmıyorsanız, gerçekten öğrenme değildir. Ancak, geri bildirim yapmak alogirminin AI olup olmadığını gösteren tek gösterge değildir. Zeki görünen bir şekilde hareket ederse, önemli olan tek şey bu olabilir - özellikle oyun bir insan rakip tarafından oynandığında.

Belirttiğiniz algoritma türü gerçekten parametreli bir denklemdir, sigorta hesaplamalarında bulacağınız tür. Her hareketten sonra, giriş alanı değişir ancak algoritmanın önceki durumun belleğine ihtiyacı yoktur, bu nedenle her hareketi yeni ve ayrı bir kart olarak görür.

Genetik Algoritma Kullanımı

Genetik algoritmalar için iki açık seçenek vardır:

  • Genom için parametreleri kullanın (önerdiğiniz gibi). Sahip olduğunuz kuralları optimize edeceksiniz, ancak yine de uzman bir sistemden ayrılıyorsunuz.
  • Kullanım Öğrenme Sınıflandırıcı Sistemi (LCS) size kuralları seçin. LCS, kuralları ve parametreleri kodladığınız bir Genetik Algoritma türüdür. Yakınsamaları daha uzun sürer ve fitness fonksiyonuna duyarlıdır. Bence ortaya çıkan oyun tarzı bunun için daha ilginç olabilir.

Benzetimli tavlama

Sorunu çözmenin bir başka yolu da Simüle Tavlama (SA) kullanmaktır. Sorununuz sınırlı bir girdi alanıdır ve herhangi bir senaryoda seçilecek en iyi kareyi bulan bir işlevi analitik olarak yazabilirsiniz. Simüle Tavlama'nın kullanılması, parametreleriniz için küresel bir optimum bulur.

Çok iyi yapmak için

Algoritmanın olabildiğince iyi olmasını istediğini biliyorum ama bir insanın buna karşı oynadığını unutma. Bu tür deterministik oyunları oynamanın taktiksel olarak mükemmel bir yolu vardır ve AI oyuncusu bunu alırsa, oyuncunun kazanacağı anlamına gelen sadece şans.


Cevabınız bana çalışmam için çok şey verdi, çok teşekkürler! Bu özel oyunu "deterministik" olarak sınıflandırmayı kabul ettiğimden emin
Simon Forsberg

Belirleyici olduğunu söylememin sebebi, herhangi bir oyun için olasılık sayısının sınırlı olması ve insan oyuncunun rastgele seçimler yapmasına rağmen, bunu belirleyici olduğu kadar sıkı tanımlanmış bir alanda yapıyorlar. Temel kural, herhangi bir yerde rastgele bir sayı üreteci (veya kontrol etmediğiniz harici bir faktör) kullanıyorsanız, stokastik olmasıdır. Değilse, deterministiktir.
Dr Rob Lang

Eh, Mayın Tarlası olduğunu ben bunu ortaya çıkarmak için bir hamle yaptık kadar bir alanın içeriğini bilmiyoruz olarak, söyleyebilirim stokastik.
Simon Forsberg

1
Stokastik yapmayan IMHO. Aynı başlangıç ​​koşulları (gizli tahta) göz önüne alındığında, kare her tıklandığında sonuç farklı olabilirse stokastik olurdu.
Dr Rob Lang

2
Stokastik / deterministik ve tamamen gözlemlenebilir / kısmen gözlemlenebilir kesinlikle farklı, dik özelliklerdir. Tanım gereği (örneğin, Russel / Norvig "Eğer çevrenin bir sonraki durumu tamamen mevcut durum ve ajan tarafından yürütülen eylem tarafından tamamen belirlenirse ...") Mayın Tarlası tam olarak gözlemlenemese de belirleyicidir.
Peteris

0

Evet, pozisyonların belirli yönlerine göre puan atama tekniği, oyun oynamak için AI'ların yazılmasında standarttır. Örneğin, hemen hemen tüm satranç programları, pozisyonlarına göre daha küçük bonuslarla (örneğin, birbirlerini koruyan piyonlar) mevcut parçalara göre pozisyonları önemli ölçüde puanlayarak çalışır. Daha sonra alfa-beta gibi bir karşıt arama algoritması kullanarak mümkün olan en iyi hareketi hesaplamaya çalışırlar.

Büyük dallanma faktörü nedeniyle burada karşıt arama zor olabilir - herhangi bir pozisyonda, yasal hamleler bilinmeyen herhangi bir kareyi işaretlemek veya ortaya çıkarmaktır. Öte yandan, sezgisel tarama ile dallanma faktörünü çok azaltabilirsiniz. Örneğin, hakkında hiçbir şey bilmediğiniz bir kareyi işaretlemek veya ortaya çıkarmak çok nadiren en iyi hareket olacaktır. Tersine, bazı işaretlenmemiş mayınların yerlerini biliyorsanız, bunlardan birini işaretlemek çoğu zaman en iyi hamle olacaktır. Bir aktarım tablosunun sürdürülmesi de muhtemelen yardımcı olacaktır.

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.