לגבי תוכנות שח

חמץ

New member
לגבי תוכנות שח

קודם כולנו מרותקים לקרב הבא והאחרון של קספרוב-דיפ עכשיו הצדדים בשיוויון עכשיו שאלה ל AAA1 אולי תכתוב כאן איך אתה מתכנת ובונה תוכנת שחמט? כי זה דבר מרתק,ככה נראה לי תן הסבר לרמות הנמוכות משהו בסיסי וקח בחשבון שיש לי דווקא ידע טוב במתמטיקה הפורום הזה באמת משמש כפורום פרטי וסודי וחבל על תפוז שמתעקשים לא לפתוח אותו ולשים קישור אליו :(
 

aaa123

Member
כתבתי אותה בשפת C

אפשר ללמוד מתוכנה חופשית שקיימת בשם tscp שהיא תוכנה יחסית פשוטה שכתובה בשפת C. לגבי הסבר אז יש אתרים באנגלית שמסבירים איך תוכנות שחמט בנויות והוספתי קישור לאתר שמסביר די טוב את הרעיונות הבסיסים. באופן אישי אני התחלתי מתוכנה שיוצרת את המסעים ובדקתי אם יש באגים על ידי חישוב הפונקציה Perft שהיא מספר המשחקים החוקים של מספר קבוע של מסעים מעמדה מסויימת כי יש הרבה תוכנות חופשיות שיודעות לחשב פונקציה זאת. בניגוד לרוב גדול של התוכנות בחרתי בדרך של יצירת מסעים חוקים בלבד ולכן הקוד שלי ליצירת מסעים הוא יותר מסובך כך שהיו לי הרבה באגים אבל גיליתי אותם כאשר התוכנה טעתה בחישוב מספר המשחקים החוקים של X מסעים. תוכנות בדרך כלל משתמשות באלגוריתם האלפא ביתא. הרעיון הבסיסי של אלגוריתם זה הוא לא לחשב ערך מדוייק של מסע אלא חסמים ואתן דוגמה. נניח שמצאת שה4 מביא ליתרון של 0.1 רגלי ללבן נניח שאתה ממשיך ומנתח את ד4(לא מעניין אותך הערך המדוייק של ד4 במקרה שהוא קטן מ0.1 רגלים לטובת לבן כך שאם אתה מוצא ש1.ד4 פ-ו6 מביא לשויון אתה יכול להמנע מניתוח אפשרויות כמו ד4 ד5. אם אתה מוצא שד4 פ-ו6 מביא ליתרון של 0.2 רגלי ללבן אז כאשר אתה מנתח ד4 ד5 אתה רק מתעניין בערכים שבין 0.1 ל0.2 כי אם זה יותר מ0.2 לטובת לבן אז ד5 לא הגיוני ועדיף פ-ו6 ואם זה פחות מ0.1 רגלי לטובת לבן אז ד4 לא הגיוני ועדיף ה4. זה אומר שבפועל אם מצאת אפשרות אחת שמוכיחה שד4 פ-ו6 היא טובה יותר מ0.2 רגלי לטובת לבן אז אתה לא מנתח אפשרויות נוספות בשביל לבן ,ולכן אתה יכול לדעת רק חסם על ההערכה של ד4 פ-ו6 ולא ערך מדוייק. בנוסף לאלפא ביתא יש שיטות אחרות להחליט אילו וריאנטים לא לנתח. ויש אלגוריתמים ידועים נוספים האתר של ברוס מתאים לידע בסיסי ,ואם אתה רוצה לדעת על האלגוריתמים של אחת התוכנות המסחריות אז יש אתר שני אליו גם צירפתי קישור(המתכנת החליט להפסיק לפתח את התוכנה ולפרסם את הרעיונות שלו בתקווה שיעזרו למתכנתים אחרים.
 

aaa123

Member
אני יכול להוסיף שהתוכנית שלי משתמשת

ברעיונות שאני מאמין שאף אחד לא משתמש אבל היא חלשה יותר מהתוכנות הטובות כי היא לא משתמשת בחלק מהרעיונות טובים שתוכנות אחרות כן משתמשות והערכת העמדה שלה היא גם לא כל כך טובה(לגירסה האחרונה שאפשר להוריד אין כלל ידע על בטחון המלך ,ואין לה גם ידע על מבנה רגלים חוץ מידע שאומר שיותר מרגלי אחד באותו טור זה לא טוב). הוספתי קצת ידע על נושאים אלו בגירסה האחרונה ששלחתי לתחרות של לאו אם כי לא עשיתי שינויים גדולים בהערכת העמדה ונתתי ציונים יחסית נמוכים לבטחון המלך או לחיילים מבודדים אני חושב שיש שיפור בגירסה ששלחתי לתחרות של לאו אבל אני לא חושב שיש שיפור גדול יחסית לגירסה האחרונה. יש באגים בגירסה ששלחתי לתחרות של לאו ,ולמשל מצאתי שכאשר המלך השחור עומג בח8 התוכנה מעריכה את ח7 ז7 א8 בשביל הערכת בטחון המלך השחור כאשר הכוונה המקורית שלי היתה להעריך את ח7 ז7 ו7 למרות באג זה ומעט באגים נוספים אני מעריך שהגירסה ששלחתי לתחרות של לאו טובה קצת יותר מהגירסה האחרונה שאפשר להוריד מהאינטרנט,ובדיקות שערכתי הראו שיש לה סיכוי פרקטי מול כל יריב(היא משמעותית חלשה מהתוכנות המסחריות אבל במשחק בודד הכל יכול לקרות).
 

aaa123

Member
אני יכול להוסיף בקטע של מסעים חוקים

שהדרך הרגילה בה תוכנות משתמשות היא עשית מסעים לא חוקים ורק אחרי שמתברר שהמסע לא חוקי להחזיר אותו. Junior לפחות בגירסה המסחרית שלה(ואני משער שגם התוכנית שמשחקת נגד קספרוב) משתמשת בדרך זאת,ויש לה גם באג בדרך שהיא מעריכה אם המלך נלכד בגלל מט או פט וההוכחה היא העובדה שיש תחבולות פט פשוטות שJunior מעריכה כמט. הנה דוגמה פשוטה Kramnik - Krasenkow (Corus Wijk aan Zee 2003) 3R2nk/r5p1/6PP/3NK3/8/8/8/8 w - - 0 70 Junior7 מעריכה את ח7 כמט ב6 כאשר Junior5 מגדילה לעשות ומעריכה את זה כמט ב2.
 
למעלה