שאלות קשות

helphelp

New member
שאלות קשות

שלום אשמח לקבל עזרה כי אני כבר מיואש: אני כותב משחק דמקה בפרולוג וצצו שתי בעיות: 1) אני משתמש בפונקציית MINMAX כתבתי אותה אך עלי להוסיף לתוכה גם בדיקת עומק , כלומר כרגע המחשב שמחשק מול השחקן חושב מהלך אחד קדימה ואני רוצה שיחשוב כמה קדימה. האם יש מקום באינטרנט שבה מתוארת הפונקציה בנוסך לבדיקת העומק? 2) במהלך המשחק הכל מתנהל באופן תקין וטוב אך לאחר מספר מסוימם של מהלכים פתאום המשחק "משתגע"... חשבתי אולי יש איזו שהיא בעיית זיכרון בפרולוג. נכון? מה אפשר לעשות? תודה לעונים זה יציל אותי
 

Zack DA

New member
תשובות

מן הסתם, אתה לא יכול לחשב עד עומק אינסופי, ברור שבשלב כלשהו יגמר לך הזיכרון. אתה צריך להגביל את עומק החיפוש שאתה מבצע. לגבי השאלה הראשונה, מה בדיוק חסר לך ? אלגוריתם minmax הוא אלגוריתם הערכת עלים של תוצאת חיפוש לעומק בעצם. לא מבין מה אתה רוצה.
 

helphelp

New member
תוספת

קודם כל תודה על התגובה. כרגע התוכנית מתוכנתת "לחשוב" רק למהלך הבא ולכן לא אמורה ליהיות בעיית זיכרון לכן לא ברורה לי הסיבה שהתוכנית מתחילה להשתגע. מה יכולות ליהיות הסיבות? כיצד ניתן לפתור אותן? לגבי הפונקציה אני צריך פרוט מלא של הפונקציה כולל הפונקציות הפנימיות ש"חושבות" קדימה. כרגע יש לי בפונקציה רק תוצאה של המהלך הבא. מקווה שזה יותר ברור ושוב תודה
 

הצלוי

New member
איך התוכנית "משתגעת"?

מה קורה בתכנית כשהיא משתגעת? אולי תצרף קטע קוד או משהו שיעזור להבין למה זה קורה...
 

helphelp

New member
התוכנית

התוכנית שתגעת כאשר אני מכניס מיקום של תזוזה ואז לוח הדמקה מתחיל להכפיל את עצמו מלא פעמים בצורה לא ברורה ולא מסודרת (הלוח כתוב בעזרת סימני המקלדת). הדבר קורה רק לאחר מספר תורות. מצורף קטע קוד הMINMAX עם הסבר לבעיה תודה
 

Zack DA

New member
אז מה שכתבת זה לא minmax....

1. מה שכתבת זה פונקציה היוריסטית, והפעלת אותה שלב אחד קדימה. 2. קרא על מימוש של minmax ו- alpha-beta בפרולוג ותבין אותו לפני שאתה משתמש בו. 3. למה זה נתקע ? לא ברור, תתחיל לדבג.
 

helphelp

New member
צודק אבל...

אתה צודק אבל אני כן מעוניין שהפונקציה תחשוב קדימה ואין לי מושג איך. אשמח לקבל הסבר מה עלי להוסיף לפונקציה. מה זאת אומרת לדבג? לעקוב?
 

Zack DA

New member
כן, לעקוב.

תשתמש בדיבאגר או שמצידי תוסיף הדפסות דיבאג. כל מה שיכול לעזור לך להבין מה קורה. כנראה אתה נכנס ללולאה אינסופית. כבר נתתי לך הפניות קריאה...
 

helphelp

New member
אבל

זאת לא לולאה אינסופית משום שניתן לשחק חלק מהמשחק עד שפתאום באמצע זה " משתגע "כאילו למשחק כבר אין חשק לשחק" בכל מקרה תודה רבה על הניסיון והעזרה
אשמח לקבל קישורים לאתרים עם פונקציית הMINMAX בפרולוג
 

helphelp

New member
בנוסף

אם אני מוריד חלק מהבדיקות היוריסטיות ולא משנה איזה המשחק כן עובד כך שהבעיה היא לא לולאה אינסופית
 

Zack DA

New member
אבל בדיקה היורסיטית רגעית

של מצב נתון אמורה לקחת מספר קבוע של פעולות. היא אמורה לשפוט מצב סטטי ולתת לו ציון.
 

helphelp

New member
נכון

אם תסתכל בקובץ שהעלתי, תראה שלמעשה פונקציית הMINMAX מקבלת את כל אפשרויות התזוזה, ולאחר מכן ע"י הציון הרגעי שהפונקציה היוריסטית נותנת הפונקציה מחזירה את התזוזה העדיפה. לכן גם לי לא ברורה סיבת הבעיה,אך לא יתכן שהבעיה היא לולאה אינסופית משום שעד שלב מסוים המשחק עובד ואז הוא נתקע,ואם אני מוריד אפילו בדיקה אחת הוא עובד. יכול ליהיות שצריך לנקות זיכרון ץוך כדי משחק? זה אפשרי? יש לינקים לפונקציית MINMAX באינטרנט?
 

Zack DA

New member
הסבר:

פונקציית minmax אמורה לרוץ עם איזה שהוא פרמטר עומק, שבכל איטרציה היא מחפשת את האפשרויות בעומק חיפוש קדימה, כשהיא מחסירה אחד מהפרמטר הזה, עד שהיא מגיעה לעומק הרצוי. הנה לינק שיסביר בצורה מדויקת: http://ai-depot.com/LogicGames/MiniMax.html
 
למעלה