Genetic Algorithm (ขั้นตอนวิธีเชิงพันธุ์กรรม)
** เนื่องจากภาษาไทยมันยาวต่อไปจะเรียกย่อเป็น GA
GA เกิดขึ้นมาจาก
- ทฤษฎีวิวัฒนาการของ Charles Darwin มีรายละเอียดคราว ๆ ดังนี้ "การคัดเลือกสายพันธุ์ที่มีความเหมาะสม(Fitness) กับสภาพแวดล้อมจะมีโอกาสอยู่รอดได้มากและ มีโอกาสถ่ายทอดลักษณะทางพันธุกรรมไปสู่ลูกหลานรุ่นต่อไป ในขณะที่สายพันธุ์ที่ไม่เหมาะสมกับสภาพแวดล้อมจะมีโอกาสอยู่รอดได้น้อยและมีโอกาสสูญพันธุ์ไปในที่สุด "
GA ใช้ในการแก้ไขปัญหา Optimization, จัดตารางเวลาการผลิตที่มี Factor เยอะ ๆ, จัดตารางการเดินทาง (logistics), หรือคำตอบของ function อนุพันธ์ ต่าง ๆ ผ่านการวิวัฒนาการจนได้รับคำตอบที่ดีที่สุด (Finess)
- ทฤษฎีถ่ายทอดลักษณะทางพันธุกรรม Gregor Mendel คือ ลูกจะได้รับลักษณะเด่น ลักษณะด้อยจากพ่อและแม่ ผ่านการสืบพันธ์ โดยมีอัตราส่วนที่แน่นอน สามารถคำนวณได้ เป็นอัตราส่วน 4:1 ตามลำดับ
ขั้นตอนการทำงานของ GA
- ออกแบบ "รูปแบบคำตอบ" หรือ โครโมโซม โดยรูปแบบโครโมโซมส่วนใหญ่แล้วจะสร้างขึ้นมาในรูปของตัวเลขฐาน 2
- กำหนด โครโมโซม ใน รุ่นที่ 1, กำหนด "จำนวนรุ่นที่ต้องการสร้าง" , จำนวนของโครโมโซมที่ต้องการ ** ถ้าไม่ต้องการกำหนดจำนวนรุ่นที่ต้องการสร้าง อาจจะกำหนดเป็นเงื่อนไขของ ค่า Fitness Function ก็ได้
- ออกแบบ "Fitnesss Function" สำหรับใช้ในการทดสอบความแข็งแรงของ โครโมโซมแต่ละตัว function นี้จะเป็น function หลักที่จะใช้ตรวจสอบว่า โครโมโซมไหนแข็งแรงเพียงพอ ที่จะเป็น พ่อ และแม่พันธ์ุ สำหรับ รุ่นที่ 2
- ออกแบบวิธีการวิวัฒนาการ พร้อมทั้งกำหนดอัตราส่วนสำหรับวิธีการต่าง ๆ
- crossover การสืบพันธ์โดยผสมยีนส์ จากโคโมโซมของพ่อ และแม่ เพื่อสืบลักษณะเด่น
- Single - Point CrossOver คือ การนำยีสต์ ตัวที่เป็นหลักเลขคี่ของพ่อ มารวมกับหลักเลขคู่ของแม่ หรือสลับกันก็ได้ เพื่อให้ได้ โครโมโซมใหม่ (ลูก)
- Two - Point CrossOver คล้ายกับแบบ Single แต่ดึงมารวมกับทีละ 2 ยีนส์
- Uniform Crossover กำหนดรูปแบบการรวมกับเอง
- Reproduction เป็นการนำโครโมโซมของรุ่นก่อนหน้าที่มีค่า Fitness ที่ดี มาใช้ใน รุ่นต่อมา
- Mutation การสร้างโครโมโซมขึ้นมาโดยมีรูปแบบที่ไม่แน่นอน เช่น Random เป็นต้น
- ทำการคัดกรอง โครโมโซม รุ่นที่ 1 ผ่าน Fitness Function คัดกรองโดยการเรียงลำดับความแข็งแรง
- ทำการวิวัฒนาการของโครโมโซม รุ่นที่ 2 โดยใช้ พ่อ แม่ จากรุ่นที่ 1 เมื่อได้จำนวนครบตามที่ต้องการแล้ว ก็กลับไปทำตามข้อ 5 ใหม่
- เมื่อครบ "จำนวนรุ่นที่ต้องการสร้าง" แล้วก็แสดงผลลัพธ์ค่าคำตอบที่ดีที่สุด
โจทก์ตัวอย่าง
โรงงาน AAA มีเครื่องจักรทั้งหมด 4 เครื่อง แต่ละเครื่องมีกำลังการผลิต และระยะเวลาทำงานแตกต่างกัน รายละเอียดดังนี้
ชื่อเครื่องจักร | กำลังการผลิต | เวลาเปิดทำงาน ช.ม. | ค่าไฟฟ้า |
M-A | 2500 | 24 | 1500 |
M-B | 4000 | 12 | 2500 |
M-C | 5000 | 18 | 3000 |
M-D | 10000 | 24 | 10000 |
มีคำสั่งซื้อ ดังนี้
บริษัท | เวลารับสินค้าห่างจากวันปัจจุบัน (วัน) | จำนวน |
CA | 3 | 2000 |
CB | 5 | 30000 |
CC | 12 | 100000 |
CD | 8 | 50000 |
ออกแบบตารางการผลิต (ระยะเวลา 14 วัน) ที่มีต้นทุนค่าไฟฟ้าถูกที่สุด และส่งของได้ครบภายในวันเวลาที่กำหนด
- ออกแบบ โครโมโซมจากโจทก์ ตารางการผลิต 14 วัน นับจากปัจจุบัน
- กำหนดจำนวน ต่าง ๆ
- จำนวนโครโมโซม ในแต่ละรุ่น = 100
- .จำนวน Generation = 100 Gen
- ออกแบบ Fitness Function มีเงื่อนไข
- ต้องส่งสินค้าได้ัทันกำหนด อ่านข้อมูลจาก "ตารางคำสั่งซื้อ" โดย เทียบจำนวนที่ผลิตได้ในวันที่ต้องส่งสินค้า ว่าผลิตครบตามจำนวนนั้นหรือไม่ โดยกำหนดไว้กรณีแผนการผลิตที่ผลิตไม่่ทัน จะมีคะแนน FitnessScore = 0 ทันที
- คำนวน ค่าไฟฟ้าของ แผนการที่มีค่า FitnessScore !=0 แล้วเรียงลำดับจาก ใช้ไฟฟ้าน้อย > ใช้ไฟฟ้ามาก > โครโมโซมที่มีค่า FitnessScore = 0
- กำหนดรายละเอียดของการวิวัฒนาการ
- Re-production (30%) - นำโครโมโซม 30 อันดับแรกจาก ข้อ 3.2
- Crossover (60%) - นำโครโมโซมจากข้อ 4.1 มาเป็น พ่อ - แม่ พันธ์ุ
- single-point Crossover (25%)
- two-point Crossover (25%)
- uniform Crossover (10%)
- Mutation (10%) - Random ค่าโครโมโซมขึ้นมาให้ถูกต้องตามรูปแบบโครโมโซม
- นำโครโมโซมรุ่นที่ 1 ทั้งหมดมาผ่าน Fitness Function ตามข้อ 3
- ทำการวิวัฒนาการเพื่อสร้าง โครโมโซมรุ่นที่ 2 ตามข้อ 4
- กลับไปทำตามข้อ 5 ใหม่ จนกระทั้ง ครบจำนวน Gen ที่ต้องการ (100 gen)
No comments:
Post a Comment