ในฐานรากแบบเปิดที่แยกส่วนของ EvoX กระบวนการวิวัฒนาการที่สมบูรณ์หนึ่งกระบวนการถูกแยกออกเป็น "บล็อก" สองชิ้นที่สับเปลี่ยนได้:โมดูลอัลกอริทึมตอบคำถามว่า "จะค้นหาอย่างไร"โมดูลปัญหาตอบคำถามว่า "จะประเมินอะไร สภาพแวดล้อมตอบสนองอย่างไร" ทั้งสองเชื่อมต่อกันผ่านชุดสัญญาอินเทอร์เฟซที่ชัดเจน ประกอบกันเป็นกระบวนการวิวัฒนาการที่นำกลับมาใช้ซ้ำได้ สับเปลี่ยนได้ และย้ายข้ามงานได้
โมดูลอัลกอริทึม:ห่อหุ้ม "จะค้นหาอย่างไร"
- การสร้างคำตอบตัวเลือกและการอัปเดตประชากร:ตรรกะวิวัฒนาการ เช่น การเริ่มต้น การกลายพันธุ์ การผสมข้าม การคัดเลือก และการรักษาตัวที่ดีเยี่ยม ถูกนำไปใช้อย่างเป็นเอกภาพโดยโมดูลอัลกอริทึม
- การควบคุมการค้นหา:จำนวนรอบการทำซ้ำ ขนาดประชากร การรีสตาร์ทและเกณฑ์การลู่เข้า การจัดตารางพารามิเตอร์ตัวดำเนินการ ล้วนเป็นการตัดสินใจของฝั่งอัลกอริทึม
- โมดูลอัลกอริทึมพึ่งพาเพียงสมมติฐานเชิงนามธรรมที่ว่า "คำตอบตัวเลือกจะได้รับการประเมิน" โดยไม่สนใจความหมายทางกายภาพและรูปแบบเฉพาะของฟังก์ชันเป้าหมาย
โมดูลปัญหา:นิยาม "จะประเมินอะไร สภาพแวดล้อมตอบสนองอย่างไร"
- เปลี่ยนคำตอบตัวเลือกให้เป็นผลตอบกลับที่เปรียบเทียบได้:ค่าของเป้าหมาย ค่าความเหมาะสม ปริมาณการละเมิดข้อจำกัด หรือผลลัพธ์ของการโต้ตอบกับสภาพแวดล้อมหนึ่งครั้ง
- ประกาศขอบเขตและข้อจำกัดของปัญหา:มิติของตัวแปร ช่วงค่าที่เป็นไปได้ กฎของบริเวณที่เป็นไปได้ เพื่อให้อัลกอริทึมรู้ว่าสามารถสร้างคำตอบตัวเลือกได้ที่ใด
- ให้การประเมินที่สอดคล้องกันต่อคำตอบตัวเลือกชุดเดียวกัน ทำให้สามารถเปรียบเทียบข้ามกันได้ระหว่างปัจเจกบุคคลที่แตกต่างกัน รุ่นที่แตกต่างกัน และอัลกอริทึมที่แตกต่างกัน
สัญญาอินเทอร์เฟซ:ชุดคำตอบตัวเลือก ⇄ ผลการประเมิน
โมดูลอัลกอริทึมส่งชุดคำตอบตัวเลือกไปยังโมดูลปัญหา;โมดูลปัญหาส่งคืนผลการประเมินที่มีโครงสร้าง(เวกเตอร์เป้าหมาย ปริมาณการละเมิดข้อจำกัด และข้อมูลวินิจฉัยเพิ่มเติมที่เป็นทางเลือก);โมดูลอัลกอริทึมจึงอัปเดตประชากรและผลักดันรุ่นถัดไป การไปกลับหนึ่งรอบของ "ส่ง—คืน" นี้ ก็ก่อให้เกิดวิวัฒนาการหนึ่งรุ่น
ประโยชน์ที่ได้จากการแยกส่วน
- ขยายได้อย่างอิสระ:การเพิ่มหรือสับเปลี่ยนอัลกอริทึมไม่กระทบนิยามของปัญหา;การแก้ไขหรือเพิ่มปัญหาใหม่ก็ไม่ต้องเขียนโมดูลอัลกอริทึมใหม่
- ประกอบกันได้:โมดูลปัญหาเดียวกันสามารถเชื่อมต่อกับอัลกอริทึมวิวัฒนาการที่แตกต่างกันได้ และโมดูลอัลกอริทึมเดียวกันก็สามารถสลับไปใช้โมดูลปัญหาที่แตกต่างกันได้
- ย้ายข้ามงานได้:ตราบใดที่สัญญาอินเทอร์เฟซมั่นคง อัลกอริทึมและปัญหาก็สามารถนำกลับมาใช้ซ้ำ สับเปลี่ยน และย้ายข้ามงานได้
เหตุใดจึงสำคัญเป็นพิเศษในบริบทของบทเรียนนี้:การ权衡หลายเป้าหมายกับผลตอบกลับที่มีต้นทุนสูง
บทเรียนนี้มุ่งเน้นปัญหาทางวิศวกรรมในโลกกายภาพจริง——เช่นการออกแบบปีกอากาศยานแบบซูเปอร์คริติคอลของ COMAC ปัญหาประเภทนี้มักมีลักษณะสามประการพร้อมกัน:เป้าหมายหลายประการที่ถ่วงดุลกัน (เช่น การเพิ่มแรงยกมักนำมาซึ่งแรงต้านที่เพิ่มขึ้นและเสถียรภาพที่ลดลง) ข้อจำกัดที่ซ้อนกันอยู่ (เช่น สัมประสิทธิ์แรงยกวิกฤตของการสั่นสะเทือน และความเค้นสูงสุดต้องไม่เกินค่าที่วัสดุยอมให้) และผลตอบกลับที่มีต้นทุนสูงและเบาบาง(การจำลองความแม่นยำสูงหนึ่งครั้งมีต้นทุนสูงมาก)การแบ่งโมดูลถือกำเนิดขึ้นเพื่อรับมือกับสามประการนี้โดยเฉพาะ
ในฝั่งโมดูลปัญหา หลายเป้าหมายและข้อจำกัดถูกแปลงเป็นผลการประเมินที่เปรียบเทียบได้อย่างเป็นเอกภาพ:เวกเตอร์เป้าหมาย描绘ตัวชี้วัดแต่ละรายการ ปริมาณการละเมิดข้อจำกัด描绘ระดับการล้ำเส้น เมื่อจำเป็นก็อาศัยโมเดลตัวแทนเพื่อให้การประเมินโดยประมาณด้วยต้นทุนที่ต่ำลง บรรเทาคอขวดของผลตอบกลับที่เกิดจากการจำลองความแม่นยำสูง ในฝั่งโมดูลอัลกอริทึม การค้นหาไม่มุ่งสู่การลู่เข้าไปยัง "คำตอบที่ดีที่สุด" เพียงหนึ่งเดียวตั้งแต่เนิ่น ๆ อีกต่อไป แต่จะดูแลชุดทางเลือกที่หลากหลายเพื่อให้ผู้เชี่ยวชาญทำการปรับแต่งตามความพึงพอใจและการ权衡ระหว่างแรงยก แรงต้าน และส่วนเผื่อความปลอดภัย
ดังนั้น สัญญา "ชุดคำตอบตัวเลือก ⇄ ผลการประเมิน" ไม่เพียงต้องรองรับค่าความเหมาะสมแบบสเกลาร์เดียว แต่ยังต้องรองรับเวกเตอร์เป้าหมายและปริมาณการละเมิดข้อจำกัด:การ权衡หลายเป้าหมายต้องการให้อัลกอริทึมสามารถเปรียบเทียบแบบไม่ถูกครอบงำได้ และการจัดการข้อจำกัดต้องการให้อัลกอริทึมสามารถแยกแยะระหว่างที่เป็นไปได้กับที่เป็นไปไม่ได้ได้ เมื่อสัญญาบกพร่อง ข้อมูลหลายเป้าหมายและข้อจำกัดจะสูญหายอย่างถาวรที่อินเทอร์เฟซ และความสามารถในการนำกลับมาใช้ซ้ำและย้ายข้ามงานที่ได้จากการแยกส่วนก็จะเสื่อมสลายไปด้วย
