דף 1 מתוך 1

טעות בתוכנה או טעות באלגוריתם?

נשלח: 00:04 15/02/2009
על ידי aner2005
הרצתי את הדוגמא שבסוף, רק שיניתי את המשקל של הערך 10 מ4 ל15, כלומר
הוא לבדו שווה יותר מכל אפשרות אחרת.
הבעיה היא שרק בערך בחצי מהמקרים (אולי פחות) המחשב מחזיר בסוף את התשובה של
הערך 10 לבד, ובשאר המקרים הוא מחזיר את הערכים 4,2,2 וזה למרות שבתחילת הדרך
הוא בדר"כ מוצא את האפשרות הראשונה (ואף מציין שהfitness שלה נמוך יותר).
האם זה תקין?

נשלח: 00:23 15/02/2009
על ידי eliran
לפי מה שאני מבין ומשיעור על אלגוריתם אבולוציוני אני מצטט

"אלגוריתם אבולוציוני אינו דטרמיניסטי, שתי ריצות
יכולות להניב תוצאות שונות.

הפתרון המוחזר(האינדיבידואל הטוב ביותר) אינו
בהכרח האופטימאלי.

פונקצית התאימות מתכנסת לאורך זמן."

ולכן זה נראה לי הגיוני
אולי אתה יכול לבדוק מתי הוא מתכנס הפתרון ואז לבחור את הטוב?

נשלח: 14:47 15/02/2009
על ידי aner2005
השאלה היא האם אני צריך להחזיר בסוף את האובייקט הטוב ביותר מבין כל הריצות או את האובייקט הטוב ביותר מהדור האחרון בלבד

נשלח: 19:58 15/02/2009
על ידי aner2005
בדוגמאות שניתנו בתרגיל אין בעיה - ב SubsetSumMain הוא מוצא פתרון אופטימלי
תוך פחות מ10 דורות ועוצר וב KnapsackMain הוא מוצא את הפתרון הטוב ביותר מוקדם
מאוד ונשאר איתו ביתר הדורות.
כאמור הבעיה היא כאשר שיניתי את הערכים ואז למרות שהוא מוצא פתרון טוב יותר בתחילת
הדרך במהלך האבולוציה הוא בדר"כ מאבד אותו ונותן פתרון פחות טוב בסוף כתוצאה הטובה ביותר.

האם אני אמור לשמור את התוצאה הטובה ביותר שהתקבלה במהלך כל הדורות?

אז...

נשלח: 22:11 15/02/2009
על ידי thelegend
נו אז מה נסגר עם זה כי בסופו של דבר פתרון טוב יותר אובד בדרך ומתקבל פתרון גרוע יותר או פחות טוב???

נשלח: 01:11 16/02/2009
על ידי aner2005
כנראה שאין מה לעשות, זה האבולוציה...
לך תדע, אולי בעבר הרחוק היו חיות אחרות עם אינטיליגנציה
מאוד גבוהה והיום אף אחד אפילו לא יודע מזה... :roll: