python绘制评估优化算法性能的测试函数
作者:雨破尘 发布时间:2022-10-18 20:13:20
标签:python,测试函数
测试函数主要是用来评估优化算法特性的,这里我用python3绘制了部分测试函数的图像。具体的测试函数可以结合 * 来了解。想要显示某个测试函数的图片把代码结尾对应的注释去掉即可,具体代码如下:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def draw_pic(X, Y, Z, z_max, title, z_min=0):
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot)
# ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.cm.hot)
ax.set_zlim(z_min, z_max)
ax.set_title(title)
# plt.savefig("./myProject/Algorithm/pic/%s.png" % title) # 保存图片
plt.show()
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
# rastrigin测试函数
def Rastrigin(X_min = -5.52, X_max = 5.12, Y_min = -5.12, Y_max = 5.12):
A = 10
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = 2 * A + X ** 2 - A * np.cos(2 * np.pi * X) + Y ** 2 - A * np.cos(2 * np.pi * Y)
return X, Y, Z, 100, "Rastrigin function"
# Ackley测试函数
def Ackley(X_min = -5, X_max = 5, Y_min = -5, Y_max = 5):
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
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))) + np.e + 20
return X, Y, Z, 15, "Ackley function"
# Sphere测试函数
def Sphere(X_min = -3, X_max = 3, Y_min = -3, Y_max = 3):
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = X**2 + Y**2
return X, Y, Z, 20, "Sphere function"
# beale测试函数
def Beale(X_min = -4.5, X_max = 4.5, Y_min = -4.5, Y_max = 4.5):
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = np.power(1.5 - X + X * Y, 2) + np.power(2.25 - X + X * (Y ** 2), 2) \
+ np.power(2.625 - X + X * (Y ** 3), 2)
return X, Y, Z, 150000, "Beale function"
# Booth测试函数
def Booth(X_min = -10, X_max = 10, Y_min = -10, Y_max = 10):
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = np.power(X + 2*Y - 7, 2) + np.power(2 * X + Y - 5, 2)
return X, Y, Z, 2500, "Booth function"
# Bukin测试函数
def Bukin(X_min = -15, X_max = -5, Y_min = -3, Y_max = 3):
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = 100 * np.sqrt(np.abs(Y - 0.01 * X**2)) + 0.01 * np.abs(X + 10)
return X, Y, Z, 200, "Bukin function"
# Three-hump camel测试函数
def three_humpCamel(X_min = -5, X_max = 5, Y_min = -5, Y_max = 5):
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = 2 * X**2 - 1.05 * X**4 + (1/6) * X**6 + X*Y + Y*2
return X, Y, Z, 2000, "three-hump camel function"
# Hölder table测试函数
def Holder_table(X_min = -10, X_max = 10, Y_min = -10, Y_max = 10):
X, Y = get_X_AND_Y(X_min, X_max, Y_min, Y_max)
Z = -np.abs(np.sin(X) * np.cos(Y) * np.exp(np.abs(1 - np.sqrt(X**2 + Y**2)/np.pi)))
return X, Y, Z, 0, "Hölder table function", -20
z_min = None
# X, Y, Z, z_max, title = Rastrigin()
# X, Y, Z, z_max, title = Ackley()
# X, Y, Z, z_max, title = Sphere()
# X, Y, Z, z_max, title = Beale()
X, Y, Z, z_max, title = Booth()
# X, Y, Z, z_max, title = Bukin()
# X, Y, Z, z_max, title = three_humpCamel()
# X, Y, Z, z_max, title, z_min = Holder_table()
draw_pic(X, Y, Z, z_max, title, z_min)
以下是上述代码绘制的测试函数的图像:
感觉图像的颜色还不是很好看,等之后优化了来改
来源:https://blog.csdn.net/wang454592297/article/details/80336753
0
投稿
猜你喜欢
- Python 跟 Python3 完全就是两种语言1、 import caffe FAILED环境为 Ubuntu 16 cuda
- 本文转自微信公众号:"算法与编程之美"1、问题描述使用HBuilder做一个简单的社区浏览界面。2、解决方案这是对HBu
- 1、旅行商问题(Travelling salesman problem, TSP)旅行商问题是经典的组合优化问题,要求找到遍历所有城市且每个
- 类是面向对象程序设计的一部分。面向对象程序设计或者简称为 OOP 致力于创建可重用代码块称之为类。当你想在你的程序中使用类时,你会从类中创建
- 本文实例讲述了python获取各操作系统硬件信息的方法。分享给大家供大家参考。具体如下:1. windows使用WMI:(WMI官网地址:h
- 本篇文章主要通过一个简单的例子来实现神经网络。训练数据是随机产生的模拟数据集,解决二分类问题。下面我们首先说一下,训练神经网络的一般过程:1
- Python内置函数isdigit()使用今天简单介绍一下Python中的isdigit()函数的用法:判断单个字符是否为数字判断字符串中是
- 本文实例讲述了Python 操作 PostgreSQL 数据库。分享给大家供大家参考,具体如下:我使用的是 Python 3.7.0Post
- 这个符合设计标准的三 级向上弹出菜单,纯css代码控制,没有使用javascript脚本,绿色环保,呵呵。兼容性应该更好。截图:<!D
- 前言图像处理技术是计算机视觉项目的核心,通常是计算机视觉项目中的关键工具,可以使用它们来完成各种计算机视觉任务。在本文中,将介绍如何使用 O
- 什么是seleniumselenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样
- 在ASP中利用OWC(Office Web Components)控件可轻松实现各种图表功能,如饼图,簇状柱型图,折线图
- Python中的[1:]意思是去掉列表中第一个元素(下标为0),去后面的元素进行操作,以一个示例题为例,用在遍历中统计个数:题:读入N名学生
- 大家已经从实际使用中了解了jquery这个javascript框架的强大,其实jquery更加强大的是可扩展。你可以编写自己的基于jquer
- 本节主要介绍函数,但是函数是由操作组成的。那么就分为两部,一部分为操作一部分为函数。py世界中的操作。操作if:在学习任何一门语言中,关系i
- 1、主题毫无疑问Pycharm是一个具有强大快捷键系统的IDE,这就意味着你在Pycharm中的任何操作,例如打开一个文件、切换编辑区域等,
- Anaconda是Python的一个开源发行版本,主要面向科学计算,预装了丰富强大的库。使用Anaconda可以轻松管理多个版本的Pytho
- 前言matplotlib是一个非常强大的Python第三方绘图包,可以绘制非常多非常漂亮的图形。import numpy as npimpo
- Oracle数据库提供了几种不同的数据库启动和关闭方式,本文将详细介绍这些启动和关闭方式之间的区别以及它们各自不同的功能。 一、启动和关闭O
- 这篇文章主要介绍了python修改文件内容的3种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的