单目标优化算法测试函数python绘制及相关代码

在博客上看到了一些函数,为了练习python画图能力,所以就都绘制了部分函数

函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码和图像

画图部分

def draw_pic_3D(x, y, z, title, z_min, z_max, offset):
    fig = plt.figure()
    ax = Axes3D(fig)
    ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap = plt.get_cmap('rainbow'),color='orangered')
    # 绘制等高线
    ax.contour(x,y,z,offset=offset,colors='green')
    ax.set_zlim(z_min, z_max)
    ax.set_title(title)
    plt.savefig("image")
    plt.show()

获取x和y的值

def get_x_and_y(x_min, x_max, y_min, y_max):
    x = np.arange(x_min, x_max, 0.1)
    y = np.arange(y_min, y_max, 0.1)
    x, y = np.meshgrid(x, y)  # 生成网格点坐标矩阵
    return x, y

Ackely’s function

def Ackelys_function(z_min = 0,z_max = 15, offset = 0):
    x, y = get_x_and_y(-5,5,-5,5)
    z = -20 * np.exp(-0.2 * np.sqrt(0.5 * (x ** 2 + y ** 2))) - np.exp(0.5 * (np.cos(2 * np.pi * x) + np.cos(2 * np.pi * y))) + 20 + np.e
    return x, y, z, 'Ackely function', z_min, z_max, offset

在这里插入图片描述

Sphere function

def Sphere(z_min = 0,z_max = 20,offset = 0):
    x,y = get_x_and_y( -3,3,-3,3)
    z = x ** 2 + y ** 2
    return x,y,z, "Sphere function", z_min, z_max, offset

在这里插入图片描述

Rosebrock function

def Rosebrock_function(z_min = 0,z_max = 1500,offset = 0):
    x, y = get_x_and_y(-1, 1, -1, 1)
    z = 100 * ((y - x ** 2) ** 2 + (x -1) ** 2)
    return x,y,z, "Rosebrock function", z_min, z_max, offset

在这里插入图片描述

Beale’s function

def Beale_function(z_min = 0,z_max = 2000,offset=0):
    x, y = get_x_and_y(-4.5, 4.5, -4.5, 4.5)
    z = (1.5 - x + x * y) ** 2 +  (2.25 - x + x * y) ** 2 + (2.625 -x + x * y) ** 2
    return x, y, z, "Beale function", z_min, z_max, offset

在这里插入图片描述

GoldsteinPrice function

def GoldsteinPrice_function(z_min =0 ,z_max =1000000 ,offset=0):
    x, y = get_x_and_y(-2,2,-2,2)
    z = (1 + ((x + y + 1) ** 2) * (19 - 14 * x + 3 * (x ** 2) - 14 * y + 6 * x * y + 3 * (y **2))) * (30 + ((2 * x - 3 * y) ** 2) * (18 - 32 * x + 12 * (x ** 2) + 48 * y - 36 * x * y + 27 * (y ** 2)))
    return x, y, z, "GoldsteinPrice function", z_min, z_max, offset

在这里插入图片描述

Booth’s function

def Booth_function(z_min=0, z_max=2500, offset=0):
    x, y = get_x_and_y(-10,10,-10,10)
    z = (x + 2 * y -7) ** 2 + (2 * x + y - 5) ** 2
    return x, y, z, "Booth function", z_min, z_max, offset

在这里插入图片描述

Bukin function

def  Bukin_function(z_min =0 ,z_max =250 ,offset=0):
    x, y = get_x_and_y(-15,-5,-3,3)
    z = 100 * np.sqrt(np.fabs(y - 0.01 * (x ** 2))) + 0.01 * np.fabs(x + 10)
    return x, y, z, "Bukin function", z_min, z_max, offset

在这里插入图片描述

Matyas function

def MAtyas_function(z_min =0 ,z_max =100 ,offset=0):
    x, y = get_x_and_y(-10,10,-10,10)
    z = 0.26 * (x ** 2 + y ** 2) - 0.48 * x * y
    return x, y, z, "Matyas function", z_min, z_max, offset

在这里插入图片描述

Levi function

def Levi_function(z_min =0 ,z_max =450 ,offset=0):
    x, y = get_x_and_y(-10,10,-10,10)
    z = np.sin(3 * np.pi * x) ** 2 + ((x - 1) ** 2) * (1 + np.sin(3 * np.pi * y) ** 2) + ((y - 1) ** 2) * (1 + np.sin(2 * np.pi * y) ** 2)
    return x, y, z, "Levi function", z_min, z_max, offset

在这里插入图片描述

Three-hump camel function

def Three_hump_camel_function(z_min =0 ,z_max =2000 ,offset=0):
    x, y = get_x_and_y(-5,5,-5,5)
    z = 2 * (x ** 2) - 1.05 * (x ** 4) + (x ** 6) / 6 + x * y + (y ** 2)
    return x, y, z, "Three-hump camel function", z_min, z_max, offset

在这里插入图片描述

Eason function

def Eason_function(z_min =-1.5 ,z_max =0 ,offset=-1.5):
    x, y = get_x_and_y(-10,10,-10,10)
    z = -np.cos(x) * np.cos(y) * np.exp(-((x - np.pi) ** 2 + (y - np.pi) ** 2))
    return x, y, z, "Eason function", z_min, z_max, offset

在这里插入图片描述

Cross-in-tray function

def Cross_in_tray_function(z_min =-4 ,z_max =0 ,offset=-4):
    x, y = get_x_and_y(-10,10,-10,10)
    z = -0.0001 * (np.fabs(np.sin(x) * np.sin(y) * np.exp(np.fabs(100 - (np.sqrt((x ** 2) + (y ** 2)) / np.pi)))) + 1) ** 0.1
    return x, y, z, "Cross-in-tray function", z_min, z_max, offset

在这里插入图片描述

Holder table function

def Holder_table_function(z_min =-30 ,z_max =0 ,offset=-30):
    x, y = get_x_and_y(-10,10,-10,10)
    z = -np.fabs(np.sin(x) * np.cos(y) * np.exp(np.fabs(1 - (np.sqrt(x ** 2 + y ** 2))/np.pi)))
    return x, y, z, "Holder table function", z_min, z_max, offset

在这里插入图片描述

McCormick function

def McCormick_function(z_min =0 ,z_max =50 ,offset=0):
    x, y = get_x_and_y(-1.5,4,-3,4)
    z = np.sin(x + y) + (x - y) ** 2 - 1.5 * x + 2.5 * y + 1
    return x, y, z, "McCormick function", z_min, z_max, offset

在这里插入图片描述

StyblinskiTang function

def StyblinskiTang_function(z_min =-200 ,z_max =250 ,offset=-200):
    x, y = get_x_and_y(-5,5,-5,5)
    z1 = x ** 4 -16 * (x ** 2) + 5 * x
    z2 = y ** 4 -16 * (y ** 2) + 5 * y
    z = (z1 + z2) / 2
    return x, y, z, "StyblinskiTang function", z_min, z_max, offset

在这里插入图片描述

欢迎指正,共同进步😎

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值