Evolutionary
Computation and Artificial Life
Exercise 5
–Answers
מגישות:
עינב ביטון
040893133
יסמין מגידיש
060639150
Solving the Synchronization and the Density problems using
Cellular Programming Algorithm
בתרגיל זה
פתרנו את בעיית ה Synchronization
ואת בעיית ה Density
באמצעות Cellular Programming.
בעיית הסינכרוניזציה: האוטומט התאי צריך להגיע למצב שבו כל שורה מורכבת מצבע אחד
וצבע שורה כלשהי שונה מבצעי השורות הצמודות אליה.
בעיית הצפיפות:
האוטומט התאי צריך להגיע למצב שבו כל שורה מורכבת מצב יחיד הזהה לצבע השורות
הצמודות אליה.
כל הקוד נכתב
ב JAVA.
אלגוריתם ה Cellular Programming מומש לפי Moshe Sipper's
Cellular Programming Algorithm.
The parameters used in
our solution:
Configuration runs’
number - Density: configurationCounter = 20,000
Configuration runs’
number - Synchronization: configurationCounter = 400,000
Rule Table evolution
interval: C
= 300
Running Cellular
Automata: M
= 2 * Cellular_Atomata_Size
Genome representation:
הגנום במקרה
של Cellular Automata הוא האוטומט התאי - מערך של תאים,
חד מימדי ומעגלי. האוטומט התאי אינו יוני פורמי, כלומר לכל
תא יש RT
משלו. האוטומט התאי הינו בנארי, כלומר ה value של כל תא הוא 0 או 1. גודל
הגנום הינו 29, 49 כמתבקש.
Rule Table
Representation (for each cell):
ע"פ
הנתון בשאלה r=1 ולכן גודל הסביבה של כל תא באוטומט התאי הינו 2r+1
= 3. ומכאן שגודל ה Rule
Table(RT) הוא 2 ^ (2r+1) = 8 טבלה תלת מימדית 2X2X2
כאשר המימד הראשון מיצג את השכן השמאלי, האמצעי את התא הנוכחי והשלישי מייצג את
השכן הימני. למשל עבור 001 – מיקום זה ב RT - m_ruleTable[0][0][1]מייצג את החוק המתאים למצב 001 ומכיל את הערך אליו
יעבור התא.
Initialization:
אתחול ה RT – הגרלת החוקים
באופן אקראי לערכי 0 או 1.
אתחול ערך
התאים בכל דור של האלגוריתם – ע"פ שיטת ה Bias הגרלת מספר רנדומאלי ובהסתברות
אותו מספר שהוגרל מוגרלים ערכי התאים.
Fitness method:
ע"פ
המתואר באלגוריתם – כל C=300, RT
evolution time interval מחשבים את ה
fitness הממוצע לכל התאים. בכל
איטרציה מתוך ה-300 כל תא נבחן - אם הוא עומד בתנאים מוסיפים לו ניקוד
אחרת ערכו נותר ללא שינוי. שיטת חלוקת הניקוד היא פרטית לבעיה איתה התמודד האוטומט
התאי, ומפורטת כדלהלן:
Ø Density
Problem –
לאחר ריצה של
runCA (ריצה של M = 2 * Cellular_Automata_Size)
מעריכים כל תא באופן הבא – אם ערכו הנוכחי של התא סווג להיות הערך המצופה של בעיית
ה Density אזי ערך ה fitness שלו עלה ב 1, אחרת נותר ללא שינויי. ומכאן שערך
ה - fitness של תא יחיד הוא בטווח של
.0-300 ערך ה- Densityנקבע ע"י הערך השולט (0/1) באוכלוסיה האקראית שהגרלנו באותה איטרציה.
Ø Synchronization
Problem –
לאחר ריצה של
runCA (ריצה של M = 2 * Cellular_Automata_Size)
מעריכים כל תא באופן הבא – נניח כי אנו מחשבים את ערך ה fitness בזמן T, אזי:
If cell.value(T) == cell.value (T-2)
fitness++
מקבל 1+ אם ערכו שווה לערכו לפני 2 איטרציות
If cell.value (T) != cell.value (T-1)
fitness++
מקבל 1+ אם ערכו לא שווה לערכו מאיטרציה הקודמת
If cell.value (T) == cell.rigth.value (T)
fitness++
מקבל 1+ אם ערכו שווה לשכנו הימני
If cellValue(T) == cell.left.value (T)
fitness++
מקבל 1+ אם ערכו שווה לשכנו השמאלי
כלומר ערך fitness של תא יחיד הוא בטווח של
0 – 300*4.
Crossover:
Rule Table Crossover
method:
ע"פ
המתואר באלגוריתם –
לכל תא
מחשבים את ה Fitter neighbors
שלו (ערך ה fitness
שלהם גבוה יותר משלו).
אם ה fitter neighbors == 0 נשאר ללא שינוי.
אם מספר ה fitter neighbors == 1 אז מבצעים החלפה בינו
לבין השכן הטוב.
אחרת אם fitter neighbors == 2 (אין אפשרות ליותר r=1) מבצעים crossover כדלהלן: הגרלת מספר רנדומאלי,
בטווח 0-8, המציין את מספר החוקים שיועתקו משכן-הורה אחד, והשאר יועתקו מהשכן-הורה
השני. הRT החדש שנוצר הוא הצאצא
החדש.
Mutation rate: 0.01
Rule Table Mutation
method:
בחירת מיקום
בטבלה [0,7], חוק, באופן רנדומאלי והפיכת ערכו. בעת ביצוע mutation אנו בוודאות משנים את
ערכו של אחד מהחוקים שב Rule
table.
Experiments plots for Density Problem
The results for Cellular Automata, size = 29

Run #1:
Best Fitness:
Run #2:
Best Fitness:
Run #3: Best Fitness:
Run no. 1:

Rule
Table vector:
232 232 232 232 232 232 232 232 232 232 232 232 232 232 224 224
224 224 224 224 224 224 224 224 224 232 232 232 232
Run no. 2:

Rule
Table vector:
234 234 234 234 200 200 200 200 200 200 200 200 200 200 232 232
232 232 232 232 232 232 232 232 232 232 234 234 234
Run no. 3:

Rule
Table vector:
184 184 184 184 184
184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184 184
184 184 184 184
The results for Cellular Automata, size = 49

Run #1: Best Fitness:
Run #2: Best
Fitness:
Run #3: Best Fitness:
Run no. 1:

Rule
Table vector:
184 184
184 184 184 184 184 184 184 188 184 184 184 184 184 184 184 184 184 184 184 184
184 184 184 184 184 184 184 184 184 232 232 232 232 232 232 232 232 232 232 232
184 184 184 184 184 184 184
Run no. 2:

Rule
Table vector:
226 226
226 226 226 226 226 226 226 226 226 226 226 226 226 226 226 234 234 234 170 170
170 170 170 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232 232
232 232 232 232 226 226 226
Run no. 3:

Rule
Table vector:
95 95 95
95 95 95 95 95 95 95 127 127 127 127 127 127 127 127 127 127 127 127 127 127
127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127
127 127 95 95 95
Experiments plots for Synchronization Problem
The results for Cellular Automata, size = 29

Got the
first a Perfect
Fitness in generation number:
Run #1: 6300
Run #2: 8100
Run #3: 8400
Run no. 1:

Rule
Table vector:
117 117
117 117 117 117 117 117 117 117 117 117 117 119 119 119 115 113 3 3 3 3 3 7 3 3
11 3 21
Run no. 2:

Rule
Table vector:
81 81 81
17 17 17 87 87 87 19 83 83 83 83 83 83 83 83 119 119 119 115 83 81 81 83 83 83
83
Run no. 3:

Rule
Table vector:
83 83 83 83
83 83 83 83 83 83 83 83 63 63 63 63 63 63 63 63 63 63 63 63 63 55 55 55 55
The results for Cellular Automata, size = 49

Got the
first a Perfect
Fitness in generation number:
Run #1: 18900
Run #2: 16500
Run #3: 8700
Run no. 1:

Rule
Table vector:
35 35 35 35 35 35 3 3 3 3 3 3 3 3 3 3 3 11 3 3
3 3 3 3 39 39 39 39 39 39 39 39 37 39 55 39 39 39 167 39 39 39 35 35 35 35 35
35 35
Run no. 2:

Rule
Table vector:
39 103 39 39 39 39 39 103 39 39 39 39 39 39 39
39 39 39 39 39 103 39 39 35 35 39 39 39 39 53 53 53 53 53 53 53 53 53 53 53 53
63 31 31 31 63 63 63 31
Run no. 3:

Rule
Table vector:
85 21 21 21
21 21 21 21 21 21 21 21 21 21 21 21 23 53 85 53 53 21 21 21 51 59 59 59 59 59
59 59 43 59 43 11 11 27 11 11 3 3 21 21 21 21 21 21 21
לעיון מפורט בתוצאות כל הריצות הנ"ל לחץ
כאן
הערה – התמונות הנ"ל הינן מדגמיות בלבד ואינן מייצגות
בהכרח את הריצה הטובה ביותר. הן נבחרו בשל הצורות המעניינות אותן הם יצרו בדרכם
לפתרון מושלם. מתוך שלל התמונות ישנם הרבה דגימות ריצה מושלמות, אך בחרנו שלא
לצרפם למסמך בשל "השעמום" שבהם.
Improvements/Tricks:
v
Density problem – אין.
v
Synchronization problem – ע"פ המתואר לעיל, חישוב ה fitness מאפשר לכל תא להגיע לערך
בטווח 0-4, מאחר שלכל תא מתבצעת בדיקת הסנכרון מול שכניו הסמוכים, ימני ושמאלי,
ערכו ב time step–1
וערכו time step-2.
מניסויים שערכנו ראינו כי האבולוציה מגיעה לתוצאות הטובות ביותר ובדורות מוקדמים
יותר כאשר חישוב ה fitness
נעשה במתכונת הנ"ל.
Conclusions:
v
את בעיית הצפיפות לא הצלחנו לפתור בצורה מושלמת.התוצאה המקסימאלית
שקיבלנו הינה 94%.
v
את בעיית הסינכרוניזציה פתרנו בצורה מושלמת ולאחר מספר
דורות קטן יחסית.
v
ניתן לראות, הן בבעיית הסינכרוניזציה והן בבעיית
הצפיפות, כי בדורות הראשונים ערך ה fitness מאוד נמוך, שואף ל 0. אך
האבולוציה תוך מספר קטן של דורות מקפיצה את ערך ה fitness וישנה עלייה תלולה בערך
ה fitness.
לאורך ריצת האלגוריתם יש קפיצות בערך ה fitness בשל ה crossover, המתבצע כל 300 דורות (ללא
הסתברות כלשהי), וה mutation
המתבצע כל 300 דורות בהסתברות נמוכה. לאחר כל ירידה חדה בערך הfitness ניתן לראות כי האבולוציה "מתקנת" את
הנזק במהירות וערך ה fitness
עולה משמעותית.
v
בעקבות הניסויים שערכנו הגענו למסקנה שבעיית הצפיפות
הינה בעיה קשה יותר מבעיית הסינכרוניזציה. הדבר בא לידי ביטוי במספר אופנים:
o בבעיית הסינכרוניזציה הגענו
להתכנסות בתחום של 20,000 דורות, לעומת בעיית הצפיפות – אותה הרצנו
400,000 דורות ע"מ להגיע לתוצאה טובה.
o בבעיית הסינכרוניזציה אנו
מגיעים ל Perfect
Fitness (=1) לאחר מספר דורות קטן יחסית. הדבר בא לידי ביטוי
בגרפים לעיל. לעומת זאת, בבעיית הצפיפות אין אנו מגיעים ל Perfect Fitness. עבור CA
with size = 29קבלנו fitness מקסימאלי של 0.94. עבור CA
with size = 49קבלנו fitness מקסימאלי של 0.93.
o ניתן לראות כי בגרפים של Fitness vs. Time הגרפים של בעיית הצפיפות
רועשים יותר מהגרפים של בעיית הסינכרוניזציה. הדבר נובע מחוסר היציבות של פתרון
בעיית הצפיפות.
v
ניתן לראות כי בגרף של ה Rule Table בתחילה ישנו מגוון רחב
של חוקים, אך במהלך הריצה הגרף מתכנס למספר חוקים דומיננטיים, החוקים
"הטובים". ההתכנסות לחוקים הדומיננטיים אינה באי סדר. החוקים מופיעים
ברצף, ובכך שומרים על חוזקם ומשתלטים. בשתי הבעיות נראה כי האוטומט התאי, הלא
יוניפורמי, מתייצב על מספר מצומצם של חוקים שולטים.
v
הן בבעיית הסינכרוניזציה והן בבעיית הצפיפות, עבור CA with size = 29 האלגוריתם מתכנס במהירות
יותר מאשר עבור CA with
size = 49. הדבר בא לידי ביטוי בדורות הראשונים. אך במהלך
הריצה של האלגוריתם לא ניתן להסיק מסקנות לגבי התוצאות וקצב התקדמותו לקראת פתרון
טוב יותר על בסיס גודל ה CA.
Implementation: