Microsoft Word - report

מסמכים קשורים
הטכניון מכון טכנולוגי לישראל אלגוריתמים 1 )443432( סמסטר חורף הפקולטה למדעי המחשב תרגול 9 מסלולים קלים ביותר תרגיל APSP - 1 עד כה דנו באלגור

פקולטה: מחלקה: שם הקורס: קוד הקורס: מדעי הטבע מדעי המחשב ומתמטיקה מתמטיקה בדידה תאריך בחינה: _ 07/07/2015 משך הבחינה: 3 שעות סמ' _ב' מועד

תכנון אלגוריתמים עבודת בית 4: תכנון אלגוריתמים תאריך הגשה: 02: , בצהריים,תא מספר 66 בקומת כניסה של בניין 003 מתרגל אחראי: אורי 0

Microsoft Word - ExamA_Final_Solution.docx

תאריך פרסום: תאריך הגשה: מבנה נתונים תרגיל 5 )תיאורטי( מרצה ומתרגל אחראים: צחי רוזן, דינה סבטליצקי נהלי הגשת עבודה: -את העבודה יש לה

מוזיקה סינטטית

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

Microsoft Word ACDC à'.doc

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

Disclaimer מסמך זה הינו סיכום און-ליין של השיעור ולא עבר עריכה כלל. מצאת טעות? שלח/י לי מייל ואתקן: 07/05/2009 קורס: מערכות ה

תיק משימטיקה מגרף הנגזרת לגרף הפונקציה להנגשה פרטנית נא לפנות: כל הזכויות שמורות

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

Algorithms Tirgul 1

תכנון אלגוריתמים, אביב 1021, תרגול מס' 4 תכנון דינאמי תכנון דינאמי בתרגול זה נדון בבעיית הכפלת סדרת מטריצות (16.1.(CLR ראשית נראה דוגמא: דוגמא: תהינה

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc

שימו לב! יש לענות על כל השאלות בתוך טופס הבחינה, מחברות טיוטא הולכות לגריסה. על השאלות יש לענות במקום המיועד אחרי כל שאלה. תאריך הבחינה: שם

עבודה במתמטיקה לכיתה י' 5 יח"ל פסח תשע"ה אפריל 5105 קשה בלימודים, קל במבחנים, קל בחיים עבודה במתמטיקה לכיתה י' 5 יח"ל פסח תשע"ה יש לפתור את כל השאלות

מבנים בדידים וקומבינטוריקה סמסטר אביב תשע"ט מספרי רמזי תרגול 11 הגדרה: (t R = R(s, הוא המספר הטבעי הקטן ביותר כך שבכל צביעה של צלעות הגרף וכחול(, קיים

Microsoft Word - ex04ans.docx

2019 שאלות מומלצות לתרגול מס' דיפרנציאביליות של פונקציה סקלרית )המשך(. כלל השרשרת. S = ( x, y, z) z = x + 3y על המשטח מצאו נקודה בה מישור משיק

" תלמידים מלמדים תלמידים."

תרגיל 5-1

בגרות עז יולי 17 מועד קיץ ב שאלון ,000 א. ניתוח הנתונים מחירה של ספה הוא שקלים, והיא התייקרה ב-. 25% כאשר המחיר מתייקר ב- המחיר החדש הוא פי,

אנליזה מתקדמת

Microsoft Word - Questions Booklet Spring 2009

שואב אבק רובוטי XIAOMI דגם - Vacuum Mi Robot מק"ט ספק 8223 תכנון מסלול חכם שאיבה חזקה שליטה חכמה ע"י Wi-Fi מרחוק בעל 21 חיישנים למיפוי מושלם של הבית צ

Microsoft Word - Sol_Moedb10-1-2,4

<4D F736F F D20FAE5F1F4FA20ECE7E5E5FA20E3F2FA20ECE2E1E920E3E9F1F720FAEEE5F0E5FA20E6E9F8FA20E4F8F6E72E646F63>

סדנת תכנות ב C/C++

עמוד 1 מתוך 5 יוחאי אלדור, סטטיסטיקאי סטטיסטיקה תיאורית + לוחות שכיחות בדידים/רציפים בגדול מקצוע הסטטיסטיקה נחלק ל- 2 תחומים עיקריים- סטט

מספר נבחן / תשס"ג סמסטר א' מועד א' תאריך: שעה: 13:00 משך הבחינה: 2.5 שעות בחינה בקורס: מבחנים והערכה א' מרצה: ד"ר אבי אללוף חומר עזר

מבוא למדעי המחשב

פייתון

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

PRESENTATION NAME

פרופיל ארגוני - תדריך להכרת שירות - מסלול מלא ציין כאן את מירב הפרטים המזהים: שם השירות, כתובת, שם מנהל השירות, שמות עובדים בכירים, שעות קבלת קהל, שעו

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

<4D F736F F D20FAF8E2E5EC20E0ECE2E1F8E420EEF2E5F8E D F9E0ECE5FA2E646F63>

<4D F736F F D20F4E9E6E9F7E420FAF8E2E5ED20ECF2E1F8E9FA20E4E2E4E420F1E5F4E9FA20496C616E2E646F63>

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

תרגול מס' 7 – חזרה על MST ואלגוריתם Dijkstra

בחן במערכות הפעלה

Microsoft Word - עבודת פסח לכיתה י 5 יחל.doc

מבוא לאנליזה נומרית na191 Assignment 2 solution - Finding Roots of Nonlinear Equations y cos(x) שאלה 1 היכן נחתכים הגרפים של? y x 3 1 ושל ממש פתרונות

תרגיל בית מספר 1#

שם כיף עם ג'ף מאגר פעילויות חלק א' חוברת של פעילויות מתמטיות: העשרה, העמקה, משחקים ואתגרים כיתה

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

אחריות קבוצתית

אוניברסיטת בן-גוריון המחלקה למדעי המחשב בוחן במבנים בדידים וקומבינטוריקה פרופ' מתיא כ"ץ, ד"ר עופר נימן, ד"ר סטוארט סמית, ד"ר נתן רובין, גב'

Slide 1

מכללת הדסה, הפקולטה למדעי המחשב מבוא לתכנות מונחה עצמים והנדסת תוכנה סמסטר א', תשע"ו תרגיל 2 תאריך אחרון להגשה: קמפוס הנביאים יום א', 29/11/2015 בשעה

שעור 6

Microsoft Word - Ass1Bgu2019b_java docx

מועד: א בחינה סופית במתמטיקה דיסקרטית משך הבחינה: 2 1 שעות מרצה: פרופ' תאופיק מנסור תאריך: סמסטר: א תשע"ח m 2 הוראות לנבחן: )1( הבחינה מו

<4D F736F F D20F4FAF8E5EF20EEE5F2E320E020F1EEF1E8F820E120FAF9F2E3>

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

Slide 1

מצגת של PowerPoint

בארץ אחרת

מבוא לתכנות ב- JAVA תרגול 7

Microsoft Word - V2 16.doc

פרויקט "רמזור" של קרן אביטל בס "ד מערך שיעור בנושא: "פונקציה" טליה קיפניס והדסה ערמי, מאולפנת צביה פרטים מקדימים על מערך השיעור: השיעור מהווה מבוא לנו

וועדת הלסינקי מרכזית - מטרות ואמצעים

PowerPoint Presentation

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

מדריך להתחלה מהירה Microsoft Project 2013 נראה שונה מגירסאות קודמות, ולכן יצרנו מדריך זה כדי לעזור לך ללמוד להכיר אותו. סרגל הכלים לגישה מהירה התאם אי

שיעור מס' 6 – סבולות ואפיצויות

שיעור 1

Microsoft Word - solutions.doc

מקביליות

PowerPoint Presentation

תרגול 1

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

מתמטיקה לכיתה ט פונקציה ריבועית

PowerPoint Presentation

Microsoft Word - hedva 806-pitronot-2011.doc

<4D F736F F D20EEF9E5E5E0E5FA20E3E9F4F8F0F6E9E0ECE9E5FA2E646F63>

מערך פעולה 55 דקות מטרות: )1 )2 )3 נושא: המשימה: הגשמה משך החניך יגדיר מהי הגשמה וכיצד היא ביטוי של החלום במציאות. הפעולה החניך ישאף להגשמה בחייו. החנ

טורניר באולינג נגב ה 3 לשנת 2017 ע"ש דורון אסולין ז"ל טורניר זה מיועד לכלל שחקני הבאולינג המשחקים בבאולינג עמותת נגב, כדורת ב"ש וליגה למקומות עבודה. ה

מגישה : חני חוקת תשע"ו עבור "קריאת כיוון" למטרת למידה אישית בלבד חוקת שמורות חני הזכויות שמורות הזכויות כלכל

יחידה 8: שיקוף, הרחבה וכיווץ של פרבולות שיעור 1. שיקוף בציר x תלמידים התבקשו לשרטט פרבולה שכל הערכים שלה שליליים. y יואב ש רטט כך: y תומר אמר: אי-אפשר

תקנון כדורגל כללי 1. הוראות תקנון זה, הינן ייחודיות לענף הכדורגל ובאות להוסיף על הוראות התקנון הכללי. 2. המשחקים ייערכו לפי חוקת המשחקים הנהוגה בהתאחד

כיצד כותבים דוח אבחון פסיכולוגי

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

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

PowerPoint Presentation

מבחן בפיתוח מערכות תוכנה בשפת Java ( )

<4D F736F F D20F4F2E5ECE5FA20EEE5EEF6E0E5FA20312E646F63>

1 מבחן משווה בפיסיקה כיתה ז' משך המבחן 90 דקות מבנה השאלון : שאלון זה כולל 4 שאלות עליך לענות על כולן.כתוב את הפתרונות המפורטים בדפים נפרדים וצרף אותם

שאלהIgal : מערכים דו מימדיים רקורסיה:

טיפים להצלחה במהלך הבחינה 1. בתחילת הבחינה קראו היטב את כל השאלות וסמנו לעצמכם את השאלות המועדפות על ידכם. קראו כל שאלה לפחות פעמיים, כדי שלא תחמיצו נ

Slide 1

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

מדריך למרצים ומתרגלים 1

Microsoft Word - 01 difernziali razionalit

ע 001 ינואר 10 מועד חורף פתרונות עפר

Microsoft Word - vaidya.doc

המשברים מאז 2007

תמליל:

פרויקט בקורס "מבוא לבינה מלאכותית" Reinforced אלגוריתמים גנטיים, ו- Learning,Tower Defence עודד ניר, 304870348 יובל אלנבלום, 305393944 1

מרץ 2011 2

תוכן העניינים 1. תיאור המשחק - הקדמה 2. תיאור המשחק חוקי המשחק 3. אלגוריתמים גנטיים - מבוא 4. אלגוריתמים גנטיים - מימוש - reinforced learning מבוא.5 - reinforced learning מימוש.6 7. תוצאות וניתוחן 8. מסקנות 9. סיכום 10. קוד מקור 3

1. תיאור המשחק - הקדמה אנחנו בחרנו לחקור בפרויקט שלנו אלגוריתמים גנטיים ואלגוריתמים של למידה מחיזוקים, ולנסות להבין מה היתרונות והחסרונות של כל אחד מהסוגים בבעיות עם מאפיינים שונים. במסגרת הפרויקט בנינו משחק Tower Defence משלנו, שבעזרתו חשבנו שיהיה נוח לבחון את שני סוגי האלגוריתמים. העבודה על המשחק עצמו הייתה מאוד מעניינת. היינו צריכים ליצור משחק שיקיימו את התנאים הבאים: משחק לא קל מדי - אותו בקלות אסור שכל אלגוריתם יפתור אותו בקלות, או שבן אדם יוכל לפתור.1 משחק לא קשה מדי - על אלגוריתם מוצלח או בן אדם ממוצע להצליח לפתור אותו.2 ביצועים מדידים ברזולוציה טובה כדי שהאלגוריתם הגנטי ידע לשפר את הצעות הפתרון שלו למשחק, עליו לקבל ציון משמעותי על כל ניסיון שלו לפתרון משחק מהיר ידענו שנרצה להריץ את המשחק הרבה מאוד פעמים ולהשיג סטטיסטיקות על הביצועים של האלגוריתמים השונים, ולכן על כל הרצה של המשחק לא לקחת יותר מדקה..3.4 בנוסף היה עלינו ליצור אוסף חוקים שניתן לשנות יחסית בקלות, כך שהשפעת השינויים שנעשה על אופי המשחק תהיה משמעותית. במהלך העבודה נתקלנו בבעיות נוספות כששינינו את האלגוריתמים ואת המשחק במקביל כל שינוי במשחק שינה את טיב הפעולה של האלגוריתמים, ושינויים מסוימים באלגוריתמים הפכו בנקודות זמן מסוימות את המשחק לקל מדי. לכן כשלא היינו מרוצים מפעולת האלגוריתמים הייתה לנו בדרך כלל החלטה לא טריוויאלית לפנינו האם לשנות את חוקי המשחק, או את דרך מימוש האלגוריתמים. 4

2. תיאור המשחק - חוקי המשחק במשחק זה ישנו מסלול עליו יכולות לנוע מפלצות. מטרת המשחק היא למקם "מגדלים" במקומות המתאימים על גבי לוח המשחק, כך שהמגדלים יפגעו במפלצות בצורה אופטימלית ולא יאפשרו להן להגיע מנקודת ההתחלה לנקודת הסיום. לפני שהמשחק מתחיל, השחקן יכול לקנות מגדלים במחיר כולל מסוים, למקם אותם, ואז מפלצות מתחילות לנוע במגרש ולשחקן אין עוד השפעה על המתרחש. המשחק בנוי משלבים, כשבכל שלב מתחילות לנוע במסלול מספר כלשהו של מפלצות. מספר המפלצות עולה עם השלבים, ולאחר כל מספר מסוים של שלבים מצטרפות למשחק מפלצות מסוג חדש. שחקן מתחיל את המשחק עם 200 נקודות חיים, ובכל פעם שמפלצת מגיעה לנק' הסיום היא מורידה לו מספר מסוים של חיים. מספר השלב בו נקודות החיים של השחקן מגיעות ל- 0, הוא הניקוד שהשחקן מקבל על המשחק. בתמונה: לוח המשחק בזמן הרצה חיה של המשחק. המפלצות יכולות לנוע רק על המשבצות האדומות, מצד שמאל למעלה ועד צד ימין למטה. המגדלים יכולים להיות ממוקמים רק על משבצות "דשא". בתמונה זו אנו רואים שיבוץ מגדלים בינוני יחסית, שסיים את המשחק בהצלחה. 5

להלן פירוט המפלצות: מפלצת-תינוקת: מפלצת בעלת 20 חיים, נוצרת ללא מגן, מורידה 2 נק' חיים מפלצת-מבוגרת: מפלצת בעלת 50 חיים, נוצרת עם מגן 1, מורידה 4 נק' חיים מפלצת-ענקית: מפלצת בעלת 60 חיים, נוצרת עם מגן 5, מורידה 6 נק' חיים מפלצת-אוויר: מפלצת בעלת 30 חיים, נוצרת ללא מגן, ועפה באוויר, מורידה 3 נק' חיים.1.2.3.4 המגדלים שניתן להציב במגרש הם: מגדל פשוט: מחירו 1, בעל טווח של 4 משבצות, עושה נזק של 1 חיים למפלצת אוויר, ו- 2 חיים לשאר, והוא עושה זאת רק למפלצת אחת בכל פעם. מגדל מעגלי: מחירו 2, בעל טווח של 3 משבצות, עושה נזק של 3 חיים למפלצות קפואות, ו- 2 חיים לשאר. מגדל תותח: מחירו 3, בעל טווח של 3 משבצות, עושה נזק של 6 חיים למפלצות אוויר, ו- 2 חיים לשאר. מגדל הקפאה: מחירו 3, בעל טווח של 4 משבצות, מקפיא מפלצות אוויר במקומן לתור 1, ואת שאר המפלצות ל- 6 תורים. מפלצת יכולה לקפוא רק פעם אחת במשחק. מגדל נגד-מגן: מחירו 3, בעל טווח של 3 משבצות, עושה נזק של 1 חיים למפלצות שאינן אוויריות, ונזק של 2 למגן..1.2.3.4.5 6

נסביר כיצד חוקים אלה עומדים במטרות שהצבנו: משחק לא קל מדי ולא קשה מדי - העובדה שמגדלים שונים פוגעים בצורה שונה במפלצות שונות גורמת לכך שרק שיבוצים במקומות מאוד מסוימים של צירופים מאוד מסוימים של מגדלים יכולים לסיים את השלב האחרון במשחק. לכן המשחק אינו טריוויאלי. כדי לקבוע כמה המשחק יהיה קל או קשה, ניתן לקבוע את כמות הכסף איתה השחקן מתחיל את המשחק. ביצועים מדידים ברזולוציה טובה, ומשחק מהיר בנינו 80 שלבים שונים למשחק. ככל שכמות השלבים גדולה יותר הביצועים במשחק מדידים ברזולוציה טובה יותר, אך הוא הופך לאיטי יותר כי צריך להריץ יותר שלבים. לאחר הרבה מאוד ניסויים וטעויות הגענו למסקנה ש- 80 נותן לנו איכויות טובות בשני הקריטריונים. כמו כן בנינו למשחק מצב פעילות מהיר בו לא רואים את המפלצות זזות וכל החישובים מתבצעים בלי אינטראקציה עם ה- GUI, ומצב "כיפי" בו רואים את המפלצות זזות על פני לוח המשחק. שינויים בחוקים משנים את אופי המשחק בעזרת שינוי בכמות הכסף איתה השחקן מתחיל ניתן לשנות את קושי המשחק. בעזרת שינוי המפה ניתן ליצור משחק בו למיקום המגדלים חשיבות מכרעת, לעומת משחק בו בחירת סוג המגדלים הוא הגורם המשמעותי. שתי הגישות מביאות למשחקים מאוד שונים, כפי שנראה בהמשך..1.2.3 7

3. אלגוריתמים גנטיים - מבוא השם אלגוריתמים גנטיים מתאר משפחה של אלגוריתמים לאופטימיזציה, שבהם משלבים זה בזה פתרונות אפשריים לבעיה, ומפעילים הליכים של ברירה טבעית כדי לבחור את המועמדים שיעברו לשלבים הבאים. רעיון זה מושפע מן היעילות של תורת האבולוציה. בתחילת פתרון בעיה בעזרת אלגוריתם גנטי, יוצרים בדרך כלשהי "קהילת פתרונות". לאחר יצירת קהילת הפרטים הראשונה,מדרגים כל פרט על מנת למצוא את הפרטים הטובים ביותר. לאחר מכן, מזווגים בין פרטים אלה על מנת ליצור קהילה חדשה, טובה במקצת מקודמתה, ומעבירים אותה את אותו התהליך. ההנחה כאן היא שמיזוג בין שני פתרונות טובים לבעיה יניב בדרך-כלל פתרון טוב יותר. לאחר מספר חזרות על הפעולה, הפרטים ישתפרו דרמטית ויציגו את הפתרון הטוב ביותר,או פתרון טוב באופן יחסי לבעיה הנתונה. אלמנט נוסף בתורת האבולוציה בו משתמשים באלגוריתמים גנטיים הוא המוטציה. כדי לא להגיע למצב בו כל החברים קהילת הפתרונות שלנו דומים זה לזה ורחוקים מהפתרון האופטימאלי, ניתן לשלב שינויים אקראיים בחלק מהפתרונות, ואם השינויים מוערכים כמוצלחים לשמר אותם באוכלוסיה. פסואדו-קוד של אלגוריתם גנטי: צור אוכלוסייה התחלתית הערך את ההתאמה של כל פרט באוכלוסייה חזור.1.2.3 בחר את הפרטים המתאימים ביותר לזיווג צור דור חדש של פרטים על ידי מיזוג ומוטציה של הדור הקודם הערך את ההתאמה של הפרטים החדשים באוכלוסיה 3.1 3.2 3.3 לאלגוריתם גנטי אופי סטטיסטי, הן ביצירת הקהילה הראשונית, הן במוטציות, והן בתהליך הזיווג. לכן אלגוריתם גנטי לא מתאים לבעיה פשוטה שניתן לפתור באופן אנליטי, ובד"כ משתמשים בו לבעיות מסובכות בהן מספיק שנמצא פתרון שקרוב לפתרון האופטימלי. 8

4. אלגוריתמים גנטיים מימוש נסביר איך מימשנו במשחק שלנו את החלקים השונים של האלגוריתם. יצירה של קהילת פתרונות ראשונית פתרון למשחק, הוא אוסף מגדלים שמשובצים על הלוח, שמחירם הכולל כמחיר הקבוע במשחק נקרא פתרון. את קהילת הפתרונות הראשונית יצרנו באופן סטטיסטי לחלוטין הגרלנו סוג מגדל מבין ה- 5 האפשריים, הגרלנו לו מיקום שבו ניתן לשבץ אותו, ושיבצנו אותו שם. כך עשינו שוב ושוב עד שנגמר הכסף למגדלים, ואז נוצר פתרון. בהכרח נגמר בשלב מסוים הכסף למגדלים, מכיוון שיש מגדל שעלותו 1, ותמיד אפשר יהיה לקנות אותו. מתן ערך לפתרון כדי לקבוע כמה טובים הפתרונות שיצרנו, הרצנו את המשחק כשהם ממוקמים על המפה. הערך שניתן לפתרון הוא מספר השלב בו החיים שלו הגיעו ל- 0 בעקבות הגעה של מפלצות לסוף המסלול. מכיוון שקבענו את המשחק עם 80 שלבים, קיבלנו רזולוציה טובה לערכי פתרונות אפשריים. זיווג של שני פרטים כדי ליצור צאצא משני "הורים", עלינו ליצור אוסף מגדלים שמורכב מהמגדלים של שני ההורים. לכן הגרלנו חצי מהמגדלים של ההורה הראשון והוספנו אותם למגדלי הצאצא, ואז הגרלנו מגדלים מההורה השני והוספנו אותם לצאצא עד שנגמר הכסף למגדלים. במידה ועברנו על כל המגדלים ועדיין נשאר כסף, נקנה לצאצא מגדלים חדשים באופן רנדומאלי. מוטציה של פרט בודד מימשנו שני סוגי מוטציות במשחק, שהתרחשו שתיהן בהסתברות שווה: מוטציית הזזה: מגדל אחד של הפתרון נבחר בצורה רנדומאלית, ומוזז למקום רנדומאלי בלוח. מוטציית מכירה: שני מגדלים "נמכרים", ואז נקנים מגדלים באופן רנדומאלי עד שנגמר הכסף..1.2 האלגוריתם עצמו האלגוריתם פועל באיטרציות, ומושפע מפרמטר לו קראנו "קבוע הברירה הטבעית". בכל איטרציה, נבחרים בצורה אקראית מתוך "קבוע הברירה הטבעית" הפתרונות הטובים ביותר שני פתרונות שאותם נזווג, ופתרון אחד שיעבור מוטציה בסיכוי מסוים. מימשנו את המוטציה כך שפתרון שעובר מוטציה משוכפל ורק אז עובר את המוטציה, כדי לא לאבד פתרונות טובים. מתי נצפה שהאלגוריתם יעבוד "טוב"? - ככל שהמסך גדול יותר האלגוריתם הגנטי יעבוד פחות טוב ביחס לאלגוריתם פשוט, מפני שיבחרו באופן סטטיסטי יותר מקומות לא טובים למקם בהם מגדלים, ולכן מוטציות יעבדו פחות טוב, וחלק משמעותית גדול יותר מהפתרונות יהיה לא רלוונטי. בגלל סיבה זו הורדנו את גודל לוח המשחק ב 50X50 כפי שתיכננו בהתחלה, ל- 33X43. 9

Reinforced learning מבוא.5 (reinforced learning)rl נועדה לפתור בעיות בהם הסוכן צריך ללמוד התנהגות אופטימאלית בסביבה דינמית ורועשת. בבעיות אלה אנו מניחים כי הסוכן הלומד משפיע על סביבתו בהחלטותיו. הפתרון של בעיות אלה נעשה בעזרת גישה לומדת של ניסוי וטעייה : בדיקת האפשרויות הקיימות ובחירת הטובות יותר, תוך כדי שיפור ביצועים עם הניסיון. האתגר העיקרי בבעיית ה- RL הוא התמודדות עם הסיבוכיות הגדולה המתבטאת בעיקר במספר מצבים גבוהה מאוד. הסימונים בהם נשתמש - כעת נתאר בקצרה את הסימונים שבהם נשתמש בהמשך: אנו נריץ את האלגוריתם באיטרציות כאשר נגיד שמצב הוא בזמן t אם הוא המצב באיטרציה ה t. לצורך הבעיה נתונה לנו פונקצית מעברים כלשהי:,, כאשר הוא המצב ו a היא הפעולה שנעשית במצב. הפונקציה נותנת לנו את המצב לאחר הפעלת a במצב. בנוסף נתונה לנו פונקצית ערך: r(s,a) אשר אומרת לסוכן כמה שווה כל פעולה שלו. אנו קובעים לסוכן שלנו איזושהי מדיניות בקרה π שקובעת איזו פעולה מבצע הסוכן בהינתן כל המצבים שחלפנו עליהם. בנוסף יש 2 פונקציות שאינן נתונות לנו אך אנו רוצים לגלות אותן ובעזרתן לפתור את הבעיה והן : פונקצית הערך האופטימאלית: V(s) אשר נתונה ע"י π עבור המדיניות האופטימאלית. כלומר פונקציה זו נותנת לנו את הרווח המכסימלי שניתן להשיג בכמות בלתי מוגבלת של זמן אם התחלנו ממצב מסוים. הפונקציה השנייה הינה פונקצית, שמוגדרת כ:,,, כלומר כמות הרווח המכסימלית שניתן להרוויח בהינתן ואני במצב s וביצעתי פעולה a. כמובן שאם אני יודע במלואה את v או את Q אני יכול לתכנן מדיניות אופטימאלית בקלות פשוט אעשה בכל צעד את הפעולה שתמקסם את הרווח שלי בטווח הארוך. Q פה הסוכן מעריך את פונקצית ה.SARSA הנקרא RL אנו השתמשנו באלגוריתם - SARSA ומסיק ממנה את המדיניות האופטימלית. 10

האלגוריתם - כפי שהוא מופיע בספר הקורס (Reinforcement Learning: an introduction by Richard s. Sutton and Andrew g. Barto ) באלגוריתם זה בכל צעד בוחרים את הפעולה הבאה מתוך הערכים המוערכים שקיבלנו עד כה לפונקצית ה Q כאשר היא מאפשרת מקום לשגיאה מכוונת בכדי שנוכל לחקור כיוונים נוספים פרט לכיוון שהתחלנו ממנו. על פונקצית הבחירה הזו נרחיב בהמשך. אחרי שהאלגוריתם בוחר פעולה הוא רואה לאיזה מצב הגענו ואיזה רווח קיבלנו ומעדכן את פונקצית ה Q בהתאם כך שההערכה שלה הולכת ומשתפרת עם הזמן. - לשם בחירת הפעולה שהסוכן יבצע בצעד הבא השתמשנו, כמוצע בספר, בפונקציה - -greedy greedy אשר בוחרת בהסתברות ε פעולה בצורה רנדומית ובהסתברות 1 ε בוחרת את הפעולה עם ערך הQ הגבוהה ביותר. 11

Reinforced learning מימוש.6 הצגת מצב - במימוש של האלגוריתם למקרה שלנו נתקלנו בבעיה גדולה בכל הנוגע לכוח חישוב. הלוח שלנו הוא בגודל 33*43 ויש סדר גודל של 9 מגדלים כשכל מגדל יכול להיות מ 5 סוגים שונים ובמיקום כלשהו. בסך הכל יש לנו בערך 5 43 33 10 לכן לא יכולנו להסתכל על המיקום של כל המגדלים כמצב. במקום זאת החלטנו להסתכל על המיקום של מגדל יחיד בתור המצב והתייחסנו למיקום של שאר המגדלים בתור "רעש" אשר משפיע על פונקצית הערך r. כך המצב s הינו מיקום של מגדל וסוג של מגדל. הצגת פעולה - גם לגבי הפעולה נתקלנו בבעיה קלה: כמות האיטרציות שהאלגוריתם צריך לעבור תלוי במספר הזוגות של מצב-פעולה ולכן אם נבחר את הפעולות הטריוויאליות העברת המגדל למיקום אחר נקבל שמס' הזוגות שלנו הוא בערך: 5 43 33 43 33 10 ושוב לא היינו יכולים לבצע את האלגוריתם בפרק זמן סביר. בנוסף אם היינו בוחרים בפתרון זה היינו נשארים עם סוג המגדלים שבחרנו בפתרון הרנדומי הראשון. תחת זאת בחרנו בפעולות הבאות עבור למקום רנדומי אחר (בדומה למוטצית ההזזה מהאלגוריתם הגנטי); תמכור את עצמך ומגדל נוסף ובנה חדשים עד אשר נגמר הכסף (בדומה למוטצית המכירה מהאלגוריתם הגנטי); אל תעשה כלום. בעזרת פעולות אלה יכולנו להגיע מכל פתרון לכל פתרון כאשר מרחב המצבים-פעולות שלנו נשאר רק בגודל של 43 33 5 3 2.1 10 כעת בכל מצב אנו לא יודעים לאן כדאי לנו לעבור אך אנו יודעים אם כדאי לנו לצאת מהמצב שבו אנו נמצאים או להישאר בו. כך אם האלגוריתם היה עובד באופן מושלם היינו יודעים בדיוק מתי כדאי לנו לעבור מהמקום שבו אנו נמצאים ומתי שווה לנו להישאר במקום. פתרון שאריות בעיית החישוב - מרחב המצבים עדיין נותר גדול ולכן חילקנו את הלוח ל"פיקסלים" לקבוצות של משבצות שהתייחסנו אליהם כאל משבצת אחת לצורך הערכת ערכם. כך לא ידענו עד כמה שווה לכל מגדל להיות במקומו המדויק אלא רק כמה שווה למגדל להישאר בתחום שבו הוא נמצא. חזרה לפתרון הטוב ביותר - בגלל כל הבחירות הנ"ל הסיכוי להגיע לפתרון טוב בהזזת מגדל הוא בינוני ולכן כדי שלא נתקדם יותר מדי ב"ענפים גרועים" כל כמה איטרציות חזרנו לפתרון הטוב ביותר שמצאנו עד כה. יש לציין שעובדה זו לא בעייתית במיוחד מכיוון שבאלגוריתם שלנו ניתן להגיע מכל פתרון לכל פתרון במס' מאוד נמוך של איטרציות. פונקצית הערך - את פונקצית הערך הגדרנו בתור ההפרש בין השלב במשחק שהגענו אליו לפני הפעולה והשלב במשחק שהגענו אליו אחרי הפעולה. כלומר אם הפתרון הנוכחי שלנו מגיע עד שלב 35 ולאחר הזזת אחד המגדלים הפתרון החדש מגיע לשלב 42 אז ההזזה של המגדל נותנת ערך 7. 12

7. תוצאות וניתוחן א. אפיון האלגוריתם הגנטי, שינוי כמות הכסף ביצענו מספר רב של בדיקות המאפיינות את שני האלגוריתמים ומשוות ביניהם. להלן מקרא לפרמטרים שבדקנו, כדי שהצגת התוצאות בהמשך תהיה נוחה יותר: -Best-Random-Solution ממוצע על כל ההרצות של איכות הפתרון הטוב ביותר לפני הרצת האלגוריתם הגנטי Cut-Off ממוצע על כל ההרצות של כמות הפתרונות מתוך ה- 400 שנוצרים לפני האלגוריתם הגנטי, שעוברים שלב כלשהו Baby-Number ממוצע להרצה של מספר הזיווגים שהובילו לפתרון-טוב-ביותר חדש Move-Mutation-Number ממוצע להרצה של מספר מוטציות ההזזה שהובילו לפתרון-טוב-ביותר חדש Sell-Mutation-Number ממוצע להרצה של מספר מוטציות המכירה שהובילו לפתרון-טוב-ביותר חדש תחילה רצינו לבדוק כמה טוב האלגוריתם הגנטי. עניין אותנו לראות כמה טובים פתרונות שנוצרו רנדומאלית לפני הפעלת האלגוריתם הגנטי, כמה הוא משפר אותם ואיך, ותוך כמה זמן. כמו כן עניין אותנו לראות איך האלגוריתם מתמודד עם רמות שונות של קושי של המשחק כמויות שונות של כסף איתו ניתן לקנות מגדלים. לשם כך ביצענו מס' סטים של 100 הרצות של האלגוריתם, כשבכל פעם שינינו את Total Price: 14 15 16 כמות הכסף, ומדדנו את כל הפרמטרים שהזכרנו. בכל סט Best-Random-Solution 34.24 36.23 37.21 מספר הפתרונות הרנדומאליים ההתחלתיים היה 400, מספר Cut-Off 128.78 149.78 172.39 האיטרציות שנתנו לאלגוריתם Baby-Number 4.51 4.69 4.62 לרוץ לפני שהפסקנו אותו היה 500, ו-"קבוע הברירה הטבעית" Move-Mutation-Number 1.14 1.37 1.28 שבחרנו היה 20, כלומר רק 20 הפתרונות הטובים ביותר יכולים Sell-Mutation-Number 1.46 1.86 2.17 לעבור מוטציות ולהזדווג. 13

ניתוח: הטבלה מספקת לנו נתונים ראשוניים מעניינים על האלגוריתם. קודם כל ככל שהמשחק יותר קל, הפתרונות הרנדומאליים יותר טובים (זה אכן הגיוני...). בנוסף לכך, אנו רואים שהאלגוריתם הגנטי אכן משפר את הפתרונות -בממוצע הפתרון הכי טוב באוכלוסיה משתפר כ- 7.5 פעמים בכל הרצה של האלגוריתם. כמו כן אנו רואים שהשיפורים שגורמים הזיווגים דומיננטיים יותר משיפורי המוטציות - על כל זיווג מתבצעת מוטציה אחת או של הזזה או של מכירה, ויש יותר שיפורים כתוצאה מזיווגים מאשר משני סוגי המוטציות יחד. כמו כן, ניתחנו עבור כל 100 פתרונות כאלה כמה מהם סיימו את המשחק, ואם כן אז לאחר כמה איטרציות של האלגוריתם הגנטי. להלן היסטוגרמה שמתארת את הניסויים: מספר ההרצות כמה איטרציות עד הסיום ניתוח: ניתן לראות שגם האלגוריתם הגנטי מושפע מרמת הקושי של המשחק כשיש מעט כסף לקנות מגדלים כמעט 80% מההרצות לא הסתיימו בהצלחה בפחות מ- 500 איטרציות, לעומת 40% כשיש כמות בינונית של כסף, ו- 13% כשיש כמות גדולה של כסף. 14

ב. אפיון האלגוריתם הגנטי, שינוי מאפייני מוטציות וזיווגים כעת כשראינו כמה האלגוריתם מושפע מרמת הקושי של המשחק, החלטנו להמשיך ולחקור אותו ברמת משחק קלה יחסית כסף כולל לקנית מגדלים של 16. הסיבה לכך היא שברמה זו רוב ההרצות של האלגוריתם מסתיימות בהצלחה בזמן סביר, ולכן נוכל לבחון את טיב האלגוריתם ברזולוציה טובה, ולא בצורה בוליאנית של "סיים להריץ או לא". את הפרמטרים של "קבוע הברירה הטבעית" וגודל האוכלוסייה ההתחלתי השארנו כפי שהיו לאורך כל המדידות, וביצענו מספר סטים של 100 הרצות של האלגוריתם בלי מוטציות בכלל, בלי זיווגים בכלל, עם סיכוי של 50% למוטציה, והרצות רגילות. מספר ההרצות כמה איטרציות עד הסיום ניתוח: ממדידות אלה אנו למדים שכל הפרמטרים באלגוריתם הגנטי חשובים, ושהשילוב ביניהם מניב תוצאות טובות משמעותית מכל אחד מהם בנפרד. עם מוטציה אחת וזיווג אחד שמתבצע בכל איטרציה רק 13% מהפתרונות נכשלים, כשאנו מורידים את מספר המוטציות לחצי (סטטיסטית) לאיטרציה אחוז הנכשלים עולה לכ- 30%, וכשמבטלים לחלוטין את מנגנון המוטציות או הזיווג כמעט 75% מהפתרונות לא מצליחים לסיים את המשחק לאחר 500 איטרציות של האלגוריתם הגנטי. 15

ג. אפיון האלגוריתם הגנטי, שינוי "קבוע הברירה הטבעית" כעת כשהבנו כשכל הגורמים באלגוריתם הגנטי חשובים, נותר לנו לבדוק מהו "קבוע הברירה הטבעית" האופטימאלי, כלומר, מהו גודל האוכלוסייה בו מתבצעים מוטציות וזיווגים שיביא לתוצאות הטובות ביותר. ביצענו סטים של 50 מדידות כשכל הגורמים נשארים קבועים, המחיר הכולל לקנית מגדלים הוא 16, ו-"קבוע הברירה הטבעית" משתנה מ- 20 ל- 10 ול- 4. מספר ההרצות כמה איטרציות עד הסיום ניתוח: ניתן לראות בבירור מגרף זה כי "קבוע הברירה הטבעית" הטוב ביותר קרוב יותר ל- 10 מל- 4 או 20. כשקבוע הברירה הטבעית 10, רק כ- 6% מההרצות לא מסיימות בפחות מ- 500 איטרציות. ניתן להסביר זאת יחסית בפשטות- כשקבוע הברירה הטבעית גדול מדי, זיווגים ומוטציות מתבזבזים על פתרונות גרועים, וכשקבוע הברירה הטבעית קטן מדי אין מספיק "גיוון גנטי" וקל יותר להיתקע במקסימום מקומי של הבעיה. 16

ד. אפיון אלגוריתם הRL, שינוי גודל הפיקסל תחילה רצינו לבדוק באיזה גודל צריכים להיות ה"פיקסלים" שלנו בכדי לקבל פתרון מוצלח. עשינו זאת בעזרת הרצת מספר משחקים עם פיקסל בגודל מסוים, מיצוע וחזרה על התהליך עבור פיקסל בגודל אחר. הרצנו את האלגוריתם במשך 5000 איטרציות ובדקנו מה אחוז ההרצות שמגיעות לפתרון המסיים את המשחק. הרצנו את האלגוריתם 10 פעמים על כל גודל פיקסל ולכן סביר שהסטייה באמצע הגרף היא שגיאה סטטיסטית. להלן הגרף: ניתוח: גרף זה מציג את אחוז הפתרונות שסיימו את המשחק כפונקציה של גודל הפיקסל. גודל הפיקסל מוצג ביחידות של מס' משבצות X מס' משבצות. אנו יכולים לראות שכפי שציפינו, עבור פיקסלים קטנים הסיכוי להצליח יחסית נמוך. זאת כיוון שמרחב המצבים גדול מדי והאלגוריתם לא מספיק להשפיע. עבור פיקסלים גדולים מדי אין משמעות לתוצאות האלגוריתם ולכן הוא שוב מצליח פחות טוב ובאמצע ההצלחה אופטימלית. כתוצר לוואי של מדידה זו ניתן לראות את אחוזי ההצלחה המרשימים של האלגוריתם בערכים המתאימים. זאת בניגוד לאלגוריתם רנדומי לחלוטין אשר לא הצליח לפתור את המשחק כלל. 17

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

ו. השוואה בין האלגוריתם הגנטי, לבין אלגוריתם reinforced learning כעת כשהבנו את הפרמטרים בהם שני האלגוריתמים עובדים בצורה הטובה ביותר, ניתן סוף סוף להשוות ביניהם כשהם בשיאם, ולהבין איזה אלגוריתם יותר "טוב", כלומר, מגיע לפתרון שמסיים את המשחק בזמן הכי מהיר. לשם כך הרצנו את שני האלגוריתמים על אותו מחשב זה לאחר זה עם 15 כסף לקנית מגדלים לסירוגין 170 פעמים, עם מגבלת איטרציות מאוד גדולה - 6000 איטרציות לאלגוריתם הגנטי ו- 10000 איטרציות לאלגוריתם ה- RL. ציפינו ששני האלגוריתמים יפתרו את המשחק במספר האיטרציות הנ"ל, ולכן נוכל למדוד את הזמן הממוצע שלוקח להם לפתור את המשחק בצורה טובה. התוצאות שקיבלנו הן: האלגוריתם הגנטי פותר את המשחק ב- 39.8 שניות בממוצע. אלגוריתם ה- RL פותר את המשחק ב- 252 שניות בממוצע. כעת נציג, כפי שעשינו בבדיקות קודמות, גרפים של מספר ההרצות כפונקציה של מספר האיטרציות עד לסיום המשחק. מספר ההרצות עבור האלגוריתם הגנטי (יש לשים לב שהסקל של מספר האיטרציות לא אחידה, החל מ- 1000 עוברים לקפיצות של 100 במקום של 50): כמה איטרציות עד הסיום 19

מספר ההרצות עבור אלגוריתם ה- RL (יש לשים לב שהסקלה לא אחידה, החל מ- 3000 יש קפיצות של 500 בין פס לפס במקום של 100, והחל מ- 7000 קפיצות של 1000): כמה איטרציות עד הסיום ניתן לשים לב להבדל של ממש באופי הגרפים בין שני האלגוריתמים. באלגוריתם הגנטי נוצר גרף גאוסיאני בערך סביב ממוצע של 390 איטרציות, ואילו באלגוריתם ה- RL נוצר גרף פחות או יותר לינארי יורד (אם מתחשבים בכך שהחל מ- 3000 איטרציות הסקלה משתנה). עובדה זו מסבירה את היתרון הגדול של האלגוריתם הגנטי מעבר לכך שהוא עובד בממוצע יותר מהר האלגוריתם הגנטי הרבה יותר יציב. באלגוריתם הגנטי רק 7 הרצות היו "לא טובות" לקחו מעל לפי 2 יותר זמן מהממוצע, ואילו באלגוריתם ה- 31 RL מההרצות שלו לקחו יותר מפי 6 זמן מהממוצע (כולל 4 הרצות שלא סיימו את המשחק!). 20

8. מסקנות מדוע האלגוריתם הגנטי "טוב" יותר? ניתן לשער מדוע האלגוריתם הגנטי פועל טוב יותר במשחק זה הסיכוי שזיווג של שני פתרונות טובים יהיה גם הוא טוב הוא מאוד גבוה, מפני שבפתרונות טובים המגדלים ממוקמים במקומות טובים, והזיווג רק מסדר את סוגי המגדלים מחדש. כך האלגוריתם הגנטי מצליח להתגבר על מכשול המיקומים, ולבדוק סידורים רבים של סוגי מגדלים שונים, וכך לפתור את המשחק ביעילות גבוהה. לעומת זאת, אלגוריתם ה- RL לא מחבר בין פתרונות שונים, ואין לו יכולת לשנות סוג של מגדל ועדיין להבטיח לו מיקום טוב! לכן האלגוריתם צריך לפתור בו זמנית תמיד גם את בעיית המיקום של המגדלים וגם את בעיית הסידור שלהם זה לצד או לאחר זה וזו משימה משמעותית יותר קשה. 9. סיכום בפרוייקט זה עבדנו על שני חלקים שונים הקשורים זה בזה כתיבת חוקי המשחק ומימושו בצורה מהנה ויפה, ומימוש אלגוריתמים שיצליחו לפתור את המשחק בצורה טובה. ביצירת המשחק השתדלנו לעשות משחק שלא יהיה קל מדי, לא יהיה קשה מדי ויהיה מעניין ומהנה. בעבודה עם האלגוריתמים נחשפנו לעולם המרתק של התאמת מימוש של אלגוריתם לבעיה נתונה תוך שמירה על תכונותיו. בנוסף מכיוון שחלק מהאלגוריתמים שעבדנו איתם לא התאים בדיוק לסוג הבעיה נאלצנו לשנות אותם מעט. השתדלנו לעשות זאת תוך שינוי מינימלי של האלגוריתם בכדי לשמור על המשמעות התוכנית המקורית שלו. על מנת לבדוק את פרמטרי האלגוריתמים ייצרנו סט ניסויים אותם ניתחנו בעזרת תוכנה נוספת אותה כתבנו. בעזרת תוכנה זו ניסינו להפיק את כל הנתונים המשמעותיים מהניסויים. את הנתונים שהפקנו ניתחנו בעזרת מספר תוכנות דוגמת matlab ו excel וכך התכנו את הנתונים לכדי מידע משמעותי אותו הצגנו פה. בסך הכל בפרוייקט זה התנסינו קצת בשימוש באלגוריתמיקה והתאמתה למקרים אמיתיים מאוד נהנינו והפקנו המון. 10. קוד מקור כתבנו כ- 20 קבצים, המכילים גם את המשחק וגם את האלגוריתמים, והם מצורפים כפרויקט ב- eclipse. בעת הרצה (דרך הקובץ,(Tester.java המשחק כרגע יריץ את האלגוריתם הגנטי ויציג את הפתרון שהוא מגיע אליו, ואז יריץ את אלגוריתם ה- RL ויציג את הפתרון שהוא מגיע אליו. 21