在 EvoX 的開放解耦底座中,一條完整的演化流程被拆成兩塊可替換的「積木」:演算法模組回答「如何搜尋」,問題模組回答「評價什麼、環境如何回饋」。二者透過一組清晰的介面契約對接,組合出可重複使用、可替換、可遷移的演化流程。
演算法模組:封裝「如何搜尋」
- 候選解生成與族群更新:初始化、突變、交配、選擇、菁英保留等演化邏輯由演算法模組統一實現。
- 搜尋控制:迭代輪次、族群規模、重啟與收斂判據、算子參數調度,都屬於演算法端的決策。
- 演算法模組只依賴「候選解會被評價」這一抽象前提,不關心目標函數的物理含義與具體形式。
問題模組:定義「評價什麼、環境如何回饋」
- 把候選解變成可比較的回饋:目標值、適應度、限制條件違反量,或一次環境互動的結果。
- 宣告問題邊界與限制條件:變數維度、取值範圍、可行域規則,讓演算法知道可以在哪裡生成候選解。
- 對同一批候選解給出一致評價,使不同個體、不同代、不同演算法之間可以橫向比較。
介面契約:候選解批次 ⇄ 評價結果
演算法模組向問題模組提交一批候選解;問題模組返回結構化的評價結果(目標向量、限制條件違反量及可選的附加診斷資訊);演算法模組據此更新族群、推進下一代。這一次「提交—返回」的往復,就構成一代演化。
解耦帶來的收益
- 獨立擴充:新增或替換演算法不影響問題定義;修改或新增問題也不要求改寫演算法模組。
- 可組合:同一問題模組可接入不同演化演算法,同一演算法模組也可切換到不同問題模組。
- 可遷移:只要介面契約穩定,演算法與問題即可跨任務重複使用、替換與遷移。
為什麼在本課場景中尤其重要:多目標權衡與昂貴回饋
本課關注的是真實物理世界中的工程問題——例如商飛超臨界翼型設計。這類問題通常同時具備三個特徵:多個彼此牽制的目標(如提升升力往往帶來阻力增加、穩定性下降)、相互嵌套的限制條件(如臨界抖振升力係數、最大應力不得超過材料許用值),以及昂貴而稀疏的回饋(高精度模擬一次評估的代價很高)。模組劃分正是為應對這三點而生。
在問題模組一側,多目標與限制條件被統一折算成可比較的評價結果:目標向量刻畫各項指標,限制條件違反量刻畫越界程度,必要時借助代理模型以較低成本給出近似評估,緩解高精度模擬帶來的回饋瓶頸。在演算法模組一側,搜尋不再追求過早收斂到唯一的「最佳答案」,而是維護一組多樣化候選方案,讓專家在升力、阻力與安全餘量之間做偏好最佳化與取捨。
因此,「候選解批次 ⇄ 評價結果」的契約不僅要能承載單一純量適應度,還要能承載目標向量與限制條件違反量:多目標權衡要求演算法能夠做非支配比較,限制條件處理要求演算法能夠區分可行與不可行。契約一旦殘缺,多目標與限制條件資訊就會在介面處永久遺失,解耦所帶來的重複使用與遷移能力也隨之失效。
常見誤區
把目標函數、限制條件處理或問題特有的啟發式規則寫進演算法模組,或在問題模組裡實現選擇與族群更新。表面上看像是「少寫了一層」,實際上把兩側重新耦合:換問題要改演算法,換演算法要改問題,重複使用與遷移能力同時失效。
介面要「窄而全」
窄指欄位少而穩定——只傳候選解批次與評價結果兩類資訊;全指資訊不可殘缺——目標向量、限制條件違反量、變數邊界都要有。只返回單一純量適應度,會永久遺失限制條件資訊,使帶限制條件的問題難以被正確處理。
