กลยุทธ์เชิงวิวัฒนาการ
บทความนี้ต้องการข้อความอธิบายความสำคัญที่กระชับ และสรุปเนื้อหาไว้ย่อหน้าแรกของบทความ |
ประวัติ
กลยุทธ์เชิงวิวัฒนาการถูกพัฒนาขึ้นมาโดย อิงโก เรเชนเบิร์ค Ingo Rechenberg และ ฮานส์-พอลล์ ชเวอเฟล Hans-Paul Schwefel ในช่วง 1970s ในตอนแรกนั้นกลยุทธ์เชิงวิวัฒนาการถูกพัฒนามาเพื่อ
แก้ปัญหาการออกแบบทางวิศวกรรม ในเรื่อง การหาค่าเหมาะสมของรูปร่างทางอากาศพลศาสตร์ (aerodynamic shape optimization)
ลักษณะและการหาคำตอบของกลยุทธ์เชิงวิวัฒนาการ
กลยุทธ์เชิงวิวัฒนาการมีลักษณะสำคัญดังนี้
- กลยุทธ์เชิงวิวัฒนาการมีการออกแบบตัวแปรจากการเขียนโปรแกรมจริงๆ เนื่องจากเป็นการออกแบบการวิวัฒนาการในระดับของลักษณะที่แสดงออก(Phenotype)ของแต่ละตัว
- กลยุทธ์เชิงวิวัฒนาการขึ้นอยู่กับการเลือกที่กำหนดได้และการกลายพันธุ์สำหรับการวิวัฒนาการ
- กลยุทธ์เชิงวิวัฒนาการใช้ตัวแปรเชิงกลยุทธ์
กลยุทธ์เชิงวิวัฒนาการนำหลักการของการวิวัฒนาการทางชีวภาพมาใช้ กล่าวคือ กระบวนกาคัดเลือกตามธรรมชาติ และกฎการอยู่รอดของผู้ที่เหมาะสมที่สุด (survival of the fittest) โดยในการทำซ้ำแต่ละครั้งจะมีการคัดเลือกเพื่อตัดคำตอบที่อ่อนแอกว่าออกไป และคำตอบที่เหลือที่มี ค่าความแข็งแรง (fitness value) สูงกว่าจะถูกนำไปทำให้แตกแล้วรวมตัวกับคำตอบอื่นๆ (recombine)
หรืออาจจะมีการเปลี่ยนแปลงค่าของคำตอบต่างๆเล็กน้อย (mutate) ทั้งการรวมตัวกับคำตอบอื่นและการเปลี่ยนแปลงค่าของคำตอบจะถูกทำไปเรื่อยๆ เพื่อสร้างคำตอบที่เหมาะสมระดับสากล (global optimization)ในกลยุทธ์เชิงวิวัฒนาการ ตัวแปรต่างๆจะถูกแทนในรูปแบบที่ มีความยาวคงที่ และ เป็นค่าจริง ในเส้นสมมติ (fixed-length real-valued vector) แต่ละตำแหน่งในเส้นสมมติจะสอดคล้องกับลักษณะของแต่ละตัวแปร
วิธีหลักในการผลิตลูกหลานของตัวแปรในกลยุทธ์เชิงวิวัฒนาการคือ การกลายพันธุ์ของเกาส์ (Gaussian Mutation) เป็นการบวกค่าสุ่มจากการกระจายของเกาส์ (Gaussian Distribution) เข้าไปในแต่ละสมาชิกของเส้นสมมติรุ่นพ่อแม่เพื่อให้ได้เส้นสมมติรุ่นลูกดังภาพ และอีกวิธีที่ถูกใช้คือ การแตกแล้วรวมตัวกันใหม่ของสารพันธุกรรมขั้นกลาง(Intermediate Recombination) ซึ่งคือการนำเส้นสมมติพ่อ เส้นสมมติแม่มาหาค่าเฉลี่ยกัน โดยทำตัวต่อตัว เพื่อสร้างเส้นสมมติรุ่นลูกดังภาพ
Gaussian Mutation
Intermediate Recombination
ในการเลือกของกลยุทธ์เชิงวิวัฒนาการนั้นมีข้อจำกัดน้อยกว่าขั้นตอนวิธีเชิงพันธุกรรม (Genetic -Algorithm) และการโปรแกรมเชิงพันธุกรรม (Genetic Programming) เพราะ ลักษณะของการแทนตัวแปรเป็นเส้นสมมตินั้นสามารถสามารถหาค่าเฉลี่ยเพื่อหาเส้นสมมติรุ่นลูกได้ง่าย โดยปกติ พ่อแม่ N ตัวจะลูกเลือกอย่างสุ่มแบบเท่าเทียมกัน ไม่ขึ้นอยู่กับค่าของพ่อแม่แต่ละตัว และลูกหลานมากกว่า N ตัวจะถูกผลิตจากการแตกแล้วรวมตัวกันใหม่ของสารพันธุกรรมพ่อแม่ แล้วจะมีการเลือกผู้รอดชีวิต N ตัวโดยมีวิธีในการเลือกที่ถูกกำหนดไว้ โดยผู้รอดชีวิตสามารถถูกเลือกได้จากลูกหลานที่ดีที่สุดN ตัว หรือ จะเลือกจากทั้งพ่อแม่และลูกหลานที่ดีที่สุด N ตัวก็ได้
รหัสเทียมของกลยุทธ์เชิงวิวัฒนาการ
Input: μ,λ,ProblemSize //จำนวนพ่อแม่,จำนวนลูก,ขนาดปัญหา Output: S[best] //คำตอบที่ดีที่สุดของปัญหา Population <= InitialPopulation(μ,ProblemSize) S[best] <= GetBest(Population,1) While(NotStopCondition()) children <= empty set for(i=0 to λ) //วนแก้ปัญหาตามจำนวนลูก Parent[i] <= GetParent(Population,i) S[i] <= empty set S[iProblem] <= Mutate(P[iProblem],P[iStrategy]) //เกิดการกลายพันธุ์ของปัญหา S[iStrategy] <= Mutate(P[iStrategy]) //เกิดการกลายพันธุ์ของกลยุทธ์ Children <= S[i] //ได้ลูกจากการกลายพันธุ์ของรุ่นพ่อแม่ EvaluatePopulation(Children) S[best] <= GetBest(Children+S[best],1) Population <= SelectBest(Population,Children,μ) return S[best] //ส่งค่าคำตอบที่ดีที่สุดออกไป
สัญกรณ์ของกลยุทธ์เชิงวิวัฒนาการ
สัญกรณ์ (1+1)-ES, (1+λ)-ES, (1,λ)-ES, (µ/p,λ)- บอกถึงลักษณะของกลยุทธ์เชิงวิวัฒนาการด้วยระดับของการเลียนแบบการวิวัฒนาการทางชีวภาพที่เพิ่มมากขึ้น µ บอกถึงจำนวนทั้งหมดของพ่อแม่
pบอกถึง จำนวนของพ่อแม่ที่จะถูกรวมตัวใหม่ และ λบอกถึงจำนวนลูกหลาน กระบวนการเลือกสรร จะเกิดกับลูกหลาน (เครื่องหมาย,) หรือเกิดกับทั้งรุ่นพ่อแม่และรุ่นลูกหลาน (เครื่องหมาย+)
ตัวอย่างปัญหาที่แก้ได้โดยกลยุทธ์เชิงวิวัฒนาการ
ปัญหาการเดินทางของพนักงานขาย (The Travelling Salesman Problem) พนักงานขายต้องการเดินทางไปยังเมือง N เมืองโดยให้มีระยะทางสั้นที่สุด และทุกๆเมืองต้องถูกเดินทางผ่านเพียงครั้งเดียว และในตอนจบของการเดินทางพนักงานขายต้องกลับมายังเมืองแรกที่เราออกเดินทาง โดยในตัวอย่างนี้จะเป็นปัญหาการเดินทางของพนักงานขายที่สมมาตร กล่าวคือ ระยะทางระหว่างเมือง 2 เมืองนั้นไม่ขึ้นอยู่กับทิศทาง
การแก้ปัญหาการเดินทางของพนักงานขายด้วยกลยุทธ์เชิงวิวัฒนาการ มันจำเป็นที่เราจะต้องมั่นใจว่า ความสัมพันธ์ระหว่างเหตุและผลอย่างรุนแรง (strong causality)นั้นเป็นจริง กล่าวคือ การเปลี่ยนแปลงเล็กน้อยในเส้นทางการเดินทางนั้นส่งผลกระทบเล็กน้อยต่อระยะทางในการเดินทาง กระบวนการกลายพันธุ์ 4 แบบถูกใช้ดังนี้
1. การสลับบางส่วนของเส้นทางการเดินทาง (Inversion aka Lin-2-Opt)
2. การแทรกเมืองลงไปในจุดอื่นของเส้นทางการเดินทาง (Insertion aka Or-Opt)
3. การแลกเปลี่ยนซึ่งกันและกันของเมือง 2 เมือง (Reciprocal exchange aka 2-Exchange)
4. การเลื่อนกลุ่มของเส้นทางการเดินทาง (Displacement aka Shifting)
ดังภาพตัวอย่าง
การที่แต่ละกระบวนการกลายพันธุ์ถูกใช้กับส่วนใดๆของเส้นทางการเดินทาง มันอาจจะเป็นไปได้ว่าความสัมพันธ์ระหว่างเหตุและผลอย่างรุนแรงอาจจะไม่เป็นจริง ฉะนั้นระยะทางระหว่างแต่ละเมืองกับเมืองใดๆต้องถูกพิจารณาในทุกๆครั้งที่ใช้กระบวนการกลายพันธุ์ ตัวอย่างเช่น ในการทำการสลับบางส่วนของเส้นทางการเดินทาง เฉพาะบางส่วนของเส้นทางการเดินทางระหว่างเมืองที่ติดกันเท่านั่นที่ถูกสลับ ยิ่งไปกว่านั้นกระบวนการกลายพันธุ์มีการกำหนดการรวมตัวใหม่ที่เฉพาะ เจาะจงด้วย ทำให้กระบวนการรวมตัวใหม่ในปัญหานี้แตกต่างจากการรวมตัวใหม่ของกลยุทธ์เชิงวิวัฒนาการทั่วๆไป เพราะเราต้องพิจารณาว่าการรวมตัวใหม่ต้องให้ผลลัพธ์ของเส้นทางการเดินทางที่สามารถเป็นคำตอบได้เท่านั้น ดังนั้นกระบวนการกลายพันธุ์นี้ไม่ได้มีลักษณะแบบสุ่ม แต่มีลักษณะที่กำหนดไว้แล้ว พ่อแม่ 1 ตัวจาก R ตัวที่จะนำไปรวมตัวใหม่ถูกเลือกจากพ่อแม่เริ่มต้นแบบสุ่ม ในเส้นทางการเดินทางของพ่อแม่เริ่มต้นนี้จะมี 1เมืองถูกเลือกขึ้นมาแบบสุ่มและถูกกำหนดเป็นเมืองแรกในเส้นทางการเดินทางของตัวลูกหลาน (สมมติเรียกว่าเมือง A) สำหรับพ่อแม่แต่ละตัวใน R ตัว เมืองที่อยู่ติดซ้ายขวากับเมือง A จะถูกพิจารณา เมืองที่มีระยะทางที่ใกล้ที่สุดจะถูกเลือกจากความน่าจะเป็น 2*R และเมืองนั้นจะกลายเป็นเมืองที่ 2 ในเส้นทางการเดินทาง (เมือง B) และกระบวนการเดียวกันจะถูกกระทำกับเมืองที่อยู่ติดเมือง B เพื่อสร้างเมือง C และทำต่อไปเรื่อยๆจนจบการเดินทาง ถ้าในทุกๆครั้งของการเลือกมีความน่าจะเป็นเท่ากับ 2*R เมืองที่มีระยะทางใกล้ที่สุดย่อมต้องถูกเลือกอย่างแน่นอน
สมการผลลัพธ์ของปัญหาการเดินทางของพนักงานขาย
di,(i+1) ระยะทางระหว่างเมืองที่ i และเมืองที่ i+1 ของการเดินทาง และ dn,1 คือ ระยะทางระหว่างเมืองแรกกับเมืองสุดท้ายของการเดินทาง
ดูเพิ่ม
Evolutionary Strategy book 2011-08-28 ที่ เวย์แบ็กแมชชีน
อ้างอิง
- http://www.bionik.tu-berlin.de/institut/xn2rechenb.html
- http://ls11-www.cs.uni-dortmund.de/people/schwefel/cvE.html
- . คลังข้อมูลเก่า เก็บจาก แหล่งเดิม เมื่อ 2011-09-14. สืบค้นเมื่อ 2011-09-29.
- http://www.bionik.tu-berlin.de/institut/xs2evost.html
- . คลังข้อมูลเก่า เก็บจาก แหล่งเดิม เมื่อ 2011-09-27. สืบค้นเมื่อ 2011-09-29.
แหล่งข้อมูลอื่น
- Evolutionary Strategies Paper
- The CMA Evolution Strategy 2012-03-03 ที่ เวย์แบ็กแมชชีน
- Tutorial 3: Build a Floating-Point Evolution Strategies Problem 2011-10-06 ที่ เวย์แบ็กแมชชีน