Transcript Document
פרוייקט מסכם
Game of life
ואוטומטים תאיים
דותן אשכנזי
מטרות הפרוייקט?
•
•
•
•
כתיבת קוד ארוך
עבודה עם ממשק ייצוג גרפי GUI
בנייה של סימולציות מחשב והדגמה שלהן
העשרת הידע האישי שלי ושלכם
סימולציה (או הדמיה) היא חיקוי של מציאות מורכבת באמצעות
מודל מתאים .מטרת הסימולציה הינה לייצג מאפיינים מסוימים
בהתנהגותה של מערכת ,למטרות שונות.
נושא הפרוייקט :לימוד והבנה של 'משחק החיים' ,כדוגמה
לסימולציה בעזרת מחשב.
2
מהו אוטומט תאי?
• אוטומט תאי הוא אוסף של יחידות קטנות על לוח(תאים),
אשר התנהגותן נקבעת על ידי כללים פשוטים ,ומושפעת
ממצב השכנים של יחידות אלו.
3
''Game of life
• 'משחק החיים' הוא מקרה פרטי של אוטומטים תאיים.
• משחק החיים הנו משחק לשחקן יחיד ,שהומצא בשנת
1970על ידי המתמטיקאי הבריטי ג'ון הורטון קונווי.
לרוב ,ניתן להגדיר משחק זה כ"משחק לאפס שחקנים",
כיוון שלרוב ההחלטה היחידה שהשחקן צריך לקבל היא
מה המצב ההתחלתי של המשחק ,ולאחר מכן המשחק
ממשיך ללא תלות בהחלטות השחקן.
המשחק מתבצע בדרך־כלל באמצעות מחשב ,אך ניתן
לשחק בו גם ידנית ,באמצעות כלי כתיבה ונייר משבצות.
4
אופן ביצוע המשחק
• המשחק מתחיל בטבלה ריקה
• השחקן צובע חלק מן
המשבצות כדי להגיע לתצורה
התחלתית ,או שהמחשב בוחר תאים באופן כלשהו
(למשל אקראי) .על המשבצות הצבועות נאמר כי
הן מייצגות יצורים חיים חברותיים.
לכל יצור יכולים להיות עד 8שכנים.
5
• היצורים מתקדמים לשלב הבא ,לפי הכללים הבאים:
כל יצור שיש לו שכן 1או שאין לו שכנים כלל ,מתמבדידות.
כל יצור שיש לו יותר מ 3-שכנים מת מצפיפות. כל משבצת ריקה שיש לה בדיוק 3שכנים קמה לתחייה. כל יצור שיש לו 2או 3שכנים לא משתנה (עד לתורהבא).
6
7
דוגמאות
8
9
Blinker
10
Glider
11
12
המשחק נגמר כאשר האוכלוסייה יכולה:
להיכחד כולה להגיע למצב שיווי משקל:• צורות קבועות סטטיות.
• רצף צורות מחזוריות (באנגלית ()oscillatorכדוגמת ה)"Blinker"-
עדיין לא הוכחה ההשערה שהמשחק יכול גם להמשיך עד איןסוף מבלי להפסיק להשתנות או ליצור צורות באופן אקראי.
13
סופיות-דוגמאות לצורות מחזוריות אין
The Clock
The Star
The
French
Kiss
14
The Galaxy
מתמטיקאים רבים חקרו את חוקי המשחק בניסיון למצוא חוקיות
בצורות מסוימות ומחזורי חיים מעניינים ,אחד מהם היה ביל
גוספר שהמציא בשנת 1970את ,Gosper glider gunמדובר
בצורה שחוזרת על עצמה ותוך כדי היא יוצרת צורות מסוג
" "Gliderומשגרת אותם לכיוון מסוים.
הוכח שצורה זו היא אין-סופית והיה מדובר בצורה הראשונה
שיוצרת צורות נעות אחרות ,עד היום צורה זו היא הצורה הקטנה
ביותר שהצליחו למצוא שעושה פעולה מסוג זה.
קונווי טען שלא ניתן ליצור צורה עם מספר תאים מוגבל שתיצור
מספר תאים בלתי מוגבל ,אין-סופי ,והוא הציע פרס בשווי של
$50למי שיוכיח אחרת ,גוספר שמע על כך וזה מה שהניע אותו
לחקור את המשחק ,גוספר המשיך לחקור את המשחק גם לאחר
שאסף את הפרס והוא פיתח אותו מאוד.
15
16
צורה דומה שיוצרת מלא Gosper glider gun
17
מראה רציף כולל של המשחק
18
אז למה זה בכלל טוב לנו?
-
ניתן להשתמש ברעיון של המשחק ולהתאים את החוקים
שלו לדברים מסוימים שאנו רוצים לחזות את התפתחותם,
למשל אם נשנה את החוקים כמו שצריך נוכל "להלביש"
את המשחק על דברים כמו:
חיזוי התפתחות שריפות ביער(תא מסומן מייצג עץ שרוף)
חיזוי צמיחה של פרדסים ושדות(תא מסומן מייצג גידולים)
חיזוי תהליך מדבור(תא מסומן מייצג מדבר)
חיזוי התפתחות בקטריות בצלחת פטרי ,או כל צורת חיים
אחרת (תא מסומן מייצג תא חי)
19
איך מתאימים את המשחק למטרות
השונות?
• שינוי תנאי בדידות /צפיפות /לידה
• בדיקה של חלק מהשכנים(רק שכנים מצד ימין
ומלמטה ,וכו)...
• שינוי ברדיוס הבדיקה -במקום לבדוק תא אחד
מכל כיוון נבדוק יותר תאים מכל כיוון ,כך התא
יהיה תלוי יותר בסביבתו.
20
• נתינת משקל לכל תא – לכל תא יהיה משקל כלשהו
וכל תא ישפיע בצורה שונה על התא הנבדק בהתאם
למשקלו.
0
0
0.3
0
0
0
0
1.5
0
0
0.3
1.5
1.5
0.3
0
0
1.5
0
0
0
0
0.3
0
0
21
הופעת כתמים ופסים אצל בעלי חיים
• בשנים 1952-1954גילה אלן טיורינג ( )Turingתבנית המגיבה
ל"תומכים-דוחים" ,חלק מסביבה של איבר מסוים תתמוך בשינוי
ותקדם אותו בעוד שחלק אחר מסביבת האיבר ידחה אותו ויאט את
התפתחותו.
• דוגמה טובה לתבנית אותה גילה דיוויד יאנג נמצאת ביצירה של
כתמים ופסים אצל בעלי חיים ,לכל בעל חיים יש כתמים התחלתיים
בהתאם לגנים שלו וכל כתם כזה משחרר 2חומרים כימיים אל
סביבתו:
האחד "תומך" שנמצא בסביבה הקרובה (למשל ברדיוס )1משוםשהוא נספג מהר יותר בסביבה והוא פחות עמיד ,ואז ניתן לומר
שהיא מכילה מזרזי פיגמנטציה.
השני "דוחה" שמגיע עד הסביבה הקצת יותר רחוקה (למשלברדיוס )3משום שהוא יותר עמיד ונספג יותר לאט בגוף ,ואז ניתן
לומר שהיא מכילה מעכבי פיגמנטציה.
22
לכל סוג יש משקל (למשל 1.5למזרזים ו -0.3 -למעכבים) ,בחישוב
ההשפעה הכללית של הסביבה על תא נשווה את סכום משקלי התאים
"התומכים" לסכום משקלי התאים "הדוחים" ,הסכום הגדול יותר הוא
שיקבע את מצב התא.
23
שינוי במשקלי התאים ,בגודל הסביבות וצורתן יוצר
דוגמאות פרווה מגוונות.
אצל כל בעל חיים חוקי התבנית משתנים בהתאם לגנים
שלו ולכן לכל בעל חיים יש תבנית פרווה/עור שונה.
שינויים מסויימים יגרמו להופעת פסים ושינויים אחרים
יגרמו להופעת כתמים(כמו למשל בדיקת רדיוס גדולה יותר
מצידי התא או נתינת משקל גדול יותר לתאים שמעל
ומתחת לתא).
24
25
26
strips - פסים
spots - כתמים
27
שילוב של פסים וכתמים – spots and strips
28
הקוד והמשחק
29
חבילות הנחוצות למימוש הקוד
• – PILנותן למעבד יכולות עיבוד תמונה כמו גם
פתיחה ,שמירה ושינוי של תמונות.
• – Swampyמכילה בתוכה את Graphical ( GUI
,)User Interfaceממשק המסוגל לתקשר עם
האדם באמצעות ייצוג גרפי ולחיצות עכבר
ומקלדת.
30
שלד הקוד
יבוא החבילות הנדרשות – Import
מימוש פונקציות לתמונה – GUI Functions
מימוש חוקי משחק חייםGame Of Life Functions-
מימוש חוקים למודל טורינג Young/Turing model-
יצירת תבנית המשחק והתמונה – GUI packing
•
•
•
•
•
31
מקרא ערכים
•
•
•
•
•
•
•
•
' - '10מספר מחזורי חיים ולחיצה על liveלהצגת התמונה לאחר מספר זה
' - '%liveמספר בין 0ל 100שמהווה את ההסתברות ליצירת תא מסומן
ביצירה הראשונית של התמונה
' - 'height + widthגודל המטריצה
' - 'Radiusמקבל מספר כלשהו שיהווה את רדיוס הבדיקה של התאים,
כלומר מספר התאים שיבדקו מכל כיוון של התא הנבחר יהיה המספר שיוכנס
' - 'lonelinessבדידות ,אם מספר השכנים יהיה המספר שהוכנס ומטה התא
ימות
' - 'Densityצפיפות ,אם מספר השכנים יהיה המספר שהוכנס ומעלה התא
ימות
' - 'LowerBornמינימום טווח השכנים שיצרו תא חי
' - 'UpperBornמקסימום טווח השכנים שיצרו תא חי >> הערות לטווח:
המינימום והמקסימום נחשבים כחלק מהטווח ,במידה ורוצים לבדוק רק
מספר אחד של שכנים אפשר פשוט להכניס את אותו המספר בשני המשתנים.
32
מקרא כפתורים
כפתורי GUI
•
•
•
•
•
•
•
•
•
•
•
•
' – '...עיון
' – 'Saveשמור
' – 'Loadפתח/טען
' – 'Deleteמחק
' – 'B&Wהפוך תמונה לשחור ולבן
' – 'Rotateסובב תמונה
' – 'Quitצא
כפתורי משחק
' – 'Generationהתקדמות במחזור חיים בודד
' – 'Young Spots Modelשימוש בחוק של המודל של יאנג לצורך עשיית
כתמים
' – 'Young Strips Modelשימוש בחוק של המודל של יאנג לצורך עשיית
פסים
' – 'Liveהתקדמות של מספר מחזורי חיים ברצף לפי הערך שהוכנס
' – 'New Matrixיצירת סביבה חדשה
33
הדרכה לפני תחילת משחק
כמה עניינים טכניים לפני תחילת משחק:
• קוד המשחק רץ עם פייתון גרסה .2.7ולכן יהיה עליך להתקין קודם את זה
(אפשר על אותו מחשב שיש בו פייתון 3שאנחנו עובדים איתו בקורס .פשוט
תצטרך לפתוח את הגרסה המתאימה בכל פעם) .הנה הקישור:
http://www.python.org/ftp/python/2.7/python-2.7.msi
לאחר מכן יש להתקין שתי חבילות:
• - PILשהיא Python imaging libraryלטיפול בתמונות ,מהקישור הבא:
http://effbot.org/downloads/PIL-1.1.7.win32-py2.7.exe
• ו ,swampy -שהיא חבילה מאוד נוחה לטיפול בממשק גרפי ( ,)GUIלפי
ההנחיות בשקף 3במצגת הבאה(מתוך מבוא למדעי המחשב באונ' תל אביב):
http://www.cs.tau.ac.il/courses/pyProg/1213a/recitations/ta12.pdf
המצגת מסבירה גם איך להשתמש בממשק גרפי באמצעות החבילה הזו.
• אחרי כל זה ,עליך לפנות לקוד המשחק הנקרא Life-swampy-projectלפתוח
אותו באמצעות IDLEוללחוץ , F5כעת תיפתח לכם תבנית המשחק ותוכלו
להתחיל לשחק.
משחק מהנה!
34
קישורים מעניינים
יש, פינה שמאלית למעלה,'• סימולציה מעניינת של 'משחק החיים
:צורך בג'אוה
http://www.ibiblio.org/lifepatterns/
:• קישורים ממש מעניינים בנושא אוטומטים תאיים
http://classes.yale.edu/fractals/CA/welcome.html
המסביר את המודל שלReaction–diffusion system • הערך
:טיורינג בויקיפדיה
http://en.wikipedia.org/wiki/Reaction-diffusion_system
: בויקיפדיהPATTERN FORMATION • הערך
http://en.wikipedia.org/wiki/Pattern_formation
: בויקיפדיה המסביר על תבניות בטבעPatterns in nature • הערך
http://en.wikipedia.org/wiki/Patterns_in_nature
35
נספחים
• אתגר :נסה למצוא את החוקים בצורה הבאה:
רמז :הצורה קיימת בתיקיית הדוגמאות.
• "משחק החיים" נמצא גם באופנה ,בטוח ראיתם את הסמל
הבא לא רק על חולצות אלא גם על תיקים וכו' ,כעת אתם
יודעים את מקורו.
36
תמונות שמורות לתרגול מתיקיית הדוגמאות
Height+
Weight
Loneliness
Density
LowerBorn
UpperBorn
שם
10
1
4
3
3
smileyN10
10
1
4
3
3
smiley2N10
10
1
4
3
3
smiley3N10
50
1
4
3
3
gliderN50
200
1
4
3
3
sunSqrsN200
200
1
4
3
3
fleetingButer
flyN200
200
1
4
2
3
R-23-200
40
2
6
3
3
Swimer2633-40
37
1 עבור כל התמונות מדובר ברדיוס