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实现在无须过多援引的情况下创建字典的方法
Sep 25 Python
Python学习入门之区块链详解
Jul 25 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
对numpy中的where方法嵌套使用详解
Oct 31 Python
python requests爬取高德地图数据的实例
Nov 10 Python
python使用selenium实现批量文件下载
Mar 11 Python
Python3.5面向对象编程图文与实例详解
Apr 24 Python
Python将主机名转换为IP地址的方法
Aug 14 Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
Python MySQL 日期时间格式化作为参数的操作
Mar 02 Python
Python3+selenium配置常见报错解决方案
Aug 28 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
快速配置PHPMyAdmin方法
2008/06/05 PHP
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
dojo随手记 gird组件引用
2011/02/24 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
JavaScript获得url查询参数的方法
2015/07/02 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
详解在Angular项目中添加插件ng-bootstrap
2017/07/04 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
如何在面试中手写出javascript节流和防抖函数
2020/10/22 Javascript
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
python中open函数的基本用法示例
2019/09/07 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
python 利用toapi库自动生成api
2020/10/19 Python
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
全球性的在线商店:Vogca
2019/05/10 全球购物
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型
2013/10/30 面试题
《罗布泊,消逝的仙湖》教学反思
2014/03/01 职场文书
计算机毕业生自荐信范文
2014/03/23 职场文书
企业诚信承诺书
2014/05/23 职场文书
公司任命书模板
2014/06/06 职场文书
学校读书活动总结
2014/06/30 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
优秀高中学生评语
2014/12/30 职场文书
企业党建工作总结2015
2015/05/26 职场文书
李强感恩观后感
2015/06/17 职场文书
大学运动会加油稿
2015/07/22 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
MySQL GRANT用户授权的实现
2021/06/18 MySQL