python绘制评估优化算法性能的测试函数


Posted in Python onJune 25, 2019

测试函数主要是用来评估优化算法特性的,这里我用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)

以下是上述代码绘制的测试函数的图像:

python绘制评估优化算法性能的测试函数

python绘制评估优化算法性能的测试函数

python绘制评估优化算法性能的测试函数

python绘制评估优化算法性能的测试函数

python绘制评估优化算法性能的测试函数

python绘制评估优化算法性能的测试函数

python绘制评估优化算法性能的测试函数

python绘制评估优化算法性能的测试函数

感觉图像的颜色还不是很好看,等之后优化了来改

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现的一个p2p文件传输实例
Jun 04 Python
python批量同步web服务器代码核心程序
Sep 01 Python
Python实现监控程序执行时间并将其写入日志的方法
Jun 30 Python
详解Django中的权限和组以及消息
Jul 23 Python
Python Tkinter 简单登录界面的实现
Jun 14 Python
pygame实现俄罗斯方块游戏(基础篇3)
Oct 29 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
python二维键值数组生成转json的例子
Dec 06 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
pycharm导入源码的具体步骤
Aug 04 Python
Python os库常用操作代码汇总
Nov 03 Python
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
Aug 30 Python
Python基于机器学习方法实现的电影推荐系统实例详解
Jun 25 #Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
Jun 25 #Python
pyqt5 删除layout中的所有widget方法
Jun 25 #Python
在Python中表示一个对象的方法
Jun 25 #Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
Jun 25 #Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
Jun 25 #Python
PyQt5根据控件Id获取控件对象的方法
Jun 25 #Python
You might like
收集的php编写大型网站问题集
2007/03/06 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
JavaScript等比例缩放图片控制超出范围的图片
2013/08/06 Javascript
js实现背景图片感应鼠标变化的方法
2015/02/28 Javascript
javascript文件加载管理简单实现方法
2015/07/25 Javascript
jquery动感漂浮导航菜单代码分享
2020/04/15 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
vue源码学习之Object.defineProperty对象属性监听
2018/05/30 Javascript
js实现延迟加载的几种方法详解
2019/01/19 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
Python 不同对象比较大小示例探讨
2014/08/21 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
对Python中DataFrame按照行遍历的方法
2018/04/08 Python
python读取有密码的zip压缩文件实例
2019/02/08 Python
学习python分支结构
2019/05/17 Python
django框架实现模板中获取request 的各种信息示例
2019/07/01 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
HTML5实现可缩放时钟代码
2017/08/28 HTML / CSS
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
挪威手表购物网站:Klokker
2016/09/19 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
请解释virtual关键字的含义
2015/06/17 面试题
警察群众路线整改措施
2014/09/26 职场文书
春季运动会开幕词
2015/01/28 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis