คลิปนี้เป็นการนำ Genetic Algorithm มาใช้ให้ไอเจ้าก้อน ๆ นี่มันกระโดดข้ามบอลได้
เจ้า Genetic Algo. มันคือวิธีการค้นหาคำตอบ(วิธีการ)ที่เหมาะสมที่สุด โดยมีรูปแบบการทำงานเหมือนกับการคัดเลือกหรือการวิวัฒนาการทางธรรมชาติ
เช่น สมมติว่า เราทำระบบการจัดตารางเวลา ซึ่งตอนแรกเราก็อาจจะจัดเวลาได้ไม่ดี ลองจัดไปเรื่อย ๆ ลองย้ายนู่นย้ายนี่ สลับนิด ขยับหน่อย (mutation, crossover) สุดท้ายก็จะได้ตารางเวลาที่จัดแล้วดีที่สุด
Genetic Algo ต้องทำยังไงบ้าง งง!
- Chromosome Encoding
- Initial population
- Fitness function
- Genetic Operator (Selection, Crossover, Mutation)
- Termination
Chromosome Encoding
มันคือการเอา Feature ต่าง ๆ ของคำตอบที่เป็นไปได้มาทำให้อยู่ในรูปแบบ Chromosome เช่น ปัญหาของการทำระบบการจัดตารางเวลา เราอาจจะใช้ Binary encoding เข้ามาช่วยครับ สมมติว่า 1 วัน มี 8 ชั่วโมง แล้วให้เลข ‘1’ แทน ‘ว่าง’ และ ‘0’ แทน ‘ไม่ว่าง’ ก็จะได้เป็น Chromosome ดังนี้
1111 0000 -> ว่างตอน 4 ชั่วโมงแรก ไม่ว่าง 4 ชั่วโมงหลัง
แปลว่ารูปแบบการ Encode ของเราคือ แต่ละ bit แทน แต่ละชั่วโมงตามลำดับ
Initial population
อันดับต่อมา เราก็จะทำการ กำหนดจำนวนประชากร (คำตอบ) ที่เราจะสร้างขึ้นมาตอนแรก (อาจจะด้วยการสุ่ม) แล้วก็ทำการสุ่ม Chromosome ขึ้นมาตามจำนวนนั้น
เช่นเราบอกว่าจะเริ่มจาก 5 Chromosome ก็จะได้
1100 0101
1001 0111
0000 1111
0101 1010
1110 1111
Fitness function
อันนี้สำคัญเลย มันคือ function ที่จะใช้ประเมินว่า Chromosome ไหนจะได้ไปต่อในรอบต่อไป ใครจะเป็นผู้ที่ได้รับการคัดเลือก เจ้านี่แหละเป็นเกณฑ์ในการตัดสิน ซึ่งก็จะแตกต่างไปตามแต่ละปัญหา
สมมติถ้าปัญหาอันนี้ผมบอกว่า อยากให้ ตอนเช้าว่าง ‘มากกว่า’ ตอนบ่าย และ ไม่ว่างติดกันห้ามเกิน 2 ชั่วโมง
เราก็จะเอาเกณฑ์ตรงนี้มาคิด อาจจะให้คะแนนเป็น 1,0 ธรรมดาว่าเข้าเงื่อนไขไหม หรืออาจจะมีวิธีการให้คะแนนในรูปแบบอื่น เช่น การให้ค่าความสำคัญ (weight) ของแต่ละเงื่อนไข มาช่วยจัดคะแนนก็ได้ครับ
Genetic Operator
เจ้านี่คือวิธีการในการปรับเปลี่ยนรูปแบบโครงสร้างของเจ้า Chromosome สำหรับรุ่นถัดไปครับ ซึ่งก็มีวิธีการอยู่หลายแบบ แบ่งเป็น 3 อันหลัก ๆ ครับ
- Selection
มันคือการเลือก Chromosome รุ่นถัดไปด้วยรูปแบบการเลือกสักอย่างนึง เช่น Ranking, Roulette Wheel, Elitist
ยกตัวอย่างเช่น เราอาจจะเลือกตัวที่คะแนน Fitness เยอะสุด 5 ตัวแรก ไปรอบถัดไป
2. Crossover
มันคือการนำ Chromosome 2 เส้น มาผสมกันให้เป็นค่าใหม่ ซึ่งก็อาจจะสุ่ม Chromosome บางคู่เข้ามาทำครับ เช่น
จะเห็นว่ามันก็จะเกิดเป็น Chromosome เส้นใหม่ขึ้นมาแบบนี้ สำหรับใช้ในรอบคัดเลือกรอบถัดไป
3. Mutation
มันคือการนำ Chromosome มา ‘ผ่าเหล่า’ หรือเปลี่ยนยีนส์ในนั้นสักอันนึงเพื่อให้เกิดความแตกต่างของ Chromosome รอบถัดไป ซึ่งก็อาจจะสุ่ม Chromosome บางเส้นเข้ามาทำครับ
แล้วมันก็จะทำวนอยู่แบบนี้แหละครับ
Initial population -> Evaluate (เอาเข้า Fitness) -> Selection -> Crossover -> Mutation -> วนกลับไปใหม่ ถ้ายังไม่ถึงจุดที่พอใจหรือ Termination Criteria
Termination
มันคือจุดที่เราพอใจแล้ว เช่น คะแนน Fitness เกินที่กำหนดแล้ว หรือคะแนน Fitness มันไม่มากไปกว่านี้แล้วเป็นจำนวน 10 รุ่น(Generation)
ตัวอย่าง Code
ตัวอย่างการนำไปใช้
คลิปนี้เค้านำ Genetic Algorithm มาสร้างตัวเอเลี่ยน ว่าแบบเอเลี่ยนที่มี ขนาด, สี, ความเร็ว, รูปแบบการเคลื่อนไหว แบบไหนที่เราไม่ฆ่ามัน หรือมันอยู่รอด
สุดยอดไหมล่ะครัช แบบนี้แล้วจะอดใจไว้ ไม่ค้นหาต่อได้ยังไง!! ไปค้นหาความมหัศจรรย์ของ Algorithm เหล่านี้กันเถอะครับ!
Credit: http://learnabouttravelmaps.info/pics/g/genetic-algorithm.html