موتور شطرنج
موتور شطرنج (به انگلیسی: Chess engine)[1] در شطرنج کامپیوتری، برنامهای است که موقعیتهای شطرنج را ارزیابی کرده و بهترین حرکت را انتخاب میکند. موتور شطرنج در مورد اینکه چه حرکتی انجام شود تصمیم میگیرد، ولی معمولاً بهطور مستقیم با کاربر در تعامل نیست. بیشتر موتورهای شطرنج رابط کاربری خود را نداشته و برنامههای کنسولی هستند که با استفاده از پروتکل استاندارد با رابطهای کاربری همچون WinBoard، XBoard یا glChess ارتباط برقرار میکنند. این به کاربر امکان میدهد که بدون نیاز به یادگیری رابط کاربری جدید برای هر موتور شطرنج، با آنها بازی کرده یا اجازه دهد با همدیگر به رقابت بپردازند[2].
پروتکل رابط
رابط خط فرمان شطرنج گنو نخستین استاندارد غیررسمی است که پروتکل ارتباطی موتور شطرنج نامیده شده و در آغاز توسط XBoard پشتیبانی شده بود. هنگامی که XBoard به سیستم عامل ویندوز منتقل شد WinBoard نامیده شده، این پروتکل عموماً به 'پروتکل وینبورد' تغییر نام یافت. پروتکل WinBoard خودش به دو ویراست ارتقا یافت که با نامهای 'پروتکل وینبورد ۱' (ویراست اصلی) و 'پروتکل وینبورد ۲' (ویراست جدید) از آنها یاد میشود. پروتکل دیگری به نام رابط شطرنج همگانی نیز وجود دارد. برخی از موتورها هر دو پروتکل را پشتیبانی میکنند و هر پروتکل هواداران خودش را دارد. پروتکل وینبورد عمومیتر است ولی خیلی از توسعهدهندگان موتورهای شطرنج به خاطر آسان بودن پیادهسازی رابط شطرنج همگانی آن را ترجیح میدهند. برخی از رابطها هر دو پروتکل را پشتیبانی کرده در حالی که برخی دیگر مثل WinBoard فقط یکی از آنها را پشتیبانی کرده و به مفسرهای کمکی برای ترجمه پروتکل نیاز دارد.
توانایی فزاینده
هر سال بر توانایی موتورهای شطرنج افزوده میشود. بخشی از این، به دلیل افزوده شدن بر قدرت پردازشی است که امکان محاسبات بیشتر برای رسیدن به عمقهای بیشتر در زمان داده شده را میدهد. افزون بر این تکنیکهای برنامهنویسی بهبود پیدا کرده و به موتورها این امکان را میدهند که گزینش بیشتری برای رسیدن به درک بهتر موقعیت در رشته حرکاتی که ارزیابی میکند داشته باشند. برخی از موتورهای شطرنج از جدولهای پایان بازی برای افزایش توانایی بازی در پایان بازی استفاده میکنند. یک جدول پایان بازی پایگاه دادهای است که تمامی موقعیتهای پایانی با گروه کوچکی از مهرهها را در بر میگیرد.
سنجش
مسابقات
نتایج مسابقات کامپیوتری چشماندازی از توانایی نسبی موتورهای شطرنج ارائه میدهد. هرچند مسابقات تعداد بازیهای قابل توجهی از نظر آماری ارائه نمیدهند تا بهطور دقیق توانایی موتورها را بسنجیم. در واقع تعداد بازیهایی که برای رسیدن به آمار معنادار نیاز داریم هزاران بازی است و در چارچوب کاری یک مسابقه نمیگنجد. بیشتر مسابقات امکان استفاده از سختافزارهای گوناگون را میدهند، بنابراین ترکیب موتور/سختافزار مقایسه میشود. بهطور تاریخی برنامههای تجاری توانمندترین موتورها هستند. این تا اندازهای پیشگویی خودانجام است؛ اگر یک موتور آماتور در یک مسابقه برنده شود یا خوب بازی کند (برای مثال Zappa در سال 2005)، سپس به سرعت تجاری میشود. عنوانهایی که در مسابقات زیر اعتبار زیادی برای برنامههای برنده و بنابراین برای استفاده بازاریابی به همراه دارد.
- مسابقات قهرمانی شطرنج هلند.
- مسابقات شطرنج کامپیوتری اینترنت (ICT)
- مسابقات قهرمانی شطرنج کامپیوتری بینالمللی پادربورن
- قهرمانی شطرنج کامپیوتری آمریکای شمالی
- رقابت موتورهای شطرنج تورسن
- مسابقات شطرنج کامپیوتری جهانی
ریتینگ
لیستهای ریتینگ شطرنج تعداد بازیهای قابل توجهی از نظر آماری برای مقایسه توانایی نسبی موتورها فراهم میکند. این لیستها چندین بازی بین موتورهای در پلتفرمهای سختافزاری استاندارد انجام داده، بنابراین تفاوت پردازنده از محاسبات حذف میشود. همچنین برخی نیز کتابهای گشایش بازی را استانداردسازی کرده تا تنها توانایی موتورها مقایسه شود. این لیستها نه تنها رنکینگ را فراهم میکند، بلکه مرز خطای ریتینگ را نیز تعیین میکند. همچنین لیستهای ریتینگ معمولاً بهطور پیوسته به انجام بازیها پرداخته و بهروزرسانیهای زیادی را در هر سال در مقایسه با مسابقاتی که سالیانه انجام میشوند، منتشر میکنند. فاکتورهایی که لیستهای گوناگون را از هم متمایز میکند در زیر آمدهاست:
- کنترل زمان. زمانهای بلندمدت همچون 40 حرکت در 120 دقیقه برای تعیین توانایی بازی در مسابقات بهتر است ولی باعث زمانبر شدن آزمایش میشود.
- سختافزار مورد استفاده. سختافزار سریعتر با حافظه بیشتر به بازی قویتری منجر میشود.
- سختافزار 64-بیتی (در برابر 32-بیتی) و سیستمعاملهایی که تمایل به برنامههای بیتبوردی دارند.
- سختافزار چندپردازندهای در برابر سختافزار تکپردازندهای.
- تنظیم حالت تفکر (ارزیابی دقیقتر در هنگامی که رقیب در حال تفکر است).
- اندازه جدول جابهجاسازی.
- تنظیم کتاب گشایش بازی.
این تفاوتها روی نتایج تأثیر میگذارد و مقایسه لیستهای ریتینگ را دشوار میکند.
مجموعه آزمایشی
موتورها را میتوان با اندازهگیری عملکردشان در موقعیتهای ویژه ارزیابی کرد. معمولاً برای هر موقعیت داده شده باید بهترین حرکت یافته شود. این موقعیتها میتواند به سمت بازیهای پوزیشنال، تاکتیکی یا پایان بازی متمایل شوند. معمولا یک مهندس نرم افزار وقتی نمی تواند روشی برای حل ایده ال مساله پیدا کند از "روش دست گرمی" استفاده می کند. گر چه امکان دارد مجموعه حاصل هم ریختگی یا به عبارت بهتر وحدت رویه ها را حفظ نکند. برای مثال امکان دارد توابع آورین به همراه الگوی یادگیری مدلی معیوب را منجر شوند هر چند ایده ای نو باشند. یا "انتشار گره" یا "بازی ارتفاعی عادلانه" همچون جرقه ای بدرخشد. عیب دیگر این روش این است امکان دارد پروژه مسیری را طی کند که به دوباره کاری برسد که از اصالت اثر بکاهد یا به آن ارزش دهد. به همین خاطر پروژه به نقطه ای می رسد که "ریسک" آن به 100% است و باید یا دور انداخته شود یا از نو با مستندات علمی نوشته شود. تنها سود تجربه هایی است که به زحمت کسب کرده است. بنابراین همیشه مجموعه های آزمایشی اپ های بدی هم نیستند. هر چند بهره وری هدف این موتورهای شطرنج نیست یا اصلا موتور نیستند و بیشتر به تکه کدهای جامع می مانند که کارایی مطلوب را ندارند بعضی وقتها ریسک به انتشار نسخه می ارزد.
جستارهای وابسته
منابع
- مشارکتکنندگان ویکیپدیا. «Chess engine». در دانشنامهٔ ویکیپدیای انگلیسی، بازبینیشده در ۱۹ ژانویهٔ ۲۰۱۵.
- «نسخه آرشیو شده». بایگانیشده از اصلی در ۶ فوریه ۲۰۱۵. دریافتشده در ۱۹ ژانویه ۲۰۱۵.