AI-For-Beginners/translations/th/lessons/6-Other/21-GeneticAlgorithms
localizeflow[bot] c55d809b23 chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:00:53 +00:00
..
Diophantine.ipynb 🌐 Update translations via Co-op Translator 2025-08-29 11:12:47 +00:00
Genetic.ipynb 🌐 Update translations via Co-op Translator 2025-08-29 11:12:47 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:00:53 +00:00

README.md

อัลกอริทึมเชิงพันธุกรรม

แบบทดสอบก่อนเรียน

อัลกอริทึมเชิงพันธุกรรม (Genetic Algorithms หรือ GA) มีพื้นฐานมาจาก แนวทางวิวัฒนาการ ใน AI ซึ่งใช้วิธีการวิวัฒนาการของประชากรเพื่อหาคำตอบที่เหมาะสมที่สุดสำหรับปัญหาที่กำหนดไว้ อัลกอริทึมนี้ถูกเสนอขึ้นในปี 1975 โดย John Henry Holland

อัลกอริทึมเชิงพันธุกรรมมีแนวคิดดังนี้:

  • คำตอบที่ถูกต้องสำหรับปัญหาสามารถแสดงเป็น ยีน
  • Crossover ช่วยให้เราสามารถรวมคำตอบสองคำตอบเข้าด้วยกันเพื่อสร้างคำตอบใหม่ที่ถูกต้อง
  • Selection ใช้เพื่อเลือกคำตอบที่เหมาะสมมากขึ้นโดยใช้ ฟังก์ชันความเหมาะสม (fitness function)
  • Mutation ถูกนำมาใช้เพื่อทำให้การปรับแต่งไม่เสถียรและช่วยให้หลุดออกจากค่าต่ำสุดในพื้นที่เฉพาะ

หากคุณต้องการสร้างอัลกอริทึมเชิงพันธุกรรม คุณต้องมีสิ่งต่อไปนี้:

  • หาวิธีการเข้ารหัสคำตอบของปัญหาโดยใช้ ยีน g∈Γ
  • ในเซตของยีน Γ คุณต้องกำหนด ฟังก์ชันความเหมาะสม fit: Γ→R โดยค่าฟังก์ชันที่น้อยกว่าจะหมายถึงคำตอบที่ดีกว่า
  • กำหนดกลไก Crossover เพื่อรวมยีนสองตัวเข้าด้วยกันเพื่อสร้างคำตอบใหม่ crossover: Γ2→Γ
  • กำหนดกลไก Mutation mutate: Γ→Γ

ในหลายกรณี กลไก crossover และ mutation เป็นอัลกอริทึมที่ค่อนข้างง่ายในการจัดการยีนที่เป็นลำดับตัวเลขหรือเวกเตอร์บิต

การนำอัลกอริทึมเชิงพันธุกรรมไปใช้จริงอาจแตกต่างกันไปในแต่ละกรณี แต่โครงสร้างโดยรวมมีดังนี้:

  1. เลือกประชากรเริ่มต้น G⊂Γ
  2. เลือกแบบสุ่มหนึ่งในกระบวนการที่จะดำเนินการในขั้นตอนนี้: crossover หรือ mutation
  3. Crossover:
    • เลือกยีนสองตัวแบบสุ่ม g1, g2 ∈ G
    • คำนวณ crossover g=crossover(g1,g2)
    • หาก fit(g)<fit(g1) หรือ fit(g)<fit(g2) - แทนที่ยีนที่เกี่ยวข้องในประชากรด้วย g
  4. Mutation - เลือกยีนแบบสุ่ม g∈G และแทนที่ด้วย mutate(g)
  5. ทำซ้ำตั้งแต่ขั้นตอนที่ 2 จนกว่าจะได้ค่าของ fit ที่เล็กพอ หรือจนกว่าจะถึงขีดจำกัดของจำนวนขั้นตอน

งานที่พบบ่อย

งานที่มักแก้ไขด้วยอัลกอริทึมเชิงพันธุกรรม ได้แก่:

  1. การปรับตารางเวลาให้เหมาะสม
  2. การจัดวางสิ่งของให้เหมาะสมที่สุด
  3. การตัดวัสดุให้เหมาะสมที่สุด
  4. การเร่งการค้นหาแบบครบถ้วน

✍️ แบบฝึกหัด: อัลกอริทึมเชิงพันธุกรรม

เรียนรู้เพิ่มเติมในโน้ตบุ๊กต่อไปนี้:

ไปที่ โน้ตบุ๊กนี้ เพื่อดูตัวอย่างสองตัวอย่างของการใช้อัลกอริทึมเชิงพันธุกรรม:

  1. การแบ่งสมบัติอย่างยุติธรรม
  2. ปัญหา 8 Queens

สรุป

อัลกอริทึมเชิงพันธุกรรมถูกใช้ในการแก้ปัญหาหลายประเภท รวมถึงปัญหาด้านโลจิสติกส์และการค้นหา สาขานี้ได้รับแรงบันดาลใจจากการวิจัยที่ผสมผสานหัวข้อในจิตวิทยาและวิทยาการคอมพิวเตอร์

🚀 ความท้าทาย

"อัลกอริทึมเชิงพันธุกรรมง่ายต่อการนำไปใช้ แต่พฤติกรรมของมันยากที่จะเข้าใจ" source ลองค้นคว้าเพื่อหาอัลกอริทึมเชิงพันธุกรรมที่ใช้แก้ปัญหา เช่น การแก้ปริศนา Sudoku และอธิบายวิธีการทำงานของมันในรูปแบบร่างหรือแผนภาพการไหล

แบบทดสอบหลังเรียน

ทบทวนและศึกษาด้วยตัวเอง

ดู วิดีโอที่ยอดเยี่ยมนี้ ที่พูดถึงวิธีที่คอมพิวเตอร์เรียนรู้การเล่นเกม Super Mario โดยใช้เครือข่ายประสาทที่ฝึกด้วยอัลกอริทึมเชิงพันธุกรรม เราจะเรียนรู้เพิ่มเติมเกี่ยวกับการที่คอมพิวเตอร์เรียนรู้การเล่นเกมแบบนี้ ในส่วนถัดไป

การบ้าน: สมการไดโอแฟนไทน์

เป้าหมายของคุณคือการแก้ สมการไดโอแฟนไทน์ - สมการที่มีรากเป็นจำนวนเต็ม ตัวอย่างเช่น พิจารณาสมการ a+2b+3c+4d=30 คุณต้องหาค่ารากที่เป็นจำนวนเต็มที่ทำให้สมการนี้เป็นจริง

การบ้านนี้ได้รับแรงบันดาลใจจาก โพสต์นี้

คำแนะนำ:

  1. คุณสามารถพิจารณารากให้อยู่ในช่วง [0;30]
  2. ใช้รายการค่ารากเป็นยีน

ใช้ Diophantine.ipynb เป็นจุดเริ่มต้น