วันนี้ผมบันทึกเสียงสั้นๆวิทยาศาสตร์ทั่วไปในรายการ Sci & Tech ที่วิทยุไทยพีบีเอสเรื่องการแก้ปัญหาโดยการวิวัฒนาการจำลองในคอมพิวเตอร์ เลยเอาสรุปและลิงก์ที่ผู้สนใจเข้าไปดูเพิ่มเติมมารวมไว้ที่นี่ครับ
สรุปคือ:
- การวิวัฒนาการ (Evolution) หรือเรียกอีกอย่างว่าการคัดเลือกพันธุ์โดยธรรมชาติ (Natural Selection) เป็นขบวนการสร้างสิ่งมีชีวิตแบบต่างๆบนโลก อธิบายความแตกต่างของสิ่งมีชีวิตแบบต่างๆว่าทำไมจึงมีหลายชนิด และทำไมสิ่งมีชีวิตต่างเป็นญาติกันเพราะเคยมีบรรพบุรุษร่วมกันในอดีต (ซึ่งอาจนานมากเป็นล้าน สิบล้าน ร้อยล้าน หรือพันล้านปีมาแล้ว)
- การวิวัฒนาการจะเกิดได้ด้วยขั้นตอนทั้งสี่นี้:
A. ลูกๆคล้ายๆพ่อแม่ (คือมีการสืบทอดพันธุกรรม)
B. ลูกๆไม่เหมือนกันหมดทุกตัว (คือมีความหลากหลายทางพันธุกรรม)
C. โอกาสรอดชีวิตและแพร่พันธุ์ของลูกแต่ละตัวไม่เท่ากัน ลูกที่สามารถสืบพันธุ์ได้ก็จะเป็นพ่อแม่ในรุ่นต่อไป (คือมีการคัดเลือกพันธุ์)
D. วนข้อ A, B, C หลายๆรอบ เป็นร้อยเป็นพัน…เป็นล้านรอบ
จะได้ผลลัพธ์เป็นสิ่งมีชีวิตหลากหลายที่เหมาะสมกับสภาพแวดล้อมที่มันอยู่ และหน้าตาของมันอาจจะแตกต่างไปจากหน้าตาต้นตระกูลมันมากมาย
(คำว่า พ่อ แม่ ลูก ด้านบน อาจไม่ใช่สิ่งมีชีวิตที่เราคุ้นเคยก็ได้ครับ จริงๆอะไรที่สามารถจำลองตัวเองแบบมีความหลากหลายได้ก็ใช้ขบวนการวิวัฒนาการได้ เช่นโปรแกรมคอมพิวเตอร์ไวรัส หรือไอเดียต่างๆในหัวคน เป็นต้น) - นอกจากธรรมชาติจะเป็นตัวคัดเลือกพันธุ์สิ่งมีชีวิตต่างๆแล้ว คนเราเองก็สามารถทำการคัดเลือกพันธุ์ได้ ยกตัวอย่างเช่นคนเราคัดเลือกพันธุ์พืชและสัตว์เพื่อใช้เป็นประโยชน์โดยเลือกตัวพ่อพันธุ์แม่พันธุ์ที่มีลักษณะที่ต้องการโดยหวังว่าเราจะมีโอกาสได้ลูกๆที่มีลักษณะที่เราต้องการมากขึ้น เมื่อรุ่นลูกโตขึ้นเราก็เลือกบางตัวเป็นพ่อพันธุ์แม่พันธุ์อีก เมื่อทำอย่างนี้หลายๆรอบเราก็จะได้สิ่งมีชีวิตอย่างที่เราต้องการ อาหารและสัตว์เลี้ยงต่างๆของมนุษย์ผ่านการคัดเลือกพันธุ์มานับร้อยนับพันปี
- มีนักวิทยาศาสตร์หลายทีมทดลองเลียนแบบขบวนการวิวัฒนาการนี้ในคอมพิวเตอร์ คือเมื่อจะแก้ปัญหาอะไร ก็ลองสร้างพันธุกรรมจำลองขึ้นมาหลายๆแบบ (เปรียบเสมือนสิ่งมีชีวิต) แล้วดูว่าพันธุกรรมแบบไหนแก้ปัญหาที่ต้องการได้ดีกว่า อันที่แก้ปัญหาได้ดีกว่าก็จะมีโอกาสแพร่พันธุ์มากกว่าแบบที่ไม่เก่งเท่า พอทำไปหลายๆรอบก็จะได้พันธุกรรมแบบที่แก้ปัญหาที่ต้องการได้ดี แล้วก็สามารถเอารูปแบบที่วิวัฒนาการได้มาผลิตใช้จริงๆ
- การทำแบบนี้ต้องใช้การคำนวณมากมาย แต่ก็เหมาะกับคอมพิวเตอร์สมัยใหม่ที่มีหน่วยคำนวณหลายๆหน่วยที่ทำงานพร้อมๆกันได้
- ตัวอย่างการแก้ปัญหาโดยวิธีนี้ก็เช่นการออกแบบใบพัดเรือ เสาอากาศ ส่วนผสมวิสกี้ ออกแบบเครือข่ายประสาทเทียมหุ่นยนต์ ออกแบบการเดินและเคลื่อนไหวของหุ่นยนต์ และที่น่าตื่นเต้นมากๆคือออกแบบหุ่นยนต์ขนาดเล็กที่ทำจากเซลล์มีชีวิต (xenobot)
ลิงก์ที่น่าสนใจ:
อธิบายเรื่องวิวัฒนาการเทียมในคอมพิวเตอร์:
หุ่นยนต์สร้างจากเซลล์กบ ออกแบบด้วยวิธีวิวัฒนาการในคอมพิวเตอร์ สามารถอ่านรายละเอียดเพิ่มเติมได้ที่ A scalable pipeline for designing reconfigurable organisms:
วิวัฒนาการหุ่นยนต์เดินสองขา:
ตัวอย่างโปรแกรมในภาษาไพธอน: Genetic Algorithm Implementation in Python