天天看點

python 遺傳算法_Python | 智能優化算法之遺傳算法實作

1.遺傳算法的提出

遺傳算法(Genetic Algorithm, GA)是1975年由霍蘭教授提出的,它是模拟達爾文的遺傳選擇和自然淘汰的生物進化過程的計算模型,其目的:一是抽取和解釋自然系統的自适應過程;二是設計具有自然系統機理的人工系統。遺傳算法一緻被認為是智能優化算法的基礎,廣泛應用于,函數優化、組合優化、生産排程等問題。

2.遺傳算法的實作

本文遺傳算法的實作基于 @幼鷹me 大佬開發的庫

scikit-opt​scikit-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()
           

最後的結果如圖下圖所示

python 遺傳算法_Python | 智能優化算法之遺傳算法實作

前人種樹,後人乘涼!

再次感謝大佬的開發!