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函数式编程
Jun 09 Python
wxPython事件驱动实例详解
Sep 28 Python
Python_LDA实现方法详解
Oct 25 Python
Python使用爬虫爬取静态网页图片的方法详解
Jun 05 Python
python实战教程之自动扫雷
Jul 13 Python
python实现倒计时小工具
Jul 29 Python
原来我一直安装 Python 库的姿势都不对呀
Nov 11 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
Python数据正态性检验实现过程
Apr 18 Python
python接入支付宝的实例操作
Jul 20 Python
Python实现FTP文件定时自动下载的步骤
Dec 19 Python
python中PyQuery库用法分享
Jan 15 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 和 COM
2006/10/09 PHP
php访问查询mysql数据的三种方法
2006/10/09 PHP
PHP 设计模式系列之 specification规格模式
2016/01/10 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
2016/12/06 PHP
php自定义时间转换函数示例
2016/12/07 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
细品javascript 寻址,闭包,对象模型和相关问题
2009/04/27 Javascript
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
setTimeout和setInterval的区别你真的了解吗?
2011/03/31 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
动态加载JavaScript文件的两种方法
2016/04/22 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
vue中render函数的使用详解
2018/10/12 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
在JavaScript中使用严格模式(Strict Mode)
2019/06/13 Javascript
在Python中移动目录结构的方法
2016/01/31 Python
Ruby元编程基础学习笔记整理
2016/07/02 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
Python 反转字符串(reverse)的方法小结
2018/02/20 Python
python构建深度神经网络(DNN)
2018/03/10 Python
python tornado微信开发入门代码
2018/08/24 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
查看keras的默认backend实现方式
2020/06/19 Python
简单的命令查看安装的python版本号
2020/08/28 Python
出纳试用期工作总结2015
2015/05/28 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
2019 入党申请书范文
2019/07/10 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL