פיתוח שחקני robocode באמצעות תכנות גנטי. הקדמה §משחקים...
Post on 20-Dec-2015
248 views
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