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

