之前介绍过遗传算法,参见: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.