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实现将html表格转换成CSV文件的方法
Jun 28 Python
Python简单格式化时间的方法【strftime函数】
Sep 18 Python
python中(str,list,tuple)基础知识汇总
Feb 20 Python
Python遍历numpy数组的实例
Apr 04 Python
Python实现string字符串连接的方法总结【8种方式】
Jul 06 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
使用Python批量修改文件名的代码实例
Jan 24 Python
Django 通过JS实现ajax过程详解
Jul 30 Python
python join方法使用详解
Jul 30 Python
新手常见Python错误及异常解决处理方案
Jun 18 Python
Python基于network模块制作电影人物关系图
Jun 19 Python
Python 可迭代对象 iterable的具体使用
Aug 07 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
理解PHP5中static和const关键字的区别
2007/03/19 PHP
从手册去理解分析PHP session机制
2011/07/17 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
浅析Javascript中“==”与“===”的区别
2014/12/23 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
2015/08/31 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
浅谈基于Vue.js的移动组件库cube-ui
2017/12/20 Javascript
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
如何优雅地在Node应用中进行错误异常处理
2019/11/25 Javascript
js仿京东放大镜效果
2020/08/09 Javascript
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
2020/07/20 Python
利用python循环创建多个文件的方法
2018/10/25 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
英国DVD和蓝光碟片购买网站:Zoom.co.uk(电影和电视)
2019/09/23 全球购物
党校自我鉴定范文
2013/10/02 职场文书
cf战队收人广告词
2014/03/14 职场文书
个人安全承诺书
2014/05/22 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
2014年除四害工作总结
2014/12/06 职场文书
财务工作个人总结
2015/02/27 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
2019个人工作态度自我评价
2019/04/24 职场文书