אפשר לעשות עם אלגוריתמים גנטיים המון דברים, אני אציג
פה גרסא מצומצמת קצת, של פתרון בעיית חיפוש.
אנו למעשה מנחשים פתרון ובודקים אותו. על סמך
תוצאות ניחושים קודמים אנו רוצים ניחוש נוסף, זאת גישה
של חיפוש היוריסטי.הבעיה באופן כללי:
אנו מחפשים איזה שהוא אוסף ביטים שמקיים תכונה כלשהיא
שאנו יכולים לבדוק בזריזות את נכונותה לגבי מידע ספציפי.
במקרה שלנו אנו מחפשים פרמוטציה של המספרים 1 עד N.
בשביל להפעיל אלגוריתם גנטי מהסוג עליו נדבר אנו צריכים:
1) יכולת להעריך עד כדי כמה ניחוש מסוים קרוב לפתרון הרצוי.
(פונקציית הערכה היוריסטית)
2) יכולות לקחת ניחוש ולשנות אותו קצת באופן פסדו-אקראי(מוטציה).
3) יכולת לקחת שני ניחושים, ולבנות מהם ניחוש חדש שיהיה דומה
ל"אבות" שלו.(הכלאה)
כאשר אני אומר "דומה" אני מתכוון דומה מבחינת הערך של הפונקציה
ההיוריסטית.
אנו נרצה שהפונקציה ההיוריסטית שלנו תתאפס עבור הפתרון, ותהיה
גדולה מאפס עבור מה שאיננו פתרון.
המוטיבציה:
בטבע אנו ראינו התפתחות אבולציונית, אנו ראינו יצורים עוברים
הכלאות ומוטציות אקראיות, החזקים שרדו, החלשים נשרו, ולאחר
מספר דורות אנו מוצאים יצורים מאוד מרשימים.
נרצה לחכות התנהגות זאת.
נתחיל עם מעגר גנים אקראי, זה הוא למעשה מאגר של ניחושים
של פתרונות עבור הבעיה לפננו. במקרה שלנו אוסף של M פרמוטציות
אקראיות.
וכעצ נסמלץ אבולוציה בדורות, בכל איטרציה אנו נבנה את הדור
החדש על סמך הדור הישן ונפתר ממנו. יש המון ווריאציות קטנות
לשיטה זאת אבל בגדול, אנו ממיינים את הדור הישן על סמך הפונקציה
ההיוריסטית שלנו. ואנו יוצרים דור חדש על סמך הכלאות של זוגות
מהדור הקודם בתוספת מוטציות אקראיות שקורות בהסתברות מסוימת.
אנו נרצה שמועמדים חזקים יהיו שותפים בהכלאות אפילו רבות,
ומועמדים חלשים יותר לא סביר שישתתפו בהכלאות.
אנו יכולים לעשות זאת ע"י הגרלה של אבות מהתפלגות שמוטת לכיוון
מסוים.
יש הרוצים לנהוג בשיטה הנקראת אליטיזם, בה החזק ביותר מכל דור
מועתק כמו שהוא לדור הבא, כך מובטח לנו שערך הפונקציה היהוריסטית על החזק ביותר היינו מונטוני לא עולה, וזה נחמד.
DRYICE