智慧型控制 Intelligent Control

遺傳基因演算法

遺傳演算法(Genetic Algorithm,GA)模仿生物「物競天擇、適者生存」的演化:把要找的參數編碼成染色體,一次維持一整群候選解,經由複製、交配、突變一代代演化,讓適應值高的解越來越多。它不需要目標函數可微分,也不怕有很多局部極值,常用來搜尋控制器的參數(例如 PID 增益、模糊規則)。

隨機產生初始族群解碼、計算適應函數值滿足終止條件?(代數、收斂)複製(選擇)交配突變否下一代是輸出最佳解

本章內容 Contents

看 GA 怎麼找到最大值 Watch GA Evolve

(補充)以適應函數頁的 \(f(x,y) = x\sin(4x) + 1.1\,y\sin(y)\) 為例,在 \(0 \le x, y \le 10\) 內找最大值。做法和本章的 Matlab 程式相同:每個變數 10 位元、競賽法複製、單點交配、逐位元突變、菁英保留。可以調族群數、交配率、突變率,觀察族群(白點)怎麼從隨機分布聚集到最高峰:

自製動畫(依控制理論數值模擬)

參數建議 Parameter Settings

二進位編碼 GA 的參數,文獻中常見的建議值:

來源族群數交配率突變率
De Jong(1975)50~1000.60.001
Grefenstette(1986)300.950.01
Schaffer 等(1989)20~300.75~0.950.005~0.01

編註:原講義寫作「Grenfenstette」,應為 J. J. Grefenstette。

範例與附檔 Examples

▶ 在 Colab 開啟原課程的 MATLAB 程式已改寫成 Python 筆記本(ga1.m、七個 GA 函式、GAExample、GAExample1、MCKPIDGA_Main 與 MCKFuzzyGa_Main,Simulink 模型改寫成 Python 模擬),可以直接在瀏覽器執行、修改參數。⬇ 下載 GA.ipynb