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 3利用BeautifulSoup抓取div标签的方法示例
May 28 Python
Python第三方库h5py_读取mat文件并显示值的方法
Feb 08 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
用uWSGI和Nginx部署Flask项目的方法示例
May 05 Python
使用Python做定时任务及时了解互联网动态
May 15 Python
python画图的函数用法以及技巧
Jun 28 Python
python3.x提取中文的正则表达式示例代码
Jul 23 Python
python对常见数据类型的遍历解析
Aug 27 Python
Python如何使用Gitlab API实现批量的合并分支
Nov 27 Python
Django密码存储策略分析
Jan 09 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 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 默默经典版本
2009/08/04 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
php事务处理实例详解
2014/07/11 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
2017/01/04 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
微信小程序实现文字从右向左无限滚动
2020/11/18 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
vue3.0+vue-router+element-plus初实践
2020/12/02 Vue.js
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
Python实现一个服务器监听多个客户端请求
2018/04/12 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
详解python破解zip文件密码的方法
2020/01/13 Python
Python list运算操作代码实例解析
2020/01/20 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
Reebonz中国官网:新加坡奢侈品购物网站
2017/03/17 全球购物
override和overload的区别
2016/03/09 面试题
自荐书封面下载
2013/11/29 职场文书
早餐连锁店计划书
2014/01/08 职场文书
学风建设演讲稿
2014/09/12 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python