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

Post on 20-Dec-2015

244 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

הקדמההקדמה

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

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

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

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

•Robocode

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

הקדמההקדמה

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

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

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

סוגי קרבות•

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

RobocodeRobocode

הקדמההקדמה

RobocodeRobocode

הקדמההקדמה

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

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

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

RobocodeRobocode

הקדמההקדמה

RobocodeRobocode

הקדמההקדמה

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

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

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

כמעט ולא נחקר

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

הקדמההקדמה

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

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

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

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

הקדמההקדמה

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

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

הקדמההקדמה

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

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

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

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

הקדמההקדמה

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

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

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

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

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

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

קטע קוד ראשי•

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

–onScannedRobot–onHitWall–onHitRobot

שיבוץ הקוד•

–Move–TurnTank–TurnGun–TurnRadar–Fire

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

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

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

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

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

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

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

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

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

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

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

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

if greater

+

enemy bearing wall bearing

neg50wall distance

random

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

}

}

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

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

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

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

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

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

•Self-Learning

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

(Rating)מידרוג •

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

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

EP

P

SSSF

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

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

אליטיזם

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

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

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

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

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

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

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

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

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

ניהול ידע•

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

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

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

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

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

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

ECJ

GeeP

Robocode

get fitness

run

battl

e

resu

lts

fitness

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

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

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

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

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

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

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

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

30 – 60

שעות

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

274דורות

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

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

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

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

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

•GPBotA נגד Chiva...

•GPBotA נגד Pugilist...

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

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

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

geep.mini.GPBotA 1.0geep.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));

}

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

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

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

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

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

turnGunRight(INFINITY);

onScannedRobot() {

ahead(GP#1);

turnRight(GP#2);

turnGunRight(GP#3);

}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

25.6.200525.6.2005 : : HaikuBotsHaikuBots

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

•GPBotC נגד PoetHaiku...

•GPBotC נגד HaikuTrogdor...

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

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

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

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

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

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

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

•MiniBots vs. HaikuBots

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

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

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

R014/Geep031_0061 נגד Aristocles

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

PSF

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

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

R014/Geep031_0061 נגד Aristocles

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

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

PSF

EP

P

SSSF

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

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

R014/Geep031_0061 נגד Aristocles

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

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

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

PSF

EP

P

SSSF

EP

P

SSSF

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

שחקן מוכלל

(שליטה מלאה)

vs.

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

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

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

שלהם

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

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

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

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

vs.

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

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

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

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

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

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

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

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

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

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

–Fuzzy logic–Neural networks–Decision trees

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

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

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

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

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

–Melee–Team play

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

ספציפיות

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

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

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

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

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

!החלפת המשחק

RARS- Robot Auto Race SimulatorRARS- Robot Auto Race Simulator

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

!החלפת המשחק

RARS- Robot Auto Race SimulatorRARS- Robot Auto Race Simulator

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

!החלפת המשחק

RARS- Robot Auto Race SimulatorRARS- Robot Auto Race Simulator

top related