אלגוריתמים אבולוציוניים וחיים מלאכותיים
תרגיל מס' 2
מגישים: יאיר פילד
33612557
אורי
לוביץ' 31387293
בדומה לפעם
קודמת, דוגמאות קוד ניתן למצוא בקיצורים הבאים:
ExcelWriter.java - appears in
all
Organism.java - from Q1 and Q2
שאלה 1
מסקנות:
שאלה 2 – The Card Problem
פרמטרים:
ייצוג: בחרנו בייצוג הפשוט והטריוואלי של מחרוזת
ביטים שבה הביט במקום ה-i מייצג את מס' הערימה בה נמצא הקלף ה-i (0=ערימת
החיבור, 1=ערימת הכפל).
Fitness: הרכבנו פונקציה כמכפלת שתי פונקציות שונות, אחת לכל ערימה (שתיהן
מנורמלות בתחום [0,1])
Fitness יחסי לסכום האיברים בערימה
0- פונקצית פרבולה עם שורשים ב-0,
וב-72, וכן נק' מקסימום ב-36 (
(Fit1 = iSum*(72.0-iSum)/(36*36.0 )
Fitness
יחסי למכפלת האיברים בערימה 1– הרכבנו
שתי פונקציות, אחת ליניארית עבור ערכים הקטנים מ-360, והשניה שורש של ההופכי עבור הערכים הגדולים
מ-360.
(dFit2 = (iProduct <= 360) ?
iProduct/360.0 : Math.pow(( 360 /iProduct ),0.5
)
המטרה היתה להתמודד עם קצב עליית פרמטר המכפלה מחד, ולאפשר עליה של הפרמטר
גם מעט מעל 360 (מבלי להוריד את ערך ה-Fitness לאפס de-facto)
ובכל-זאת:
התוצאות הראשוניות שקיבלנו הראו חוסר יציבות משווע בין הדורות. ניתוח קצר של
התופעה הראה לנו שישנו קונפליקט בין הרצון "ללחוץ" את האוכלוסיה לכיוון
המטרה,
ע"י
פונק' Fitness
"לא-סלחנית", לבין הרצון לשמור על ווריאביליות בקרב
האוכלוסיה (לחץ חזק מדי מנע "התרחקות" מהאורגניזם הטוב ביותר בדור אפס,
ובעצם עצר את האבולוציה,
וסלחנות
גרמה לתנודתיות ראנדומית ומנעה התכנסות)
את הבעיה
הזו פתרנו ע"י Elitism של 10% מהאוכלוסיה.
הרצות עם Elitism:
תוצאה סופית (ממוצע על-פני 100 הרצות) -
359.26 ; 35.2

שאלה 3 – The N-Queen Problem
ייצוג: הייצוג המוצא: רצף של Integers,
ובו המספר j במקום ה-i מייצג העמדה של מלכה (אדומה) בעמודה ה-i והשורה
ה-j.
Fitness: מספר זוגות המלכות המאיימות אחת על השניה.
Selection: Fitness Proportionate + Elitism
Mutation: Swap בין שני איברים ראנדומים.
CrossOver: עבור
כל אחד משני ה"הורים" נמצא את הרצף הארוך ביותר של איברים סמוכים אשר
אין ביניהם קונפליקטים ב"רמה העמוקה ביותר" (הסבר עוד מעט).
נבנה את הגנוטיפ ע"י שרשור הרצף המדובר של הורה א' עם שאר האיברים
לפי סדר הופעתם בהורה ב' (החל מתחילת הרצף המדובר של הורה ב').
רמה עמוקה ביותר ללא קונפליקטים, מהי?
נשים לב כי בייצוג שהשתמשנו, מלכה באינדקס (=עמודה)i ובשורה j, "מאיימת" על מלכה באינדקס
i+1 אם"ם
האחרונה נמצאת בשורה j+1 או j-1.
נגיד כי לרצף מספרים בייצוג אין קונפליקט ברמה 1 אם כל זוג מספרים עוקבים בו אינו
בהפרשים
של 1. בדומה, נגדיר רמות עמוקות יותר.
מימשנו אלגוריתם למציאת הרצף המדובר (רמה עמוקה ביותר עם אורך מקסימלי).
זמן הריצה שלו במקרה הגרוע אינו לינארי בגודל הייצוג (=מספר המלכות),
אבל עד פרמטר N=100 שבדקנו, זמני הריצה הכוללים היו קצרים. מנגד,
בדקנו גם עבור N=200, ונדרשנו לכ- 3 שעות.

תצוגת הלוח
עבור הפתרונות עם פרמטר N=50, N=20 בהתאמה.

ולמי שממש
מעוניין פתרון לבעיה עבור N=200 N=200
(לקח כמה שעות, אבל נמצא בכל 3 ההרצות, לאחר 1800, 2700 ו 3600 דורות).
"Rook takes queen,
Bishop takes queen, Pawn takes queen, Everybody takes queen. Gangbang!!!"
(the mad history of the world I)
שאלה 4 - TSP
ייצוג: Path
Fitness: חסם עליון שבחרנו (מס' הערים * הצלע הארוכה ביותר) פחות
אורך המסלול – מנורמל בתחום [0,1]
Selection: Tournament (בין חמישה) + Elitism (10%)
Mutation: 2 Point swap, (Pm=0.1)
Crossover: OX (לוקחים תת-מסלול מהורה אחד ומשלימים לפי סדר
ההופעה בהורה שני), (Pc=0.7)
השפן: Local
Improvement הלוקח
כל אחד ממועמדים לדור החדש (לאחר הפעלת האופרטורים האחרים), משכפל אותו 5 פעמים,
כאשר לכל שכפול מבצעים אופטימיזציה
מקומית קטנה עבור שלשה אקראית של קדקדים עוקבים, ולבסוף מכניסים לדור הבא
את הטוב מהחמישה.
האופטימיצזיה מסתמכת על העובדה כי בפתרון לבעיית TSP, בהנתן תת-מסלול בפתרון
- v(1)àv(2)à…v(k)àv(k+1),
אזי זהו המסלול הקצר
ביותר היוצר מ v(1),
מסיים ב v(k+1), ועובר דרך כל הקדקדים v(2) עד v(k) (וכולם מופיעים בו פעם אחת
בלבד).
השיפור המקומי שלנו בוחר קדקד v(1) באקראי, ומוצא את המסלול הקצר
ביותר ממנו אל v(5), תוך מעבר בשלושת הקדקדים שבינהם.
בסה"כ מדובר בבחירת המסלול הטוב מבין 6 אופציות (=3!).

מסלולים הכי
קצרים (באורך כולל 1243):
Path: [0,
1, 2, 22, 21, 20, 5, 8, 23, 7, 14, 13, 4, 12, 3, 15, 19, 6, 10, 11, 16, 18, 17,
9]
Path: [0,
2, 22, 21, 20, 5, 8, 23, 7, 14, 1, 13, 4, 12, 3, 15, 19, 6, 10, 11, 16, 18, 17,
9]
(סדר הערים
כמופיע בטבלה, כאשר ת"א הינה 0)
"הוא הגיע אל הארץ בדרכים עקלקלות, הוא היה סוכן חשאי לא רצה
להתגלות..."