遗传算法介绍并附上Python代码

系统 1271 0

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

函数图像如图:

遗传算法介绍并附上Python代码_第1张图片

我们对种群进行编码,我们也使用二进制编码,二进制编码长度为10.

 


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论