1.遺傳算法的提出
遺傳算法(Genetic Algorithm, GA)是1975年由霍蘭教授提出的,它是模拟達爾文的遺傳選擇和自然淘汰的生物進化過程的計算模型,其目的:一是抽取和解釋自然系統的自适應過程;二是設計具有自然系統機理的人工系統。遺傳算法一緻被認為是智能優化算法的基礎,廣泛應用于,函數優化、組合優化、生産排程等問題。
2.遺傳算法的實作
本文遺傳算法的實作基于 @幼鷹me 大佬開發的庫
scikit-optscikit-opt.github.io
2.1 目标函數定義
首先第一步應當是定義待解決問題的優化目标
def
2.2 遺傳算法的求解
調用遺傳算法進行求解
from sko.GA import GA
ga = GA(func=func,n_dim=4,size_pop=20,max_iter=10,lb=[-1,-1,-1,-1],ub=[1,1,1,1],precision=1e-7)
best_x,best_y = ga.run()
print('best_x:',best_x,'best_y:',best_y)
2.3結果可視化
對運作的結果進行可視化
import pandas as pd
import matplotlib.pyplot as plt
Y_history = pd.DataFrame(ga.all_history_Y)
fig, ax = plt.subplots(2, 1)
ax[0].plot(Y_history.index, Y_history.values, '.', color='red')
Y_history.min(axis=1).cummin().plot(kind='line')
plt.show()
最後的結果如圖下圖所示
