Soru Bir satranç motoru uygulamak ne kadar zor? [kapalı]


Uygulamak için ne kadar zor olacağını merak ediyorum satranç motoru. Zaten açık kaynak uygulamaları var mı?

Belli bir tahta takımyıldızı için bir skorlama fonksiyonuna ve çok sayıda muhtemel kurulu takımyıldızlarını keşfetmenin çok hızlı bir yoluna ihtiyacınız var gibi görünüyor. Gelecekteki tüm olası hamleleri keşfetmek elbette ki imkansızdır, bu yüzden en çok gelecek vadeden hamleleri takip edebilir veya benzetimli tavlama Muhtemel hareketleri olasılıksal olarak takip etmek.

Bunun bir kapsamı içinde olduğunu düşünüyor musunuz? makine öğrenme lisansüstü öğrenci projesi - öğrencilerin kullanabileceği açık kaynaklı bir uygulama olduğunu varsayarak, belli bir rakam için bir sonraki olası hamleleri geri almak gibi temel şeyleri yapar mı? Muhtemelen çok mu zor?

Farklı takımların satranç motorları üzerinde çalışıp eğlenmelerine izin verecek eğlenceli bir proje olacaktır.


44
2017-07-18 22:15


Menşei


Bütün cevaplar için teşekkürler. Bir başka yön, önceki oyunların satranç veritabanıdır. Büyük bir üzerinde kullanılır chessgames.comama ücretsiz kullanım için uygun bir tane var mı? Ayrıca, ideal olarak, bir kişi, bir sonraki hamlelerini daha iyi tahmin edebilmek için, oyunun ilerlemesiyle rakibin oyun şeklini öğrenmek ister. - Frank
Www.chessbin.com adresine bir göz atın, dilenen bir satranç motorunun uygulanmasını sağlar. Aynı zamanda bir satranç oyunu başlangıç ​​kiti sağlar. - Adam Berent
Kod-golf kokusu alıyorum. - mob


Cevaplar:


Geçen sene C # 'de kendi satranç motorumun yapımını geçirdim. Hepsi bu kadar zor değildi. Çalışmam sırasında hata yaptım, internetteki bilgilerin açık bir şekilde sunulmadığını ve çoğunun sadece diğer sitelerden kopyalandığını buldum.

Bu süreçte bir başkasının hayatını kolaylaştırmak için, satranç motorumun gelişimini belgeledim ve kaynak kodun çoğunu blogumda yayınladım:

http://www.chessbin.com

Bir tane bile oluşturdum Satranç Oyun Geliştirme Seti Bu, aşağıdakileri içeren kendi satranç motorunuzu geliştirmeye başlamanızı sağlayacak:

  1. Bir satranç tahtası ve satranç parçalarını temsil etmek için gereken tüm kodlar
  2. Satranç parça hareketinin geçerliliği ile ilgili kod
  3. Satranç pozisyonunu gösteren ve tahta etrafında parçaları hareket ettirmenize olanak veren Grafik Kullanıcı Arayüzü

Sitem temelde sizin gibi insanlar için adanmıştır; kendi satranç motorlarını oluşturmaya başlamak isteyen insanlar.


53
2017-07-23 12:38



validate *, bence - ajax333221


Evet, bu kesinlikle bir öğrenci projesi kapsamındadır. Başlamak için arşivimden bazı bağlantılar:


33
2017-08-05 12:31



Ben sadece döndürülmüş bitboardlar artık gitmek için tercih edilen yol olduğuna dikkat etmek istedim. Döndürülmüş bitboard kullanan çoğu programcı şimdi Magic Bitboards adlı bir teknik kullanıyor.chessprogramming.wikispaces.com/Magic+Bitboards). - Mathieu Pagé
Teşekkürler, Mathieu - Bu tekniği daha fazla araştıracağım. - RoadWarrior
Yeni C # satranç motorum sihirli bitboardları kullanıyor. Çok hızlılar, ama başlangıçta başınızı etraflarına sarmak zordur (döndürülmüş bitboardlar daha da kötüdür). - RoadWarrior
'Bu, MTD'nin iyi bir analizi, gelişmiş bir arama algoritmasıdır.' Bağlantının süresi dolmuş gibi görünüyor. MTD'yi inceleyen bir makale: (f): people.csail.mit.edu/plaat/mtdf.html - bytefire


Kurnaz En iyi satranç motorlarından biri ve tamamen açık kaynak. Bununla birlikte, C'ye yazılan bir öğrenci projesi için onu kullanmaktan vazgeçiririm, çok karmaşık ve anlaşılması çok zor çünkü çok iyi bir şekilde optimize edildi.

Eğitim amaçlı bir göz atmanızı tavsiye ederim Adam Berents sitesi C # 'de bir satranç motoru uyguladığı süreçten bahseder. Kaynak kodu, elbette kullanılabilir. Benim görüşüme göre başlamak için mükemmel bir nokta.


8
2017-07-18 22:31



Adam Berent bu soruyu kendisi yanıtladı ve cevabı kesinlikle kontrol edilmeye değer. - Stefan Thyberg


Sorunuzu cevaplayamıyorum, ama son yorumunuza cevap verebilirim.

"Bu eğlenceli bir proje olurdu   farklı takımlar satranç motorları üzerinde çalışıyor   ve sonra her birine karşı oynayalım   diğer ... "

Bu zaten yapıldı FICS satranç sunucusu. Orada oturum açmanızı öneririm (telnet gerekir) ve belgeleri de kontrol edin, muhtemelen satranç robotlarına özel ipuçları verebilecek insanlarla iletişim kurabilirsiniz.


7
2017-07-18 22:27





Özellikle modern PC'lerde makul bir satranç motoru kesinlikle yapılabilir, özellikle oldukça iyi oynayabilecek 1 ve 2 MHz 8-bit makinelerde sadece birkaç K bellek kullanan birçok Satranç programı olduğunu hatırlamak için yeterince büyükseniz. Günümüzde yorumlanmış bir dilde bir satranç motorunu çalabilir ve en hızlı en hızlı şeyleri kodlayan bir üst seviye 6502 veya Z80 programcıdan pantolonu yenebilirsin.

Orijinali yapan Dan Spracklen ile çalışmalıyım. Sargon 1978'de eşi Kathleen ile. Kathleen'in kardeşi limanı Apple II'ye yaptı ve ben de onunla ve oğluyla birlikte çalıştım. (Bu adamlarla çalıştığım sırada satranç-satım-kar amaçlı iş yapıldı. Atari ST ve Amiga satranç oyunlarını getiren bir adamı hatırlıyorum ve o zamanlar onlar için çok fazla pazar yoktu.)

"Bilgisayar Oyunculuğu“1983'te hobi olarak yapılan satranç programlarına müthiş bir giriş. Bu, okumak için bir zevktir. İyi olan şeyleri kapsar: alfa-beta, minimax, vb.

Oraya başlayabileceğiniz ve o zamandan beri yapılan ilerlemeleri öğrenebileceğiniz yeterince iyi bir kitap.

alt metin http://g-ecx.images-amazon.com/images/G/01/ciu/a9/01/ef2de893e7a081414e106110.L._AA240_.jpg


5
2017-07-19 02:59





İyi bir şey yapmak zor, ama muhtemelen bir lisansüstü proje için doğru seviyedeyken (Batchelor'umu Bilgisayar Bilimi'ne götürdüğümde, bir arkadaşım onun son yıl tezine bir satranç motoru yazdı).

Ve evet, Açık Kaynak olanları var, önde gelen yarışmacı GNU Satrancı, çok iyi saygı duyulur.


4
2017-07-18 22:18



craftychess.com orada da var. - ephemient
Ne yazık ki, GNU Satranç şimdi liderlerin çok gerisindedir. - SmallChess


Üniversitemde her sene, AI dersine giriş (3. yıl dersi), öğrencilerin bir kâğıt ile birlikte bir satranç programı yaratmalarını gerektiriyor. Derste, öğrencinin bunu yapması için yeterli bilgiye sahip olması için derste karşılıklı arama ile ilgili bir bölüm hazırladık. Bizim için, proje ya kendi başımıza ya da diğeriyle yapılabilir (daha derin bir kat vb. Gibi bir ortakla yapılırsa daha iyi bir program beklenir). Bilgisayar grafikleri dersi de 3 yıllık bir ders olduğundan, öğrencilerin nihai projeyi AI dersinin final projesiyle birleştirmelerine izin verilir.

3 sene içinde olacağımı ve her iki kursa da girdiğimden (ilk yarıyılı sona ermişti), her iki kursta da bir arkadaşımla birlikte çalıştım ve programımızın bitiminden bu yana programda çalışıyoruz. sınavlar (21 Aralık civarındaydı) ve 11 Ocak'ta.

Bir ay içinde tamamen yapılabilir (özellikle yüksek lisans projesi olarak). 3 boyutlu bir satranç programı yapıyoruz, dolayısıyla sadece bir satranç motorundan daha fazla iş gerektiriyor. En zor kısımlar yönetim kurulu temsiline karar verecek, tüm kuralları (en pasif, oyuncu, terfi, vb.) Uygulayarak, sezgisel bir işlev ve oyun ağacını oluşturacaktır (genellikle alfa-beta budaması ile yapılır).

İşte ilerlemeyi belgelemek için kullandığımız site ve daha sonra işimiz bittiğinde kodu ve kağıdı barındırıyoruz (şu anda biraz boş). http://sites.google.com/site/chessatbrock/


2
2018-01-03 02:41