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中请使用isinstance()判断变量类型
Aug 25 Python
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
高质量Python代码编写的5个优化技巧
Nov 16 Python
python队列通信:rabbitMQ的使用(实例讲解)
Dec 22 Python
利用python-pypcap抓取带VLAN标签的数据包方法
Jul 23 Python
Python中的延迟绑定原理详解
Oct 11 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
基于keras输出中间层结果的2种实现方式
Jan 24 Python
python删除某个目录文件夹的方法
May 26 Python
python开根号实例讲解
Aug 30 Python
聊聊python中的循环遍历
Sep 07 Python
Python 使用office365邮箱的示例
Oct 29 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的header和asp中的redirect比较
2006/10/09 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
js 实现无干扰阴影效果 简单好用(附文件下载)
2009/12/27 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
angular.js之路由的选择方法
2016/09/24 Javascript
B/S(Web)实时通讯解决方案分享
2017/04/06 Javascript
微信小程序tabbar不显示解决办法
2017/06/08 Javascript
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
详解JS数值Number类型
2018/02/07 Javascript
vue中使用ueditor富文本编辑器
2018/02/08 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
python回调函数的使用方法
2014/01/23 Python
Flask入门教程实例:搭建一个静态博客
2015/03/27 Python
Python基于有道实现英汉字典功能
2015/07/25 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
python selenium 对浏览器标签页进行关闭和切换的方法
2018/05/21 Python
PyCharm设置每行最大长度限制的方法
2019/01/16 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
python创建文本文件的简单方法
2020/08/30 Python
提高EJB性能都有哪些技巧
2012/03/25 面试题
中学家长会邀请函
2014/01/17 职场文书
消防安全责任书范本
2014/04/15 职场文书
2015年乡镇扶贫工作总结
2015/04/08 职场文书
运动会宣传稿100字
2015/07/23 职场文书
服务行业标语口号
2015/12/26 职场文书
python基于机器学习预测股票交易信号
2021/05/25 Python
python中%格式表达式实例用法
2021/06/18 Python
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python
Python实现批量将文件复制到新的目录中再修改名称
2022/04/12 Python