robocode l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
פיתוח שחקני Robocode באמצעות תכנות גנטי PowerPoint Presentation
Download Presentation
פיתוח שחקני Robocode באמצעות תכנות גנטי

Loading in 2 Seconds...

play fullscreen
1 / 48

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


  • 206 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'פיתוח שחקני Robocode באמצעות תכנות גנטי' - yonah


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2
הקדמה

משחקים ומשחקי תכנות

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

Robocode

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

Robocode

slide5
הקדמה

Robocode

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

Robocode

slide7
הקדמה

הבחירה ב-Robocode

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

מחקרים קודמים

ג'ייקוב אייזנשטיין, MIT, אוק' 2003

  • נסיון לפיתוח רובוטים מנצחים באמצעות תכנות גנטי
    • יריבים פשוטים בלבד
    • תנאי סביבה מלאכותיים
slide9
הקדמה

מחקרים קודמים

ג'ייקוב אייזנשטיין, MIT, אוק' 2003

גנום לינארי המתאר גרף של רכיבי חישוב:

slide10
הקדמה

מחקרים קודמים

ג'ייקוב אייזנשטיין, MIT, אוק' 2003

  • השיג באופן חלקי את מטרותיו
    • מתקשים בסיטואציות לא דטרמיניסטיות
    • רובוטים מומחים
slide11
הקדמה

הגדרת המטרה

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

ייצוג הגנום

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

ייצוג הגנום

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

ייצוג הגנום - דוגמא

if greater

wall distance

50

+

neg

enemy bearing

random

wall bearing

robocode15

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())

robocode16
תכנות גנטי של תכנית Robocode

אופרטורים גנטיים - הכלאה

robocode17
תכנות גנטי של תכנית Robocode

אופרטורים גנטיים - מוטציה

robocode18
תכנות גנטי של תכנית Robocode

מדד ההתאמה

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

פרמטרים אבולוציוניים נוספים

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

חבילות התוכנה המשתתפות

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

מהלך הריצה האבולוציונית

get fitness

ECJ

GeeP

fitness

results

run battle

Robocode

robocode22
תכנות גנטי של תכנית Robocode

זמני ריצה

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

זמני ריצה ארוכים!

robocode23
תכנות גנטי של תכנית Robocode

זמני ריצה - המשך

  • לדוגמא:
      • משך סיבוב = 1.0-2.0 שניות
      • 3 סיבובים בקרב
      • 3 יריבים
      • 128 פרטים באוכלוסייה
      • 100 דורות
  • הפתרון: מודול מבוזר
      • מנהל קרבות מבוזר
      • שרתי קרבות

30 – 60שעות

slide24
התוצאות

מהלך המחקר

  • בוצעו כשמונים ריצות אבולוציוניות
slide25
התוצאות

מהלך המחקר

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

geep.mini.GPBotA 1.0

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

geep.mini.GPBotA 1.0

slide28
התוצאות

geep.mini.GPBotA 1.0

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

geep.mini.GPBotA 1.0

slide30
התוצאות

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));

}

slide31
התוצאות

נסיון שני: HaikuBots

  • מגבלה על מספר שורות הקוד
  • קוד שיוצר ב-GP = ‘Junk DNA’
  • רובוט Haiku אופייני:

while (true)

turnGunRight(INFINITY);

onScannedRobot() {

ahead(GP#1);

turnRight(GP#2);

turnGunRight(GP#3);

}

slide32
התוצאות

נסיון שני: HaikuBots

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

נסיון שני: HaikuBots

  • הרובוט הנבחר:geep.haiku.GPBotC 1.0
slide34
התוצאות

נסיון שני: HaikuBots

slide35
התוצאות

25.6.2005 : HaikuBots

slide36
התוצאות

נסיון שני: HaikuBots

  • GPBotC נגד PoetHaiku...
  • GPBotC נגד HaikuTrogdor...
slide37
מסקנות ודיון

מסקנות כלליות

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

1)אבולוציה של מדדי התאמה

מדד ראשון:ניקוד סופי

R014/Geep031_0061 נגד Aristocles

slide39
מסקנות ודיון

1)אבולוציה של מדדי התאמה

מדד ראשון:ניקוד סופי

R014/Geep031_0061 נגד Aristocles

מדד שני:ניקוד יחסי

slide40
מסקנות ודיון

1)אבולוציה של מדדי התאמה

מדד ראשון:ניקוד סופי

R014/Geep031_0061 נגד Aristocles

מדד שני:ניקוד יחסי

מדד שלישי: ניקוד יחסי מתוקן

slide41
מסקנות ודיון

2)ארכיטקטורה של שחקן

שחקן מוכלל

(שליטה מלאה)

vs.

אבולוציה בחלקים

(נהג, תותחן, ומפעיל מכ"מ)

  • ביצועי הפרטים בהתאם להגדרת מדד האיכות שלהם
  • ביצועי הפרטים במשחק אמיתי
slide42
מסקנות ודיון

3)אופי האבולוציה

לימוד נגד שחקנים קיימים

vs.

לימוד עצמי (self-play)

  • התמקצעות מול הכללה
  • שינוי מתמיד של הגדרת הבעייה
  • ביצועים בפועל
slide43
מה הלאה?

הצעות להמשך מחקר

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

הצעות להמשך מחקר

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

הצעות להמשך מחקר

  • החלפת המשחק בחדש!
slide46
מה הלאה?

RARS- Robot Auto Race Simulator

  • החלפת המשחק!
slide47
מה הלאה?

RARS- Robot Auto Race Simulator

  • החלפת המשחק!
slide48
מה הלאה?

RARS- Robot Auto Race Simulator

  • החלפת המשחק!