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


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

  • 相关阅读:
    洛谷mNOIP模拟赛Day2-星空
    洛谷mNOIP模拟赛Day2-将军令
    洛谷mNOIP模拟赛Day2-入阵曲
    洛谷mNOIP模拟赛Day1-斐波那契
    洛谷mNOIP模拟赛Day1-数颜色
    计蒜客NOIP2017提高组模拟赛(五)day1-展览
    HDU1700Points on Cycle(圆心半径)
    HDU1086You can Solve a Geometry Problem too (斜率问题)
    湖南省第十届大学生计算机程序设计竞赛1503: 点到圆弧的距离(atan()函数的应用)
    HDU献给杭电五十周年校庆的礼物 (切蛋糕,线段划分区域)
  • 原文地址:https://www.cnblogs.com/LoganChen/p/11348082.html
Copyright © 2020-2023  润新知