1 / 48

פיתוח שחקני Robocode באמצעות תכנות גנטי

פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה. משחקים ומשחקי תכנות. משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים התמודדות מול יריבים ממוחשבים משחקי תכנות (Programming Games) השחקן - אנושי או ממוחשב? מקרה מבחן מעניין Robocode. הקדמה. Robocode. רקע

yonah
Télécharger la présentation

פיתוח שחקני Robocode באמצעות תכנות גנטי

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. פיתוח שחקני Robocode באמצעותתכנות גנטי

  2. הקדמה משחקים ומשחקי תכנות • משחקים כמבחן לבינה מלאכותית • התמודדות מול שחקנים אנושיים • התמודדות מול יריבים ממוחשבים • משחקי תכנות (Programming Games) • השחקן - אנושי או ממוחשב? • מקרה מבחן מעניין • Robocode

  3. הקדמה Robocode • רקע • נכתב בשנת 2000, ע"י מתיו נלסון • אומץ ע"י חטיבת alphaWorks של IBM • אופי המשחק • מלחמת טנקים • סוגי קרבות • קטגוריות משקל

  4. הקדמה Robocode

  5. הקדמה Robocode • רקע • נכתב בשנת 2000, ע"י מתיו נלסון • אומץ ע"י חטיבת alphaWorks של IBM • אופי המשחק • מלחמת טנקים • סוגי קרבות: one on one, melee, specialties • קטגוריות משחק: גודל הקוד, מספר שורות הקוד • "שחקן" Robocode • תכנית Java • תכנות מונחה אירועים (Event Driven)

  6. הקדמה Robocode

  7. הקדמה הבחירה ב-Robocode • תכנות ב-Java • שפה מוכרת • נגישות לקוד • פופולריות • ריבוי יריבים ראויים • יכולת השוואה • יריבים ממוחשבים • מהירות הביצוע • כמעט ולא נחקר

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

  9. הקדמה מחקרים קודמים ג'ייקוב אייזנשטיין, MIT, אוק' 2003 גנום לינארי המתאר גרף של רכיבי חישוב:

  10. הקדמה מחקרים קודמים ג'ייקוב אייזנשטיין, MIT, אוק' 2003 • השיג באופן חלקי את מטרותיו • מתקשים בסיטואציות לא דטרמיניסטיות • רובוטים מומחים

  11. הקדמה הגדרת המטרה • ייצור "יריבים הולמים" לרובוטים הקיימים • רובוטים מורכבים • תנאי סביבה "מציאותיים" • הישגים בתחרויות מקוונות בינלאומיות • שיבוץ במקום גבוה במדרג הרובוטים

  12. תכנות גנטי של תכנית Robocode ייצוג הגנום • גנום "עצי" למימוש קטעי קוד • קטע קוד ראשי • טיפול באירועים מוגדרים • onScannedRobot • onHitWall • onHitRobot • שיבוץ הקוד • Move • TurnTank • TurnGun • TurnRadar • Fire

  13. תכנות גנטי של תכנית Robocode ייצוג הגנום • אוסף הצמתים והעלים בעץ • פונקציות מתמטיות: sin, abs, add, ... • קבועים מספריים: constant, random. • מדדי זמן אמת: enemyBearing, energy, ... • תרגום גנוטיפ לפנוטיפ • תרגום עץ לקוד lisp • תרגום מ-lisp ל-java • שיבוץ קטעי הקוד בתבנית מוכנה מראש • הידור ל-bytecodes (קבצי .class)

  14. תכנות גנטי של תכנית Robocode ייצוג הגנום - דוגמא if greater wall distance 50 + neg enemy bearing random wall bearing

  15. if greater wall distance 50 + neg enemy bearing random wall bearing תכנות גנטי של תכנית Robocode ייצוג הגנום - דוגמא (if_greater wall_distance 50 (+ enemy_bearing (random)) (neg wall_bearing))) public class GPBot extends Robot { … public void onScannedRobot() { turnGunRight(…); }} wallDistance() > 50 ? e.enemyBearing + Math.random()*2.0-1.0 : (0-wallBearing())

  16. תכנות גנטי של תכנית Robocode אופרטורים גנטיים - הכלאה

  17. תכנות גנטי של תכנית Robocode אופרטורים גנטיים - מוטציה

  18. תכנות גנטי של תכנית Robocode מדד ההתאמה • איכות הפרט בהתמודדות מול יריבים שונים: • יריבים מוגדרים מראש • Self-Learning • צורת הניקוד • ניקוד יחסי: • מידרוג (Rating) • לא דטרמיניסטי • השפעה רבה למספר הסיבובים בקרב

  19. תכנות גנטי של תכנית Robocode פרמטרים אבולוציוניים נוספים • סלקציה • טורניר בגודל קבוצה משתנה • אליטיזם • גודל האוכלוסייה • משך האבולוציה • גידול דור האפס • מגבלות על גודל הגנום

  20. תכנות גנטי של תכנית Robocode חבילות התוכנה המשתתפות • ECJ11 - סביבה להרצת תהליכים אבולוציוניים • סביבת ריצה יציבה • אופרטורים גנטיים מקובלים • ניהול ידע • Robocode - חבילת המשחק • geep package • הגדרת השפה לכתיבת הגנום • גישור בין ECJ לחבילת המשחק

  21. תכנות גנטי של תכנית Robocode מהלך הריצה האבולוציונית get fitness ECJ GeeP fitness results run battle Robocode

  22. תכנות גנטי של תכנית Robocode זמני ריצה • פרמטרים המשפיעים על זמני הריצה • משך הסיבוב • מספר הסיבובים בקרב • מספר היריבים • גודל האוכלוסייה • מספר הדורות זמני ריצה ארוכים!

  23. תכנות גנטי של תכנית Robocode זמני ריצה - המשך • לדוגמא: • משך סיבוב = 1.0-2.0 שניות • 3 סיבובים בקרב • 3 יריבים • 128 פרטים באוכלוסייה • 100 דורות • הפתרון: מודול מבוזר • מנהל קרבות מבוזר • שרתי קרבות 30 – 60שעות

  24. התוצאות מהלך המחקר • בוצעו כשמונים ריצות אבולוציוניות

  25. התוצאות מהלך המחקר • בוצעו כשמונים ריצות אבולוציוניות • וריאציות על הפרמטרים האבולציוניים • יריבים שונים • אופי היריבים: פשוטים, מתקדמים, לימוד עצמי • כמות היריבים: אחד, קבוצה, בחירה באקראי • קטגוריות משקל קוד שונות • תבניות קוד שונות • הרובוט המוצלח ביותר הוכנס לתחרות • geep.mini.GPBotA 1.0 • RoboRumble • miniBots

  26. התוצאות geep.mini.GPBotA 1.0 • מדד ההתאמה • שלושה יריבים מורכבים • pez.mini.Pugilist (מקום 1) • jam.mini.Raiko (מקום 3) • cf.mini.Chiva (מקום 6) • הניקוד היחסי הממוצע • גנום בן חמישה עצים • אוכלוסייה בת 128 פרטים • 274 דורות

  27. התוצאות geep.mini.GPBotA 1.0

  28. התוצאות geep.mini.GPBotA 1.0 • ביצועים נגד יריבים ספציפיים: • GPBotA נגד Chiva ... • GPBotA נגד Pugilist ... • מיקום בליגה המקוונת...

  29. התוצאות geep.mini.GPBotA 1.0

  30. התוצאות geep.mini.GPBotA 1.0 - מבט על הקוד onScannedRobot() { turnTank(ifGreater -0.6672535760653446 (cos (abs enemy_bearing)) (cos (ifPositive enemy_bearing (ifGreater (abs (add (add (neg enemy_velocity) enemy_bearing) (abs random))) (sub (abs (abs enemy_bearing)) (ifPositive (add (add enemy_bearing (abs enemy_bearing)) enemy_energy) enemy_bearing enemy_bearing)) (abs (abs enemy_bearing)) (ifPositive enemy_bearing enemy_distance (ifPositive (ifPositive enemy_bearing (add wall_distance enemy_heading) enemy_bearing) (add (cos (neg enemy_velocity)) enemy_bearing) (abs random)))) enemy_bearing)) (cos wall_bearing)); }

  31. התוצאות נסיון שני: HaikuBots • מגבלה על מספר שורות הקוד • קוד שיוצר ב-GP = ‘Junk DNA’ • רובוט Haiku אופייני: while (true) turnGunRight(INFINITY); onScannedRobot() { ahead(GP#1); turnRight(GP#2); turnGunRight(GP#3); }

  32. התוצאות נסיון שני: HaikuBots • חסכון בשורות בכתיבת HaikuBot: • חיבור המכ"מ לתותח • הכנסת פקודת fire כצומת בעץ • יתרונות בכתיבת HaikuBot: • אין מגבלה על גודל הקוד - שורות ארוכות • יריבים מוגבלים ביותר

  33. התוצאות נסיון שני: HaikuBots • הרובוט הנבחר:geep.haiku.GPBotC 1.0

  34. התוצאות נסיון שני: HaikuBots

  35. התוצאות 25.6.2005 : HaikuBots

  36. התוצאות נסיון שני: HaikuBots • GPBotC נגד PoetHaiku... • GPBotC נגד HaikuTrogdor...

  37. מסקנות ודיון מסקנות כלליות • תכנות גנטי מאפשר פתרון, גם אם חלקי • שחקנים שפותחו באמצעות תכנות גנטי: • מסוגלים לנצח יריבים מקבוצת הלימוד • מתקשים להכליל • חשיבות מרובה לבחירת הבעיה • MiniBots vs. HaikuBots

  38. מסקנות ודיון 1)אבולוציה של מדדי התאמה מדד ראשון:ניקוד סופי R014/Geep031_0061 נגד Aristocles

  39. מסקנות ודיון 1)אבולוציה של מדדי התאמה מדד ראשון:ניקוד סופי R014/Geep031_0061 נגד Aristocles מדד שני:ניקוד יחסי

  40. מסקנות ודיון 1)אבולוציה של מדדי התאמה מדד ראשון:ניקוד סופי R014/Geep031_0061 נגד Aristocles מדד שני:ניקוד יחסי מדד שלישי: ניקוד יחסי מתוקן

  41. מסקנות ודיון 2)ארכיטקטורה של שחקן שחקן מוכלל (שליטה מלאה) vs. אבולוציה בחלקים (נהג, תותחן, ומפעיל מכ"מ) • ביצועי הפרטים בהתאם להגדרת מדד האיכות שלהם • ביצועי הפרטים במשחק אמיתי

  42. מסקנות ודיון 3)אופי האבולוציה לימוד נגד שחקנים קיימים vs. לימוד עצמי (self-play) • התמקצעות מול הכללה • שינוי מתמיד של הגדרת הבעייה • ביצועים בפועל

  43. מה הלאה? הצעות להמשך מחקר • דרכים נוספות לפתרון הבעיה • לימוד עצמי עם אוכלוסייה התחלתית • ביזור ומודל האיים • שימוש בקו-אבולוציה • פיתוח גנטי של טכניקת בינה מלאכותית אחרת • Fuzzy logic • Neural networks • Decision trees

  44. מה הלאה? הצעות להמשך מחקר • דרכים נוספות לפתרון הבעיה • הגדרה מחדש של הבעיה • התמודדות בקטגוריה שונה (MegaBots) • קרבות מרובי משתתפים • Melee • Team play • פתרונות חלקיים של הבעיה: פיתוח מערכות ספציפיות

  45. מה הלאה? הצעות להמשך מחקר • החלפת המשחק בחדש!

  46. מה הלאה? RARS- Robot Auto Race Simulator • החלפת המשחק!

  47. מה הלאה? RARS- Robot Auto Race Simulator • החלפת המשחק!

  48. מה הלאה? RARS- Robot Auto Race Simulator • החלפת המשחק!

More Related