摘 要:為了有效解決程序修復進化中搜索空間過大和正常功能犧牲的問題,提出了一種基于不變量約束的擴展的程序修復進化模型(extended repair evolutionary model,EREM),利用程序不變量約束對搜索空間進行劃分和約簡以降低消耗,通過使用表達程序正常功能的正測試用例學習的不變量約束(稱為正不變量約束)來保證程序不犧牲正常的功能,在適應度函數的設計上考慮測試用例通過數的同時也考慮了正不變量約束的保持數,對于破壞正不變量約束的個體適應度給予一定的懲罰值。最后通過實驗對模型進行了驗證,結果表明了模型的可行性和有效性。