سلام دوستان

من یه برنامه شطرنج نوشتم ، شامل قسمت های زیره :
1- محیط گرافیکی
2- موتور بازی
3- پایگاه داده مربوط به Opening ها

در مورد محیط گرافیکی و پایگاه داده که بحث خاصی نیست .
مهمترین قسمت این برنامه ، موتور بازی ه


موتوری که من نوشتم این ویژگی ها رو داره :

1- نحوه بازی : آنالیز Position از طریق درخت Min-Max
2- بهینه سازی درخت آنالیز از طریق حرص Alpha - Beta
3- عمق پیمایش : 4
4- ارزیابی هر Position به وسیله شمارش تعداد مهره ها و جمع برداری ارزش مهره ها
5- بهینه سازی استفاده از حافظه ( در هر لحظه فقط مسیر جاری در حافظه است ، و در پایان کار ، تنها بهترین مسیر در حافظه است . )

ضعف های اصلی این موتور در عمق پیمایش و نحوه ارزیابی هر Position ه
حل مشکل عمق پیمایش ساده است ، ولی همون طور که می دونید افزایش عمق پیمایش از 4 به 5 معادل افزایش زمان محاسبات به صورت تصاعدیه ( تصاعد هندسی ) . پس عملا نمیشه به همین سادگی عمق پیمایش رو افزایش داد .
ولی در مورد تابع evaluate که وظیفه Analysis هر Position رو بر عهده داره ، میشه کاری کرد که با Analysis بهتر ، نتیجه محاسبات موتور رو بهتر کنه .

بهترین روشی که میشه به کار برد (از نظر من ) ، اینه که از یه الگوریتم پیشگو برای تابع Evaluate در نظر گرفت که با یه آنالیز پیشگو هم در عمق ( نه به صورت درختی ) پیش بره و هم ارزیابی منطقی از Position رو بده .


دوستان ، به نظر با هم فکری همدیگه بتونیم یه همچین الگوریتمی رو طراحی کنیم .
خوشحال میشم اگه منو از نظراتون بهره مند کنید .
ممنون .







.