遺傳算法:從生物進化啟發到優化求解的啟發式算法
遺傳算法模擬自然選擇與遺傳機制,通過選擇、交叉、變異迭代優化,適用於複雜非線性、多模態優化問題。
核心生物學映射
| 生物學概念 | 算法對應 | 說明 |
| 種群 | Population | 候選解集合,每個個體為一解 |
| 個體 | Individual | 單一候選解(染色體) |
| 染色體 | Chromosome | 解的編碼表示(二進制/實數/排列) |
| 基因 | Gene | 染色體位置上的值 |
| 適應度 | Fitness | 目標函數值,優劣評價標準 |
| 選擇 | Selection | 高適應度個體繁殖機會大 |
| 交叉 | Crossover | 雙親基因交換產生子代 |
| 變異 | Mutation | 隨機微擾維持多樣性 |
算法流程
- 初始化:隨機生成初始種群
- 評價:計算每個體適應度
- 選擇:輪盤賭/錦標賽/排序選擇
- 交叉:按概率
Pc 進行單點/多點/均勻交叉
- 變異:按概率
Pm 隨機翻轉基因
- 替換:精英保留/代際替換
- 終止判斷:達到代數/收斂/時間限制
- 輸出最優解
關鍵參數
- 種群大小:50-500,問題複雜度相關
- 交叉概率
Pc:0.6-0.9
- 變異概率
Pm:0.001-0.1
- 終止代數:100-10000
編碼策略
- 二進制編碼:經典,易交叉變異,但精度受限
- 實數編碼:連續優化問題,直接操作參數
- 排列編碼:TSP 等組合優化
優缺點分析
| 優點 | 缺點 |
| 全域搜索能力強,不易陷局部最優 | 收斂速度慢,參數敏感 |
| 並行性好,易分佈式實現 | 無法保證絕對最優解 |
| 不需梯度信息,適用黑箱優化 | 編碼設計影響大 |
| 多目標擴展自然(NSGA-II等) | 計算開銷大 |
應用領域
- 工程設計優化(結構、氣動、電磁)
- 調度問題(作業車間、車輛路徑)
- 機器學習超參數優化
- 神經網絡結構搜索
- 金融投資組合優化
學習資源
- 經典教材:《遺傳算法》Goldberg
- Python 庫:DEAP, PyGAD, scikit-opt
- MATLAB 全局優化工具箱
遺傳算法是啟發式優化的基石,理解其生物隱喻與數學機制,為掌握進化計算家族算法奠定基礎。
- 上一篇文章: C語言 while 循環執行流程詳解:條件判斷與循環體機制
- 下一篇文章: C語言字符串反轉:處理中文字符的 UTF-8/GBK 編碼邊界問題
Copyright ©
程式碼之家 All Rights Reserved