# กลยุทธ์เชิงวิวัฒนาการ
ประวัติ 
กลยุทธ์เชิงวิวัฒนาการถูกพัฒนาขึ้นมาโดย อิงโก เรเชนเบิร์ค Ingo Rechenberg และ ฮานส์-พอลล์ ชเวอเฟลhttp://ls11-www.cs.uni-dortmund.de/people/schwefel/cvE.html 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) ซึ่งคือการนำเส้นสมมติพ่อ เส้นสมมติแม่มาหาค่าเฉลี่ยกัน โดยทำตัวต่อตัว เพื่อสร้างเส้นสมมติรุ่นลูกดังภาพ

center|thumb|300px| Gaussian Mutation
center|thumb|300px|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 แบบถูกใช้ ดังนี้

การสลับบางส่วนของเส้นทางการเดินทาง (Inversion aka Lin-2-Opt)
การแทรกเมืองลงไปในจุดอื่นของเส้นทางการเดินทาง (Insertion aka Or-Opt)
การแลกเปลี่ยนซึ่งกันและกันของเมือง 2 เมือง (Reciprocal exchange aka 2-Exchange)
การเลื่อนกลุ่มของเส้นทางการเดินทาง (Displacement aka Shifting)

ดังภาพตัวอย่าง

center|500px

การที่แต่ละกระบวนการกลายพันธุ์ถูกใช้กับส่วนใด ๆ ของเส้นทางการเดินทาง มันอาจจะเป็นไปได้ว่าความสัมพันธ์ระหว่างเหตุและผลอย่างรุนแรงอาจจะไม่เป็นจริง ฉะนั้นระยะทางระหว่างแต่ละเมืองกับเมืองใด ๆ ต้องถูกพิจารณาในทุก ๆ ครั้งที่ใช้กระบวนการกลายพันธุ์ ตัวอย่างเช่น ในการทำการสลับบางส่วนของเส้นทางการเดินทาง เฉพาะบางส่วนของเส้นทางการเดินทางระหว่างเมืองที่ติดกันเท่านั่นที่ถูกสลับ ยิ่งไปกว่านั้นกระบวนการกลายพันธุ์มีการกำหนดการรวมตัวใหม่ที่เฉพาะ เจาะจงด้วย ทำให้กระบวนการรวมตัวใหม่ในปัญหานี้แตกต่างจากการรวมตัวใหม่ของกลยุทธ์เชิงวิวัฒนาการทั่ว ๆ ไป เพราะเราต้องพิจารณาว่าการรวมตัวใหม่ต้องให้ผลลัพธ์ของเส้นทางการเดินทางที่สามารถเป็นคำตอบได้เท่านั้น ดังนั้นกระบวนการกลายพันธุ์นี้ไม่ได้มีลักษณะแบบสุ่ม แต่มีลักษณะที่กำหนดไว้แล้ว
พ่อแม่ 1 ตัวจาก R ตัวที่จะนำไปรวมตัวใหม่ถูกเลือกจากพ่อแม่เริ่มต้นแบบสุ่ม ในเส้นทางการเดินทางของพ่อแม่เริ่มต้นนี้จะมี 1 เมืองถูกเลือกขึ้นมาแบบสุ่มและถูกกำหนดเป็นเมืองแรกในเส้นทางการเดินทางของตัวลูกหลาน (สมมติเรียกว่าเมือง A) สำหรับพ่อแม่แต่ละตัวใน R ตัว เมืองที่อยู่ติดซ้ายขวากับเมือง A จะถูกพิจารณา เมืองที่มีระยะทางที่ใกล้ที่สุดจะถูกเลือกจากความน่าจะเป็น 2*R และเมืองนั้นจะกลายเป็นเมืองที่ 2 ในเส้นทางการเดินทาง (เมือง B) และกระบวนการเดียวกันจะถูกกระทำกับเมืองที่อยู่ติดเมือง B เพื่อสร้างเมือง C และทำต่อไปเรื่อย ๆ จนจบการเดินทาง ถ้าในทุก ๆ ครั้งของการเลือกมีความน่าจะเป็นเท่ากับ 2*R เมืองที่มีระยะทางใกล้ที่สุดย่อมต้องถูกเลือกอย่างแน่นอน

สมการผลลัพธ์ของปัญหาการเดินทางของพนักงานขาย

 

di,(i+1) ระยะทางระหว่างเมืองที่ i และเมืองที่ i+1 ของการเดินทาง และ dn,1 คือ ระยะทางระหว่างเมืองแรกกับเมืองสุดท้ายของการเดินทาง