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逐行读取文件内容的三种方法
Jan 20 Python
Python用list或dict字段模式读取文件的方法
Jan 10 Python
Python学习入门之区块链详解
Jul 25 Python
在java中如何定义一个抽象属性示例详解
Aug 18 Python
Python 装饰器实现DRY(不重复代码)原则
Mar 05 Python
Python实现替换文件中指定内容的方法
Mar 19 Python
通过shell+python实现企业微信预警
Mar 07 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
Jan 09 Python
基于spring boot 日志(logback)报错的解决方式
Feb 20 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
Mar 06 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 Python
python编程项目中线上问题排查与解决
Nov 01 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
类的另类用法--数据的封装
2006/10/09 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
thinkphp3.0输出重复两次的解决方法
2014/12/19 PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
2015/01/22 PHP
php判断一个数组是否为有序的方法
2015/03/27 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门
2020/09/13 PHP
jQuery 常见操作实现方式和常用函数方法总结
2011/05/06 Javascript
jquery 插件学习(三)
2012/08/06 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
js判断变量初始化的三种形式及推荐用的形式
2014/07/22 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
python列表与元组详解实例
2013/11/01 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
python每天定时运行某程序代码
2019/08/16 Python
前端实现背景虚化但内容清晰且自适应 的实例代码
2019/08/01 HTML / CSS
新西兰领先的内衣店:Bendon Lingerie新西兰
2018/07/11 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
银行职业规划书范文
2013/12/28 职场文书
女儿十岁生日答谢词
2014/01/27 职场文书
兽医医药专业求职信
2014/07/27 职场文书
导航工程专业自荐信
2014/09/02 职场文书
小学英语复习计划
2015/01/19 职场文书
监察建议书
2015/02/04 职场文书
公司备用金管理制度
2015/08/04 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang