פיתוח שחקני robocode באמצעות תכנות גנטי. הקדמה §משחקים...

48
ייייי ייייי ייייי יייייRobocode Robocode ייייייי ייייייי ייייי יייי ייייי יייי

Post on 20-Dec-2015

244 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

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

Page 2: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

הקדמההקדמה

משחקים כמבחן לבינה מלאכותיתהתמודדות מול שחקנים אנושיים•

התמודדות מול יריבים ממוחשבים•

משחקי תכנות(Programming Games)השחקן - אנושי או ממוחשב?•

מקרה מבחן מעניין•

•Robocode

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

Page 3: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

הקדמההקדמה

רקע, ע"י מתיו נלסון2000נכתב בשנת •

IBM של alphaWorksאומץ ע"י חטיבת •

אופי המשחקמלחמת טנקים•

סוגי קרבות•

קטגוריות משקל•

RobocodeRobocode

Page 4: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

הקדמההקדמה

RobocodeRobocode

Page 5: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

הקדמההקדמה

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

אופי המשחקמלחמת טנקים•one on one, melee, specialties סוגי קרבות: •קטגוריות משחק: גודל הקוד, מספר שורות הקוד•

"שחקן"RobocodeJavaתכנית •(Event Driven)תכנות מונחה אירועים •

RobocodeRobocode

Page 6: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

הקדמההקדמה

RobocodeRobocode

Page 7: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

הקדמההקדמה

-תכנות בJavaשפה מוכרת•נגישות לקוד•

פופולריותריבוי יריבים ראויים•יכולת השוואה•

יריבים ממוחשביםמהירות הביצוע•

כמעט ולא נחקר

RobocodeRobocodeהבחירה ב-הבחירה ב-

Page 8: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

הקדמההקדמה

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

תכנות גנטייריבים פשוטים בלבד•

תנאי סביבה מלאכותיים•

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

Page 9: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

הקדמההקדמה

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

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

Page 10: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

הקדמההקדמה

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

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

רובוטים מומחים•

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

Page 11: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

הקדמההקדמה

ייצור "יריבים הולמים" לרובוטים הקיימיםרובוטים מורכבים•

תנאי סביבה "מציאותיים"•

הישגים בתחרויות מקוונות בינלאומיותשיבוץ במקום גבוה במדרג הרובוטים•

הגדרת המטרההגדרת המטרה

Page 12: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

RobocodeRobocodeתכנות גנטי של תכנית תכנות גנטי של תכנית

קטעי קודקטעי קודגנום "עצי" למימוש

קטע קוד ראשי•

טיפול באירועים מוגדרים•

–onScannedRobot–onHitWall–onHitRobot

שיבוץ הקוד•

–Move–TurnTank–TurnGun–TurnRadar–Fire

ייצוג הגנוםייצוג הגנום

Page 13: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

RobocodeRobocodeתכנות גנטי של תכנית תכנות גנטי של תכנית

אוסף הצמתים והעלים בעץ, ...sin, abs, addפונקציות מתמטיות: •

.constant, randomקבועים מספריים: •

, ...enemyBearing, energyמדדי זמן אמת: •

תרגום גנוטיפ לפנוטיפlispתרגום עץ לקוד •

java ל-lispתרגום מ-•

שיבוץ קטעי הקוד בתבנית מוכנה מראש•

(class. )קבצי bytecodesהידור ל-•

ייצוג הגנוםייצוג הגנום

Page 14: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

RobocodeRobocodeתכנות גנטי של תכנית תכנות גנטי של תכנית

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

if greater

+

enemy bearing wall bearing

neg50wall distance

random

Page 15: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

RobocodeRobocodeתכנות גנטי של תכנית תכנות גנטי של תכנית

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

if greater

+

enemy bearing wall bearing

neg50wall distance

random

)if_greater wall_distance

50 )+ enemy_bearing

)random(( )neg

wall_bearing(((

wallDistance)( > 50 ?

e.enemyBearing +

Math.random)(*2.0-

1.0 : )0-wallBearing)((

public class GPBot

extends Robot {

public void

onScannedRobot() {

turnGunRight(…);

}

}

Page 16: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

RobocodeRobocodeתכנות גנטי של תכנית תכנות גנטי של תכנית

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

Page 17: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

RobocodeRobocodeתכנות גנטי של תכנית תכנות גנטי של תכנית

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

Page 18: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

RobocodeRobocodeתכנות גנטי של תכנית תכנות גנטי של תכנית

:איכות הפרט בהתמודדות מול יריבים שוניםיריבים מוגדרים מראש•

•Self-Learning

צורת הניקודניקוד יחסי:•

(Rating)מידרוג •

לא דטרמיניסטיהשפעה רבה למספר הסיבובים בקרב•

מדד ההתאמהמדד ההתאמה

EP

P

SSSF

Page 19: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

RobocodeRobocodeתכנות גנטי של תכנית תכנות גנטי של תכנית

סלקציהטורניר בגודל קבוצה משתנה•

אליטיזם

גודל האוכלוסייה

משך האבולוציה

גידול דור האפס

מגבלות על גודל הגנום

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

Page 20: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

RobocodeRobocodeתכנות גנטי של תכנית תכנות גנטי של תכנית

ECJ11 סביבה להרצת תהליכים -

אבולוציונייםסביבת ריצה יציבה•

אופרטורים גנטיים מקובלים•

ניהול ידע•

Robocodeחבילת המשחק -

geep packageהגדרת השפה לכתיבת הגנום•

לחבילת המשחקECJגישור בין •

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

Page 21: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

RobocodeRobocodeתכנות גנטי של תכנית תכנות גנטי של תכנית

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

ECJ

GeeP

Robocode

get fitness

run

battl

e

resu

lts

fitness

Page 22: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

RobocodeRobocodeתכנות גנטי של תכנית תכנות גנטי של תכנית

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

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

זמני ריצהזמני ריצה

Page 23: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

RobocodeRobocodeתכנות גנטי של תכנית תכנות גנטי של תכנית

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

הפתרון: מודול מבוזרמנהל קרבות מבוזר–שרתי קרבות–

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

30 – 60

שעות

Page 24: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

התוצאותהתוצאות

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

מהלך המחקרמהלך המחקר

Page 25: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

התוצאותהתוצאות

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

אופי היריבים: פשוטים, מתקדמים, לימוד עצמי–כמות היריבים: אחד, קבוצה, בחירה באקראי–

קטגוריות משקל קוד שונות•תבניות קוד שונות•

הרובוט המוצלח ביותר הוכנס לתחרות•geep.mini.GPBotA 1.0•RoboRumble•miniBots

מהלך המחקרמהלך המחקר

Page 26: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

התוצאותהתוצאות

מדד ההתאמהשלושה יריבים מורכבים•

–pez.mini.Pugilist (1)מקום–jam.mini.Raiko (3)מקום–cf.mini.Chiva (6)מקום

הניקוד היחסי הממוצע•

גנום בן חמישה עצים

פרטים128אוכלוסייה בת

274דורות

geep.mini.GPBotA 1.0geep.mini.GPBotA 1.0

Page 27: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

התוצאותהתוצאות

geep.mini.GPBotA 1.0geep.mini.GPBotA 1.0

Page 28: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

התוצאותהתוצאות

:ביצועים נגד יריבים ספציפיים

•GPBotA נגד Chiva...

•GPBotA נגד Pugilist...

...מיקום בליגה המקוונת

geep.mini.GPBotA 1.0geep.mini.GPBotA 1.0

Page 29: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

התוצאותהתוצאות

geep.mini.GPBotA 1.0geep.mini.GPBotA 1.0

Page 30: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

התוצאותהתוצאות

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

}

geep.mini.GPBotA 1.0geep.mini.GPBotA 1.0מבט על הקוד - מבט על הקוד -

Page 31: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

התוצאותהתוצאות

שורות הקודשורות הקודמגבלה על מספר

-קוד שיוצר בGP = ‘Junk DNA’

רובוטHaiku:אופייני while (true)

turnGunRight(INFINITY);

onScannedRobot() {

ahead(GP#1);

turnRight(GP#2);

turnGunRight(GP#3);

}

HaikuBotsHaikuBotsנסיון שני: נסיון שני:

Page 32: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

התוצאותהתוצאות

חסכון בשורות בכתיבתHaikuBot:

חיבור המכ"מ לתותח•

כצומת בעץfireהכנסת פקודת •

יתרונות בכתיבתHaikuBot:

אין מגבלה על גודל הקוד - שורות ארוכות•

יריבים מוגבלים ביותר•

HaikuBotsHaikuBotsנסיון שני: נסיון שני:

Page 33: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

התוצאותהתוצאות

:הרובוט הנבחר geep.haiku.GPBotC 1.0

HaikuBotsHaikuBotsנסיון שני: נסיון שני:

Page 34: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

התוצאותהתוצאות

HaikuBotsHaikuBotsנסיון שני: נסיון שני:

Page 35: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

התוצאותהתוצאות

25.6.200525.6.2005 : : HaikuBotsHaikuBots

Page 36: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

התוצאותהתוצאות

•GPBotC נגד PoetHaiku...

•GPBotC נגד HaikuTrogdor...

HaikuBotsHaikuBots נסיון שני:נסיון שני:

Page 37: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

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

תכנות גנטי מאפשר פתרון, גם אם חלקי

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

מסוגלים לנצח יריבים מקבוצת הלימוד•

מתקשים להכליל•

חשיבות מרובה לבחירת הבעיה

•MiniBots vs. HaikuBots

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

Page 38: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

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

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

R014/Geep031_0061 נגד Aristocles

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

PSF

Page 39: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

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

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

R014/Geep031_0061 נגד Aristocles

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

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

PSF

EP

P

SSSF

Page 40: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

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

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

R014/Geep031_0061 נגד Aristocles

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

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

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

PSF

EP

P

SSSF

EP

P

SSSF

Page 41: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

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

שחקן מוכלל

(שליטה מלאה)

vs.

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

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

ביצועי הפרטים בהתאם להגדרת מדד האיכות •

שלהם

ביצועי הפרטים במשחק אמיתי•

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

Page 42: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

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

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

vs.

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

התמקצעות מול הכללה•

שינוי מתמיד של הגדרת הבעייה•

ביצועים בפועל•

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

Page 43: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

מה הלאה?מה הלאה?

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

ביזור ומודל האיים•

שימוש בקו-אבולוציה•

פיתוח גנטי של טכניקת בינה מלאכותית אחרת•

–Fuzzy logic–Neural networks–Decision trees

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

Page 44: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

מה הלאה?מה הלאה?

דרכים נוספות לפתרון הבעיה

הגדרה מחדש של הבעיה(MegaBotsהתמודדות בקטגוריה שונה )•

קרבות מרובי משתתפים•

–Melee–Team play

פתרונות חלקיים של הבעיה: פיתוח מערכות •

ספציפיות

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

Page 45: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

מה הלאה?מה הלאה?

!החלפת המשחק בחדש

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

Page 46: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

מה הלאה?מה הלאה?

!החלפת המשחק

RARS- Robot Auto Race SimulatorRARS- Robot Auto Race Simulator

Page 47: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

מה הלאה?מה הלאה?

!החלפת המשחק

RARS- Robot Auto Race SimulatorRARS- Robot Auto Race Simulator

Page 48: פיתוח שחקני Robocode באמצעות תכנות גנטי. הקדמה §משחקים כמבחן לבינה מלאכותית התמודדות מול שחקנים אנושיים

מה הלאה?מה הלאה?

!החלפת המשחק

RARS- Robot Auto Race SimulatorRARS- Robot Auto Race Simulator