文章目录

  • 前言
  • Bent Cigar Function
  • Sum of Different Power Function
  • Zakharov Function
  • Rosenbrock’s Function
  • Rastrigin’s Function
  • Expanded Schaffer’s F6 Function
  • Lunacek bi-Rastrigin Function
  • Non-continuous Rotated Rastrigin’s Function
  • Levy Function
  • Modified Schwefel’s Function
  • High Conditioned Elliptic Function
  • Discus Function
  • Ackley’s Function
  • Weierstrass Function
  • Griewank’s Function
  • Katsuura Function
  • HappyCat Function
  • HGBat Function
  • Schaffer's F7 Function
  • 完整代码

前言

撑得慌,拿来练练手。部分函数没有实现,因为比较麻烦。我这边玩的话,也是直接拿这个玩,因为实际上他们玩的时候因该是加了偏置转换的,像cec2003好像都是没有偏置的。反正都能够说明问题,管你那么多。

Bent Cigar Function

def F1(self,X):Dim = len(X)res = X[0]*X[0]temp = 0.for i in range(2,Dim+1):temp+=X[i-1]*X[i-1]res+=self.pow(10,6)*tempreturn res

Sum of Different Power Function

def F2(self,X):res = 0.Dim = len(X)for i in range(1,Dim+1):res+=self.pow(abs(X[i-1]),(i+1))return res

Zakharov Function

 def F3(self,X):part1 = 0.part2 = 0.for x in X:part1+=x*xpart2+=0.5*xres = part1+self.pow(part2,2)+self.pow(part2,4)return res

Rosenbrock’s Function

    def F4(self,X):Dim  = len(X)res = 0.for i in range(1,Dim):res+=100*self.pow((self.pow(X[i-1],2)-X[i]),2)+(X[i-1]-1)+self.pow((X[i]-1),2)return res

Rastrigin’s Function


 def F5(self,X):res = 0.for x in X:res+=(x*x-10*self.cos(2*self.pi*x)+10)return res

Expanded Schaffer’s F6 Function

    def __g(self,x1,x2):res = 0.5+(self.pow(self.sin(self.sqrt(x1*x1+x2*x2)),2)/self.pow((1+0.001*(x1*x1+x2*x2)),2))return resdef F6(self,X):Dim = len(X)res = 0.for i in range(Dim-1):res+=self.__g(X[i],X[i+1])res+=self.__g(X[Dim-1],X[0])return res

Lunacek bi-Rastrigin Function

Non-continuous Rotated Rastrigin’s Function

def F8(self,X):res = 0.for x in X:if(abs(x)<0.5):y = xelse:y = (round(2*x)/2)res+=y*y - 10*(self.cos(2*self.pi*y)) + 10return res

Levy Function


def F9(self,X):Dim = len(X)res = self.pow(self.sin(self.pi*(1+(X[0]-1/4))),2)part2 = 0.for i in range(1,Dim):w = (1+(X[i-1]-1/4))part2+=self.pow(w,2)*(1+10*self.pow(self.pi*w+1,2))w = (1 + (X[Dim - 1] - 1 / 4))res+=part2+(self.pow(w-1,2)*(1+self.pow(self.sin(2*self.pi*w),2)))return res

Modified Schwefel’s Function

High Conditioned Elliptic Function

def F11(self,X):Dim = len(X)res = 0.for i in range(1,Dim+1):res+=self.pow(1000000,(i-1/Dim-1))*X[i-1]*X[i-1]return res

Discus Function

  def F12(self,X):res = 1000000*X[0]*X[0]Dim = len(X)for i in range(1,Dim):res+=X[i]*X[i]return res

Ackley’s Function

    def F13(self,X):Dim = len(X)part2 = 0.part3 = 0.for x in X:part2+=x*xpart3+=self.cos(self.pi*2*x)res = -20*self.exp(-0.2*self.sqrt((1/Dim)*part2))-self.exp((1/Dim)*part3)+20+self.ereturn res

Weierstrass Function

def F14(self,X):kmax = 20;a=0.5;b=3Dim = len(X)part1 = 0.for x in X:temp = 0.for i in range(kmax+1):temp+=self.pow(a,i)*self.cos(2*self.pi*self.pow(b,i)*(x+0.5))part1+=temppart2 = Dimtemp=0.for i in range(kmax+1):temp += self.pow(a, i) * self.cos(2 * self.pi * self.pow(b, i) * 0.5)part2*=tempres = part1-part2return res

Griewank’s Function

   def F15(self,X):part1 = 0.part2 = 1Dim = len(X)for i in range(1,Dim+1):part1+=X[i-1]*X[i-1]/4000part2*=self.cos(X[i-1]/self.sqrt(i))res = part1-part2 +1return res

Katsuura Function

def F16(self,X):Dim = len(X)part1 = 1for i in range(1,Dim+1):temp=0.for j in range(1,33):temp+=abs(self.pow(2,j)*X[i-1]-round(self.pow(2,j)*X[i-1]))/2**jtemp = self.pow(1+i*temp,(10/Dim**1.2))part1*=tempres = (10/Dim**2)*part1-(10/Dim**2)return res

HappyCat Function

  def F17(self,X):Dim = len(X)part1 = 0.part2 = 0.for x in X:part1+=x*xpart2+=xres = self.pow(abs(part1-Dim),0.25)+(0.5*part1+part2)/Dim + 0.5return res

HGBat Function

def F18(self,X):Dim = len(X)part1 = 0.part2 = 0.for x in X:part1+=x*xpart2+=xres = self.pow(abs(self.pow(part1,2)-self.pow(part2,2)),0.5)+(0.5*part1+part2)/Dim + 0.5return res

Schaffer’s F7 Function

    def F20(self,X):Dim = len(X)part1 = 0.for i in range(0,Dim-1):s = self.sqrt(X[i]**2+X[i+1]**2)part1+=self.sqrt(s)*(self.sin(50.0*s**0.2)+1)res = self.pow((1/(Dim-1))*part1,2)return res

完整代码

import math
class Functions(object):"""先实例出对象来,减少new对象的时间,python优化"""pow = math.powcos = math.cossin = math.sinpi = math.piexp = math.expsqrt = math.sqrte = math.edef F1(self,X):Dim = len(X)res = X[0]*X[0]temp = 0.for i in range(2,Dim+1):temp+=X[i-1]*X[i-1]res+=self.pow(10,6)*tempreturn resdef F2(self,X):res = 0.Dim = len(X)for i in range(1,Dim+1):res+=self.pow(abs(X[i-1]),(i+1))return resdef F3(self,X):part1 = 0.part2 = 0.for x in X:part1+=x*xpart2+=0.5*xres = part1+self.pow(part2,2)+self.pow(part2,4)return resdef F4(self,X):Dim  = len(X)res = 0.for i in range(1,Dim):res+=100*self.pow((self.pow(X[i-1],2)-X[i]),2)+(X[i-1]-1)+self.pow((X[i]-1),2)return resdef F5(self,X):res = 0.for x in X:res+=(x*x-10*self.cos(2*self.pi*x)+10)return resdef __g(self,x1,x2):res = 0.5+(self.pow(self.sin(self.sqrt(x1*x1+x2*x2)),2)/self.pow((1+0.001*(x1*x1+x2*x2)),2))return resdef F6(self,X):Dim = len(X)res = 0.for i in range(Dim-1):res+=self.__g(X[i],X[i+1])res+=self.__g(X[Dim-1],X[0])return resdef __A(self, alpha,Dim,i):res = self.pow(alpha,(i-1/Dim-1))return resdef F8(self,X):res = 0.for x in X:if(abs(x)<0.5):y = xelse:y = (round(2*x)/2)res+=y*y - 10*(self.cos(2*self.pi*y)) + 10return resdef F9(self,X):Dim = len(X)res = self.pow(self.sin(self.pi*(1+(X[0]-1/4))),2)part2 = 0.for i in range(1,Dim):w = (1+(X[i-1]-1/4))part2+=self.pow(w,2)*(1+10*self.pow(self.pi*w+1,2))w = (1 + (X[Dim - 1] - 1 / 4))res+=part2+(self.pow(w-1,2)*(1+self.pow(self.sin(2*self.pi*w),2)))return resdef F11(self,X):Dim = len(X)res = 0.for i in range(1,Dim+1):res+=self.pow(1000000,(i-1/Dim-1))*X[i-1]*X[i-1]return resdef F12(self,X):res = 1000000*X[0]*X[0]Dim = len(X)for i in range(1,Dim):res+=X[i]*X[i]return resdef F13(self,X):Dim = len(X)part2 = 0.part3 = 0.for x in X:part2+=x*xpart3+=self.cos(self.pi*2*x)res = -20*self.exp(-0.2*self.sqrt((1/Dim)*part2))-self.exp((1/Dim)*part3)+20+self.ereturn resdef F14(self,X):kmax = 20;a=0.5;b=3Dim = len(X)part1 = 0.for x in X:temp = 0.for i in range(kmax+1):temp+=self.pow(a,i)*self.cos(2*self.pi*self.pow(b,i)*(x+0.5))part1+=temppart2 = Dimtemp=0.for i in range(kmax+1):temp += self.pow(a, i) * self.cos(2 * self.pi * self.pow(b, i) * 0.5)part2*=tempres = part1-part2return resdef F15(self,X):part1 = 0.part2 = 1Dim = len(X)for i in range(1,Dim+1):part1+=X[i-1]*X[i-1]/4000part2*=self.cos(X[i-1]/self.sqrt(i))res = part1-part2 +1return resdef F16(self,X):Dim = len(X)part1 = 1for i in range(1,Dim+1):temp=0.for j in range(1,33):temp+=abs(self.pow(2,j)*X[i-1]-round(self.pow(2,j)*X[i-1]))/2**jtemp = self.pow(1+i*temp,(10/Dim**1.2))part1*=tempres = (10/Dim**2)*part1-(10/Dim**2)return resdef F17(self,X):Dim = len(X)part1 = 0.part2 = 0.for x in X:part1+=x*xpart2+=xres = self.pow(abs(part1-Dim),0.25)+(0.5*part1+part2)/Dim + 0.5return resdef F18(self,X):Dim = len(X)part1 = 0.part2 = 0.for x in X:part1+=x*xpart2+=xres = self.pow(abs(self.pow(part1,2)-self.pow(part2,2)),0.5)+(0.5*part1+part2)/Dim + 0.5return resdef F20(self,X):Dim = len(X)part1 = 0.for i in range(0,Dim-1):s = self.sqrt(X[i]**2+X[i+1]**2)part1+=self.sqrt(s)*(self.sin(50.0*s**0.2)+1)res = self.pow((1/(Dim-1))*part1,2)return res

CEC2017基础函数说明Python版本相关推荐

  1. anaconda对应python版本_Python基础——如何查看python版本、如何查看多个python版本

    前言 初学者来说,安装python过程是存在一定难度的. 在安装过程中,可能安装了多个python版本,可能安装了anaconda导致有自带的python,同时本身电脑也安装了官方下载的python也 ...

  2. pytho基础——如何查看python版本及多个python版本

    前言 初学者来说,安装python过程是存在一定难度的. 在安装过程中,可能安装了多个python版本,可能安装了anaconda导致有自带的python,同时本身电脑也安装了官方下载的python也 ...

  3. 程序员数学基础【五、math库常用函数】(Python版本)

    测试使用语言:[Python] 由于此类语言入门非常容易,哪怕初中生亦可以,并且本科/研究生写论文.做实验多数所用语言都是[Python]故而选择此语言. 代码运行平台:[win10 x64] 代码环 ...

  4. 程序员数学基础【四、取模应用-判断奇偶数、判断素数、求两个数的最大公约数、水仙花数】(Python版本)

    测试使用语言:[Python] 由于此类语言入门非常容易,哪怕初中生亦可以,并且本科/研究生写论文.做实验多数所用语言都是[Python]故而选择此语言. 代码运行平台:[win10 x64] 代码环 ...

  5. 《从青铜学到王者》Python工程师之Python基础函数

    每天妹子看一遍,学到凌晨都不厌 一.输入输出函数 1.print()函数 输出函数 向屏幕输出指定的汉字 print("hello world") 1 print()函数可以同时输 ...

  6. 2021-01-28 粒子群优化算法-Python版本和Matlab函数 particleswarm 调用

    粒子群优化算法-Python版本和Matlab函数 particleswarm 调用 前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab ...

  7. 程序员数学基础【一、基础运算符号(整数、普通浮点数运算、逻辑运算)】(Python版本)

    测试使用语言:[Python] 由于此类语言入门非常容易,哪怕初中生亦可以,并且本科/研究生写论文.做实验多数所用语言都是[Python]故而选择此语言. 代码运行平台:[win10 x64] 代码环 ...

  8. Python reduce / map / filter 函数区别 - Python零基础入门教程

    目录 一.map 函数 二.reduce 函数 三.filter 函数 四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 Pyth ...

  9. Python eval 与 exec 函数区别 - Python零基础入门教程

    目录 一.Python eval 与 exec 函数的区别 二.价值 10 个亿的智能机器人核心代码 三.猜你喜欢 基础 Python 学习路线推荐 : Python 学习目录 >> Py ...

最新文章

  1. 2019年计算机视觉将继续承担哪些作用?
  2. Struts2防止表单重复提交
  3. 神经网络调参---权重对分类性能的影响
  4. Lesson 4.张量的线性代数运算
  5. 科大星云诗社动态20210813
  6. SQL Server 行转列,列转行。多行转成一列
  7. 003 Preconditons
  8. php分布式缓存系统 Memcached 入门
  9. 4-1 可复用性概述
  10. 线程管理(一)线程的创建和运行
  11. Mac MF打印机驱动程序安装(亲测MacOS11.6和Mac12.4都可以)
  12. Mac环境下使用XMAPP 安装testlink
  13. 五子棋大在线对战 java_五子棋可蓝牙对战版
  14. ecshop分销说明
  15. Resource leak解决办法
  16. 酚酸靶向助力组合消毒剂在新鲜农产品中的应用研究
  17. vue简单实现词云图组件
  18. 路径规划学习之地图生成(二)
  19. PyTorch二分类时BCELoss,CrossEntropyLoss,Sigmoid等的选择和使用
  20. Android合并音频文件

热门文章

  1. 利用python批量将office格式(word、PPT、Excel)转换为PDF
  2. 浅析Promise原理
  3. [附源码]Python计算机毕业设计SSM基于Web课堂签到管理系统(程序+LW)
  4. 太极链——六大技术特点
  5. 字符串的复制,将一串字符串复制到另一串字符串中 c语言简单易懂
  6. 电商数字化解决方案趋势——订货商城系统+进销存财务系统+CRM客户管理系统
  7. 解决Module not found: Error: Can‘t resolve ‘sass-loader‘ in ‘******‘和node-sass和sass-loader版本不兼容问题
  8. 2020中考可不可以用计算机,2020中考必读 | 中考电脑阅卷流程“潜规则”!读完孩子少丢20分!(转给中考生)...
  9. csharp 异步编程
  10. 2018-8-30-router的自我反思与总结三