ฉันจะปรับปรุงอัลกอริทึมทางพันธุกรรมสำหรับ TSP ได้อย่างไร

นี่คืออัลกอริทึมทางพันธุกรรมของฉัน ทีละขั้นตอน:

  1. สร้างประชากรเริ่มต้นสองกลุ่มโดยการสุ่ม และเลือกทัวร์ที่เหมาะสมที่สุดจากทั้งสองกลุ่ม

  2. ดำเนินการครอสโอเวอร์ที่ได้รับคำสั่ง ซึ่งจะเลือกส่วนที่สุ่มของการทัวร์ครั้งแรกและเติมส่วนที่เหลือจากวินาทีตามลำดับ

  3. เปลี่ยนแปลงทัวร์นี้โดยการสุ่มสลับสองเมือง หากทัวร์นั้นดีกว่าทัวร์ 10% อันดับแรกเพียง 1.3 เท่าในประชากรเริ่มแรก (ซึ่งฉันเพิ่งทำโดยการปฐมนิเทศอย่างแท้จริง โดยแยกทัวร์ที่ไม่ดีที่ผลิตออกมา) - ฉันอยากจะ เปลี่ยนสิ่งนี้แต่ไม่สามารถคิดวิธีที่ดีกว่านี้ได้

    • The mutation is selected from a population of several mutations.
  4. ส่งคืนทัวร์ที่ผลิต

อย่างไรก็ตาม การกลายพันธุ์จะแย่กว่านั้นเกือบทุกครั้งหากไม่เหมือนกับครอสโอเวอร์

ฉันซาบซึ้งมากสำหรับความช่วยเหลือ ขอบคุณ!


person sam price    schedule 06.12.2017    source แหล่งที่มา
comment
อย่าทำครอสโอเวอร์ มันไม่จำเป็น.   -  person Ray    schedule 06.12.2017
comment
จริงๆ แล้วครอสโอเวอร์จะปรับปรุงตามที่เลือกจากประชากรเริ่มแรก (พ่อแม่) - แต่ไม่ได้สร้างทัวร์ที่ดีที่สุดเท่าที่จะเป็นไปได้   -  person sam price    schedule 06.12.2017
comment
ครอสโอเวอร์และการกลายพันธุ์ไม่ได้ทำให้ยีนดีขึ้น พวกมันสร้างยีนที่แตกต่างกัน การเลือกทำให้สิ่งต่างๆ ดีขึ้น และครอสโอเวอร์ก็เป็นภาวะแทรกซ้อนที่ไม่จำเป็น   -  person Ray    schedule 06.12.2017
comment
นั่นคือสิ่งที่ฉันก็เหมือนกัน แต่เอาครอสโอเวอร์และมิวเทชันออกไป และสิ่งที่คุณมีก็แค่ใช้กำลังดุร้าย ฉันจำเป็นต้องออกแบบอัลกอริธึมทางพันธุกรรม   -  person sam price    schedule 06.12.2017
comment
คุณยังคงทำการกลายพันธุ์ สุ่มเลือกยีนอันดับต้นๆ และกลายพันธุ์ มันไม่ใช่การใช้กำลังดุร้าย มันเป็นการสุ่ม และมันเป็นพันธุกรรมเพราะยีนกลายพันธุ์ของคุณ   -  person Ray    schedule 07.12.2017
comment
คุณกำลังบอกว่าอัลกอริธึมของคุณคือการบังคับเดรัจฉานเป็นวิธีแก้ปัญหาที่เหมาะสม จากนั้นสุ่มกลายพันธุ์และหวังว่ามันจะดีขึ้นใช่ไหม ฉันไม่เห็นว่าสิ่งนี้จะทำงานได้ดีเพียงใด ฉันขอขอบคุณความคิดเห็นแม้ว่า   -  person sam price    schedule 07.12.2017
comment
คุณไม่หวังว่ามันจะดีขึ้น คุณเลือกสิ่งที่ดีที่สุดที่จะกลายพันธุ์ การเลือกเป็นส่วนที่สำคัญที่สุด นั่นคือวิธีการทำงานของวิวัฒนาการ และอีกครั้ง เช่นเดียวกับวิวัฒนาการตามธรรมชาติ ครอสโอเวอร์เป็นทางเลือก   -  person Ray    schedule 08.12.2017
comment
ฉันรู้ว่าคุณเลือกสิ่งที่ดีที่สุดที่จะกลายพันธุ์ แต่ถ้าคุณกลายพันธุ์สิ่งที่ดีที่สุดในแบบที่ฉันมี ซึ่งก็คือการสุ่มสลับเมือง คุณก็จะได้รับวิธีแก้ปัญหาที่แย่กว่าเสมอ ฉันยังไม่เข้าใจว่าเหตุใดคุณจึงใช้วิธีแก้ปัญหาที่ดี แล้วจึงทำหน้าที่ที่มีแนวโน้มจะทำให้วิธีแก้ปัญหาแย่ลง   -  person sam price    schedule 08.12.2017
comment
การกลายพันธุ์ไม่ใช่วิธีแก้ปัญหาที่แย่กว่าเสมอไป ขอย้ำอีกครั้งว่าครอสโอเวอร์ไม่ได้สร้างวิธีแก้ปัญหาที่ดีกว่า แต่ยังสร้างวิธีแก้ปัญหาที่แย่กว่าเช่นเดียวกับการกลายพันธุ์   -  person Ray    schedule 08.12.2017
comment
นอกจากนี้ อัลกอริธึมทางพันธุกรรมอื่นๆ ที่แก้ช้อนชา เพียงแค่ใช้การกลายพันธุ์ คุณสามารถค้นหาได้บน YouTube   -  person Ray    schedule 08.12.2017


คำตอบ (1)


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

เหตุใดคุณจึงใช้วิธีแก้ปัญหาที่ดี แล้วจึงทำหน้าที่ที่มีแนวโน้มจะทำให้เป็นวิธีแก้ปัญหาที่แย่ลง

เหตุผลก็คือคุณต้องการโอกาสให้ทางแก้ไขถอยกลับไป มันอาจจะต้องแย่ลงก่อนที่จะดีขึ้น จริงๆ แล้ว คุณควรลบตรรกะการตัดสินใดๆ ออกจากตัวดำเนินการทางพันธุกรรมของคุณ ปล่อยให้เป็นหน้าที่ของกระบวนการคัดเลือก

นอกจากนี้ ควรมองว่าครอสโอเวอร์และการกลายพันธุ์เป็น 2 วิธีที่แตกต่างกันในการสร้างความเป็นเด็ก คุณควรใช้วิธีใดวิธีหนึ่ง ในทางปฏิบัติ หมายความว่าคุณมีโอกาสเกิดการกลายพันธุ์ระหว่างพ่อแม่เลี้ยงเดี่ยวหรือลูกผสมระหว่างพ่อแม่ 2 คน โดยปกติโอกาสการกลายพันธุ์จะมีเพียง 5% โดยมีการใช้ครอสโอเวอร์เพื่อสร้างอีก 95%

ครอสโอเวอร์จะเก็บข้อมูลทางพันธุกรรมจากทั้งพ่อและแม่ (ลูกๆ เป็นภาพสะท้อน) ดังนั้นลูกคนหนึ่งจะแย่กว่าพ่อแม่และลูกอีกคนดีกว่า (หรือทั้งสองอย่างเหมือนกัน) ดังนั้นในแง่นี้กับครอสโอเวอร์ หากมีการเปลี่ยนแปลง คุณจะได้คนที่ดีขึ้นเสมอ

ในทางกลับกัน การกลายพันธุ์ไม่ได้รับประกันว่าจะมีบุคคลที่ดีขึ้น แต่ก็มีอยู่เพื่อจุดประสงค์ในการแนะนำข้อมูลใหม่ ซึ่งช่วยย้าย GA จากสถานการณ์สูงสุดในท้องถิ่น หากการกลายพันธุ์ล้มเหลวในการปรับปรุงแต่ละบุคคลและทำให้แย่ลง ก็มีโอกาสน้อยที่จะถูกเลือกสำหรับการเลี้ยงลูก (นั่นคือ คุณไม่จำเป็นต้องใช้ตรรกะนี้ในตัวดำเนินการการกลายพันธุ์)

คุณเลือกอันที่ดีที่สุดที่จะกลายพันธุ์

สิ่งนี้ไม่เป็นความจริงอย่างเคร่งครัด คนดีควรมีโอกาสถูกเลือกสูงกว่า ในที่นี้มีความแตกต่างเล็กน้อยที่บุคคล BAD อาจถูกเลือกให้เป็นผู้ปกครองด้วย อีกครั้งซึ่งจะช่วยลดโอกาสในการเข้าถึงโซลูชันสูงสุดในท้องถิ่น นอกจากนี้ยังหมายความว่าบุคคลที่ดีที่สุดในยุคหนึ่งอาจ (และบ่อยครั้ง) แย่ลงได้จริงๆ เพื่อแก้ปัญหานี้ เรามักจะใช้ 'ลัทธิอภิสิทธิ์' โดยที่บุคคลที่ดีที่สุดจะถูกคัดลอกไปยังรุ่นต่อไปเสมอ (ในขณะนั้น/อยู่ระหว่างการดำเนินการ)

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

person M. Mansell    schedule 16.01.2018