之前介紹過遺傳算法,參見:https://www.cnblogs.com/LoganChen/p/7509702.html
我們用Python實現同樣的問題解答。
y=10*sin(5*x)+7*abs(x-5)+10
我們來求這個函數在0-10之間的最大值。
先來看一下這個函數的圖像:
import numpy as np import matplotlib.pyplot as plt """ **Colors** The following color abbreviations are supported: ============= =============================== character color ============= =============================== ``'b'`` blue ``'g'`` green ``'r'`` red ``'c'`` cyan ``'m'`` magenta ``'y'`` yellow ``'k'`` black ``'w'`` white ============= =============================== If the color is the only part of the format string, you can additionally use any `matplotlib.colors` spec, e.g. full names (``'green'``) or hex strings (``'#008000'``). **Markers** ============= =============================== character description ============= =============================== ``'.'`` point marker ``','`` pixel marker ``'o'`` circle marker ``'v'`` triangle_down marker ``'^'`` triangle_up marker ``'<'`` triangle_left marker ``'>'`` triangle_right marker ``'1'`` tri_down marker ``'2'`` tri_up marker ``'3'`` tri_left marker ``'4'`` tri_right marker ``'s'`` square marker ``'p'`` pentagon marker ``'*'`` star marker ``'h'`` hexagon1 marker ``'H'`` hexagon2 marker ``'+'`` plus marker ``'x'`` x marker ``'D'`` diamond marker ``'d'`` thin_diamond marker ``'|'`` vline marker ``'_'`` hline marker ============= =============================== **Line Styles** ============= =============================== character description ============= =============================== ``'-'`` solid line style ``'--'`` dashed line style ``'-.'`` dash-dot line style ``':'`` dotted line style ============= =============================== """ x = np.arange(0,10,0.05) y = 10*np.sin(5*x)+7*np.abs(x-5)+10 plt.figure(figsize=(8,4)) plt.plot(x,y,color="green",linestyle='dashed',linewidth=1) # plt.plot(x, y, color='green', marker='o', linestyle='dashed',linewidth=2, markersize=12) plt.xlabel("x") plt.ylabel("y") plt.ylim(0,56) # plt.title("y=10*sin(5*x)+7*abd(x-5)+10") plt.title("$y=10*sin(5*x)+7*abs(x-5)+10$") plt.show()
函數圖像如圖:
我們對種群進行編碼,我們也使用二進制編碼,二進制編碼長度為10.