אלגוריתמים אבולוציוניים תרגיל 2

‫אלגוריתמים אבולוציוניים‬
‫תרגיל ‪2‬‬
‫מגישים‪:‬‬
‫אלון גת‬
‫רותם קופפר‬
‫אלירן צח‬
‫פרטים מלאים באתר‪:‬‬
‫‪http://www.cs.bgu.ac.il/~gata‬‬
‫שאלה ‪:1‬‬
‫תיאור הבעיה‪ :‬מציאת וקטור מינימום אבסולוטי של פונקציה בהינתן הסטה סקאלרית ווקטור הסטה פרמטרי (נתונים)‪,‬‬
‫מימד הבעיה נתון‪.‬‬
‫נבדקו שלוש הפונקציות הבאות‪:‬‬
‫) )‬
‫(‬
‫)‬
‫∑‬
‫)̅ (‬
‫) ∑(∑‬
‫)̅ (‬
‫(∑‬
‫)̅ (‬
‫(‬
‫תיאור מימוש האלגוריתם הגנטי‪:‬‬
‫גנוטיפ‪ :‬הגנום הוא וקטור של מספרים ממשים בתחום ‪-100..100‬‬
‫פנוטיפ‪ :‬הגנוטיפ שווה לפנוטיפ‪.‬‬
‫אופרטור הכלאה‪ :‬גזירה והחלפה בנקודה בודדת (באופן הפוך עבור שני הצאצאים)‪.‬‬
‫מוטציה‪ :‬החלפת איבר בווקטור במספר ממשי חדש בתחום‪.‬‬
‫אופרטור בחירה עבור בריכת ההזדווגות‪ :‬פרופורציוני לכשירות‪ .‬הכשירות חושבה באופן הבא‪ :‬ראשית חושב ערך‬
‫הפונקציה ע"י הצבה של הגנוטיפ‪ .‬לאחר מכן חושבה הכשירות עבור כל פרט כהפרש בין ערך הכשירות הגבוה ביותר‬
‫באוכלוסייה לערך הכשירות שלו‪ .‬מספר המופעים של כל פרט פרופורציוני לערך שהתקבל‪ .‬במידה וחסרים פרטים (עקב‬
‫עיגול מספר המופעים) נוספו מופעים נוספים של הפרט הטוב ביותר‪.‬‬
‫אליטיזם‪ :‬הפרט המוצלח ביותר עובר ללא מוטציה לדור הבא‪.‬‬
‫בחירת שורדים‪ :‬אוכלוסיית הצאצאים מחליפה את אוכלוסיית ההורים במלואה‪.‬‬
‫תנאי עצירה‪ :‬הגעה למספר הדורות המקסימלי‪.‬‬
‫השווינו בין ריצת האלגוריתם הגנטי הממשי לאלגוריתם גנטי בייצוג בינארי‪ ,‬עליית גבעה עם נקודת התחלה אקראית‬
‫ולחיפוש אקראי‪.‬‬
‫עליית גבעה עם נקודת התחלה אקראית מומשה באופן הבא‪ :‬נבחרה נקודה אקראית במרחב הפתרונות‪ ,‬מנקודה זו ניסינו‬
‫להגיע לנקודה בעלת ערך כשירות נמוך יותר‪ .‬במקרה שנכשלנו ב‪ 10-‬ניסיונות רצופים נבחרה נק' התחלה חדשה‪.‬‬
‫תוצאות‪:‬‬
‫הרצנו את ארבעת האלגוריתמים עבור שלושת הפונקציות ממימד ‪ .10‬כל אלגוריתם רץ ‪ 10000‬איטרציות‪ .‬עבור‬
‫האלגוריתם האבולוציוניים ‪ 10000‬איטרציות משמען ‪ 100‬דורות (עבור אוכלוסייה בגודל ‪ .)100‬עבור עליית גבעה עם‬
‫נקודת התחלה אקראית מדובר בכמות האיטרציות בפועל‪.‬‬
‫ההיסט הגלובאלי נקבע ל‪.100-‬‬
‫התוצאות שהתקבלו עבור האלגוריתם הגנטי עם גנום בינארי‪:‬‬
‫התוצאות שהתקבלו עבור אלגוריתם גנטי עם גנום ממשי‪ ,‬עליית גבעה עם נקודת התחלה אקראית וחיפוש אקראי‬
‫תוצאות ומסקנות‪:‬‬
‫‪F3(X): 100.02851428937728‬‬
‫‪X: 2.000250666002712, 2.990508114577639, 4.000604257592699, 5.009002392158113,‬‬
‫‪5.996885737556568, 7.002013690953701, 7.999398356765153, 9.001840557171569,‬‬
‫‪10.000928489288707, 11.009535519433955.‬‬
‫‪F2(X): 100.0003502481359‬‬
‫‪X: 1.057299996280454, 2.0006005110181357, 2.9965628024273494,‬‬
‫‪4.000195260269557, 5.003271115545682, 5.9980977382886325, 6.995686775912313,‬‬
‫‪8.000419914510971, 8.99764108701735, 9.999725299951878.‬‬
‫‪F1(X): 100.00015006831661‬‬
‫‪X: 1.0013843382148169, 2.001019904881529, 3.0001087352973466,‬‬
‫‪3.9992822166123876, 4.998984643588278, 5.993370781902008, 6.993663992070265,‬‬
‫‪7.997895998370641, 8.992631608549505, 10.001655955570188,‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫עבור השוואה הוגנת בערך המינימלי כפונקציה של מספר האיטרציות האלגוריתמים האבולוציוניים הראו‬
‫עליונות ברורה על החיפוש האקראי ועליית הגבעה‪.‬‬
‫האלגוריתם האבולוציוני עם הגנום הממשי והאליטיזם הניב תוצאות טובות יותר מאשר אלגוריתם אבולוציוני עם‬
‫גנום בינארי (שלמים) ללא אליטיזם‪.‬‬
‫חיפוש אקראי הניב תוצאות טובות יותר מאשר עליית גבעה עבור אותו מספר איטרציות‪.‬‬
‫‪‬‬
‫אלגוריתם אבולוציוני עם גנום ממשי הניב תוצאות טובות יותר מאלגוריתם זהה עם גנום שלם‪ ,‬ככל הנראה‬
‫מכיוון שישנו חופש גדול יותר בגנום (ניתן להתקרב באופן רציף ולא רק ב‪"-‬קפיצות")‪.‬‬
‫שאלה ‪:2‬‬
‫תיאור הבעיה‪ :‬בהינתן ‪ 29‬ערים ומטריצת מרחקים‪ ,‬יש למצוא את המסלול הקצר ביותר העובר דרך כל ‪ 29‬הערים‪.‬‬
‫תיאור מימוש האלגוריתם‪:‬‬
‫גנוטיפ‪ :‬הגנום בבעיה זו הוא פרמוטציה של הסדרה ‪.29..1‬‬
‫פנוטיפ‪ :‬הפנוטיפ בבעיה זו שווה לגנוטיפ‪.‬‬
‫אופרטור הכלאה‪ :‬גזירה בין שתי נקודות (באופן הפוך עבור שני הצאצאים)‪ ,‬השלמת האיברים החסרים בוקטור לפי‬
‫הסדר‪.‬‬
‫מוטציה‪ :‬החלפה בין שתי ערים אקראיות בווקטור‪.‬‬
‫אופרטור בחירה עבור בריכת ההזדווגות‪ :‬פרופורציוני הפוך למרחק הכולל‪ ,‬מנורמל ביחס למרחק הגדול ביותר‪.‬‬
‫במידה וחסרים פרטים (עקב עיגול מספר המופעים) נוספו מופעים נוספים של הפרט הטוב ביותר‪.‬‬
‫אליטיזם‪ :‬הפרט המוצלח ביותר עובר ללא מוטציה לדור הבא‪.‬‬
‫בחירת שורדים‪ :‬אוכלוסיית הצאצאים מחליפה את אוכלוסיית ההורים במלואה‪.‬‬
‫תנאי עצירה‪ :‬הגעה למספר הדורות המקסימלי‪.‬‬
‫תוצאות‪:‬‬
‫תוצאות ומסקנות‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫האלגוריתם הראה התכנסות לפתרון‪ .‬הפרמטרים הטובים ביותר שנמצאו‪ :‬הסתברות להזדווגות‪ 0.3 :‬הסתברות‬
‫למוטציה‪.0.003 :‬‬
‫ניסיון למימוש עם בחירה עבור בריכת ההזדווגות ע"י דירוג לא הראה שיפור‪.‬‬
‫המסלול הטוב יותר שנמצא הוא באורך ‪ 428000‬מייל‪:‬‬
‫‪Melbourne,Tokyo,Guam,Manila,Sydney,Bombay,Baghdad,Cairo,Istanbul,New‬‬
‫‪Orleans,Berlin,San Francisco,Rio de Janeiro,London,Azores,Moscow,Panama‬‬
‫‪City,Chicago,Shanghai,Juneau,Honolulu,Santiago,New York,Mexico‬‬
‫‪City,Paris,Seattle,Buenos Aires,Rome,Capetown.‬‬
‫מסלול הנסיעה של הסוכן המסכן‪:‬‬
‫שאלה ‪:3‬‬
‫תיאור הבעיה‪ :‬בהינתן מימד ‪ ,m‬מציאת מטריצה ‪ m*m‬כאשר סכום כל האיברים בכל שורה‪ ,‬טור או אלכסון שווה ל‪-‬‬
‫(‬
‫)‬
‫‪.‬‬
‫תיאור מימוש האלגוריתם‪:‬‬
‫‪.‬‬
‫גנוטיפ‪ :‬הגנום בבעיה זו הוא פרמוטציה של הסדרה‬
‫פנוטיפ‪ :‬הפנוטיפ בבעיה זו שווה לגנוטיפ‪.‬‬
‫אופרטור הכלאה ‪ :‬גזירה בין שתי נקודות (באופן הפוך עבור שני הצאצאים)‪ ,‬השלמת האיברים החסרים בווקטור לפי‬
‫הסדר‪.‬‬
‫מוטציה‪ :‬החלפת שני מספרים בגנום‪.‬‬
‫אופרטור בחירה עבור בריכת ההזדווגות‪ :‬לפי דירוג (מספר שורות ואלכסונים העונים לתנאי)‪ .‬מקומות ב‪ 5%‬הראשונים‬
‫ייוצגו ע"י ‪ 10‬פרטים‪ ,‬מקומות ב‪ 10%‬הבאים ייוצגו ע"י ‪ 3‬פרטים‪ ,‬מקומות ב ‪ 15%‬הבאים ייוצגו ע"י פרט ‪.1‬‬
‫אליטיזם‪ :‬הפרט המוצלח ביותר עובר ללא מוטציה לדור הבא‪.‬‬
‫בחירת שורדים‪ :‬אוכלוסיית הצאצאים מחליפה את אוכלוסיית ההורים במלואה‪.‬‬
‫תנאי עצירה‪ :‬הגעה למספר הדורות המקסימלי או מציאת ריבוע קסם המקיים את התנאי‪.‬‬
‫תוצאות‪:‬‬
‫)‬
‫(‬
‫לוח ‪:3*3‬‬
‫כאשר הריבוע שהושג‪:‬‬
‫לוח ‪:4*4‬‬
‫כאשר הריבוע שהושג‪:‬‬
‫‪14 9 3 8‬‬
‫‪7 4 10 13‬‬
‫‪12 15 5 2‬‬
‫‪1 6 16 11‬‬
‫‪816‬‬
‫‪357‬‬
‫‪492‬‬
‫ריבוע ‪:5*5‬‬
‫ניסון נוסף שבצענו הוא פתרון של הבעיה בעזרת ‪,Evolutionary Strategies‬‬
‫גנוטיפ‪ :‬פנוטיפ‪ :‬אופרטור הכלאה‪ :‬כמו בפתרון הקודם‪.‬‬
‫מוטציה‪ :‬החלפת שני מספרים בגנום‪ .‬בנוסף ביצענו שינו של הסתברות המוטציה כפונקציה של הדור‪ ,‬ביצענו מספר‬
‫אופציות‪ ,‬הטובה ביותר הייתה הקטנה ב‪ 1.5‬של ההסתברות למוטציה כל ‪ 500‬דורות (מתוך ‪.)5000‬‬
‫אופרטור בחירה עבור בריכת ההזדווגות‪ :‬פרופורציוני לכשירות ‪ /‬דירוג‪.‬‬
‫אליטיזם‪ :‬הפרט המוצלח ביותר עובר ללא מוטציה לדור הבא‪.‬‬
‫בחירת שורדים‪ :‬אוכלוסיית הצאצאים מחליפה את אוכלוסיית ההורים במלואה‪.‬‬
‫תנאי עצירה‪ :‬הגעה למספר הדורות המקסימלי או מציאת ריבוע קסם המקיים את התנאי‪.‬‬
‫לוח ‪:4*4‬‬
‫‪Ranking‬‬
‫‪Rolette‬‬
‫ריבוע ‪:5*5‬‬
‫הסתברות מוטציה משתנה‬
‫תוצאה של חיפוש אקראי‬
‫הסתברות מוטציה קבועה‬
‫תוצאות ומסקנות‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫האלגוריתם הגנטי כפי שמומש לא התגלה כפתרון טוב לבעיה ולא סיפק פתרון עבור לוח הגדול מ‪4*4-‬‬
‫בהסתברות סבירה‪.‬‬
‫בניגוד לבעיית הסוכן הנוסע מדובר בפתרון נכון‪/‬לא נכון‪ .‬בנוסף‪ ,‬פתרון נכון חלקית לא מקרב אותנו אל הפתרון‬
‫הנכון‪.‬‬
‫ניסיונות לשיפור האלגוריתם ע"י החלפת בחירת האוכלוסייה לבריכת ההזדווגות (מרולטה לדירוג)‪ ,‬משחק עם‬
‫הפרמטרים‪ ,‬שינוי פונקציית המשקל (וריאציות של הפונקציה הנוכחית) ומתן ניקוד על תשובה חלקית לא הניבו‬
‫שיפור בתוצר הסופי‪ ,‬אך ניתן לראות שינוי בממוצע הכולל אשר ברולטה גודל עם הדורות (האליטיזם משתלט)‬
‫להבנתנו המעבר מבחירת רולטה לדירוג אמור להגדיל את השונות באוכלוסייה אולם השינוי לא הראה שיפור‬
‫בתוצאה‪.‬‬
‫השימוש ב‪ ,Evolutionary Strategies‬הוכח כיעיל יותר (מכיוון שההסתברות למוטציה גדולה בתחילה‪ ,‬יש‬
‫סיכוי גדול יותר "ליפול" לפתרון) אך עדיין לא הניב תוצאות בהסתברות גבוהה בצורה משמעותית‪.‬‬
‫ניתן לראות את התוצאות שהתקבלו בשיטה אשר דומה לחיפוש אקראי‪( ,‬ע"י קביעת מוטציה גבוהה‪ ,‬אליטיזם‬
‫ויצירת אוכלוסייה חדשה בכל דור) הממוצע נמוך מאוד יחסית‪ ,‬והסיכוי למצוא פתרון קטן‪.‬‬
‫שאלה ‪:4‬‬
‫תיאור הבעיה‪ :‬בהינתן נוסחת ‪ ,3-CNF‬מציאת השמה המספקת את הנוסחה כאשר בכל ‪ 3-CNF‬ישנו לפחות ליטרל‬
‫אחד שאינו מסופק‪.‬‬
‫תיאור מימוש האלגוריתם‪:‬‬
‫גנוטיפ‪ :‬הגנום בבעיה זו הוא וקטור השמות בינארי כאשר האיבר ה‪ i-‬מייצג השמה עבור הליטרל ‪.i+1‬‬
‫פנוטיפ‪ :‬הפנוטיפ בבעיה זו שווה לגנוטיפ‪.‬‬
‫אופרטור הכלאה‪ :‬גזירה והחלפה בנקודה בודדת (באופן הפוך עבור שני הצאצאים)‪.‬‬
‫מוטציה‪ :‬החלפת השמה עבור ליטרל אקראי‪.‬‬
‫אופרטור בחירה עבור בריכת ההזדווגות‪ :‬לפי דירוג (מספר שורות ואלכסונים העונים לתנאי)‪ .‬מקומות ‪ 5..1‬ייוצגו ע"י‬
‫‪ 10‬פרטים‪ ,‬מקומות ‪ 15..6‬ייוצגו ע"י ‪ 3‬פרטים‪ ,‬מקומות ‪ 35..16‬ייוצגו ע"י פרט ‪.1‬‬
‫אליטיזם‪ :‬הפרט המוצלח ביותר עובר ללא מוטציה לדור הבא‪.‬‬
‫בחירת שורדים‪ :‬אוכלוסיית הצאצאים מחליפה את אוכלוסיית ההורים במלואה‪.‬‬
‫תנאי עצירה‪ :‬הגעה למספר הדורות המקסימלי או מציאת השמה העונה על התנאי‪.‬‬
‫תוצאות‪:‬‬
‫‪The CNF :‬‬
‫)‪(2,-4,1)&(-2,4,-3)&(-5,-2,2)&(-3,-1,-4)&(1,-5,2)&(-1,4,3)&(-2,-2,-5‬‬
‫‪Solved:‬‬
‫‪1 = F; 2 = T ,3 = F,4 = T, 5 = F‬‬
‫תוצאות ומסקנות‪:‬‬
‫‪‬‬
‫האלגוריתם הראה התכנסות מהירה לפתרון‪.‬‬
‫שאלה ‪:5‬‬
‫תיאור הבעיה‪:‬‬
‫בשאלה זו בחרנו לבדוק בעזרת אלגוריתם אבולוציוני את צורתו של כבל חשמל אשר תלוי בין שני עמודי חשמל‬
‫בהשפעה של כוח הכובד‪.‬‬
‫באופן כללי כבל החשמל (כמו כל מערכת בטבע) תשאף להיות במצב שבו האנרגיה הכוללת שלה מינימלית‪.‬‬
‫ההמילטוניאן (אנרגיה) של המערכת‬
‫) ) ((‬
‫∫‬
‫∫‬
‫הביטוי הראשון מייצג את האנרגיה כתוצאה מפוטנציאל הכבידה של כל אלמנט מסה (כאשר )‪ ,(h=h(x‬החלק השני‬
‫מייצג את האנרגיה כתוצאה מהפוטנציאל בין כל שני אלמנטי מסה סמוכים (מתיחות הכבל) אשר פרופורציוני למרחק‬
‫ביניהם בריבוע‪ .‬עבור אלמנטי מסה קטנים באורכם ניתן להניח שההיסט הוא בציר ה‪ y-‬בלבד‪( .‬במשולש ישר זוית עם‬
‫זוית ראש צרה היתר שווה בקירוב לניצב)‪.‬‬
‫בבעיה שלנו קבענו את‬
‫‪ dm = 100mg ,‬והחוט מחולק ‪ 30‬חלקים‪ ,‬יחידות קבוע הקפיץ‪:‬‬
‫‪ .‬בנוסף קיבענו את קצוות החוט בגובה‬
‫ע"מ לדמות חיבור לעמודי החשמל‪.‬‬
‫תיאור מימוש האלגוריתם‪:‬‬
‫גנוטיפ‪ :‬וקטור של מספרים שכל מספר מסמל את הגובה של אלמנט המסה ה‪ i-‬מעל הגובה ‪.0‬‬
‫פנוטיפ‪ :‬הפנוטיפ בבעיה זו שווה לגנוטיפ‪.‬‬
‫אופרטור הכלאה‪ :‬גזירה והחלפה בנקודה בודדת (באופן הפוך עבור שני הצאצאים)‪.‬‬
‫מוטציה‪ :‬החלפת איבר בווקטור במספר ממשי חדש בתחום‪.‬‬
‫אופרטור בחירה עבור בריכת ההזדווגות‪ :‬פרופורציוני לכשירות‪ .‬הכשירות חושבה באופן הבא‪ :‬ראשית חושב ערך‬
‫הפונקציה ע"י הצבה של הגנוטיפ‪ .‬לאחר מכן חושבה הכשירות עבור כל פרט כהפרש בין ערך הכשירות הגבוה ביותר‬
‫באוכלוסייה לערך הכשירות שלו‪ .‬מספר המופעים של כל פרט פרופורציוני לערך שהתקבל‪ .‬במידה וחסרים פרטים (עקב‬
‫עיגול מספר המופעים) נוספו מופעים נוספים של הפרט הטוב ביותר‪.‬‬
‫אליטיזם‪ :‬הפרט המוצלח ביותר עובר ללא מוטציה לדור הבא‪.‬‬
‫בחירת שורדים‪ :‬אוכלוסיית הצאצאים מחליפה את אוכלוסיית ההורים במלואה‪.‬‬
‫תנאי עצירה‪ :‬הגעה למספר הדורות המקסימלי‪.‬‬
‫תוצאות‪:‬‬
‫עבור ‪ k‬גבוה ‪100000 -‬‬
‫בדור ‪:0‬‬
‫בדור ה‪:5000‬‬
‫בדור ‪:30,000‬‬
‫עבור ‪ k‬קטן – ‪:1‬‬
‫דור ‪:0‬‬
‫דור ‪:5000‬‬
‫עבור ‪ k‬בינוני – ‪1000‬‬
‫דור ‪:0‬‬
‫דור ‪:5000‬‬
‫דור ‪:10000‬‬
‫מסקנות‪:‬‬
‫‪‬‬
‫הרצנו את האלגוריתם על שני מקרי הקיצון‪ :‬קבוע קפיץ נמוך וקבוע קפיץ גבוה ללא כבידה כאשר ציפינו לקבל‬
‫את התוצאות הבאות‪ :‬ללא כבידה המתיחות בלבד היא זו שיוצרת פוטנציאל ולכן הכבל ישאף להיות מתוח וישר‬
‫בין שתי הנקודות‪ .‬עבור קבוע קפיץ נמוך הכבל "ימרח" בין שתי הנקודות (כמו מסטיק)‪.‬‬
‫בכל מקרה נצפה לצורה של קוסינוס היפרבולי‪.‬‬
‫‪‬‬
‫‪‬‬
‫ניתן לראות את השתפרות בצורת הגרף מהדורות הראשונים ועד הדור האחרון‪.‬‬
‫כמו כן ניתן לראות שהשיפור הגדול מגיע מדורות הראשונים ורמת השיפור יורדת גם הזמן‪.‬‬
‫‪‬‬