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 עבור כל התמונות מדובר ברדיוס