原文:
Evolutionary programming made faster IEEE Transactions on Evolutionary Computation ( IF 11.554 ) Pub Date : 1999-07-01 , DOI: 10.1109/4235.771163

单峰测试函数

多峰测试函数

固定维测试函数
单峰测试函数
F1:Sphere Function

def fun1(X):
O=np.sum(X*X)
return O F2:Schwefel's Problem 2.22

def fun2(X):
O=np.sum(np.abs(X))+np.prod(np.abs(X))
return O F3:Schwefel's Problem 1.2

def fun3(X):
O=0
for i in range(len(X)):
O=O+np.square(np.sum(X[0:i+1]))
return O F4:Schwefel's Problem 2.21

def fun4(X):
O=np.max(np.abs(X))
return O F5:Generalized Rosenbrock's Function

def fun5(X):
X_len = len(X)
O = np.sum(100 * np.square(X[1:X_len] - np.square(X[0:X_len - 1]))) + np.sum(np.square(X[0:X_len - 1] - 1))
return O F6:Step Function

def fun6(X):
O=np.sum(np.square(np.abs(X+0.5)))
return O F7:Quartic Function i.e. Noise

def fun7(X):
i = np.arange(1,len(X)+1)
O=np.sum(i*(X**4))+np.random.random()
return O 多峰测试函数
F8:Generalized Schwefel's Problem 2.26

def fun8(X):
O=np.sum(-X*np.sin(np.sqrt(np.abs(X))))
return O F9:Generalized Rastrigin's Function

def fun9(X):
dim=len(X)
O=np.sum(X**2-10*np.cos(2*np.pi*X))+10*dim
return O F10:Ackley's Function

def fun10(X):
dim=len(X)
a, b, c = 20, 0.2, 2 * np.pi
sum_1 = -a * np.exp(-b * np.sqrt(np.sum(X ** 2) / dim))
sum_2 = np.exp(np.sum(np.cos(c * X)) / dim)
O= sum_1 - sum_2 + a + np.exp(1)
return O F11:Generalized Griewank's Function

def fun11(X):
dim=len(X)
i = np.arange(1,dim+1)
O=np.sum(X**2)/4000-np.prod(np.cos(X/np.sqrt(i)))+1
return O F12:Generalized Penalized Function 1

def Ufun(X,a,k,m):
dim =len(X)
U = np.zeros(dim)
for i in range(len(X)):
if X[i]>a:
U[i]=k*((X[i]-a)**m)
elif X[i]<-a:
U[i]=k*((-X[i]-a)**m)
else:
U[i]=0
return U
def fun12(X):
dim=len(X)
pi=np.pi
sum_1 = (np.pi/dim)*(10*((np.sin(pi*(1+(X[0]+1)/4)))**2)
+np.sum((((X[:dim-2]+1)/4)**2)*
(1+10*((np.sin(pi*(1+(X[1:dim-1]+1)/4))))**2))
+((X[dim-1])/4)**2)
sum_2 = np.sum(Ufun(X,10,100,4))
O=sum_1 + sum_2
return O F13:Generalized Penalized Function 2

def fun13(X):
dim=len(X)
pi=np.pi
O=0.1*((np.sin(3*pi*X[0]))**2+np.sum(((X[0:dim-2])-1)**2*(1+(np.sin(3*pi*X[1:dim-1]))**2)))
+((X[dim-1]-1)**2)*(1+(np.sin(2*pi*X[dim-1]))**2)+np.sum(Ufun(X,5,100,4))
return O 固定维多峰测试函数
F14:Shekel's Foxholes Function

固定2维
def fun14(X):
aS=np.array([[-32,-16,0,16,32,-32,-16,0,16,32,-32,-16,0,16,32,-32,-16,0,16,32,-32,-16,0,16,32],
[-32,-32,-32,-32,-32,-16,-16,-16,-16,-16,0,0,0,0,0,16,16,16,16,16,32,32,32,32,32]])
bS=np.zeros(25)
for j in range(0,25):
bS[j]=np.sum((X.T-aS[:,j])**6)
O=(1/500+np.sum(1/(np.arange(1,25+1)+bS)))**(-1)
return O F15:Kowalik's Function
固定4维
def fun15(X):
aK=np.array([0.1957,0.1947,0.1735,0.16,0.0844,0.0627,0.0456,0.0342,0.0323,0.0235,0.0246])
bK=np.array([0.25,0.5,1,2,4,6,8,10,12,14,16])
bK=1/bK
O=np.sum((aK-((X[0]*(bK**2+X[1]*bK))/(bK**2+X[2]*bK+X[3])))**2)
return O F16:Six-Hump Camel-Back Function

固定2维
def fun16(X):
O=4*(X[0]**2)-2.1*(X[0]**4)+(X[0]**6)/3+X[0]*X[1]-4*(X[1]**2)+4*(X[1]**4)
return O F17:Branin Function

固定2维
def fun17(X):
pi=np.pi
O=((X[1])-(X[0]**2)*5.1/(4*(pi**2))+5/pi*X[0]-6)**2+10*(1-1/(8*pi))*np.cos(X[0])+10
return O F18:Goldstein-Price Function

固定2维
def fun18(X):
O=(1+((X[0]+X[1]+1)**2)*(19-14*X[0]+3*(X[0]**2)-14*X[1]+6*X[0]*X[1]+3*(X[1]**2)))*(30+(2*X[0]-3*X[1])**2*(18-32*X[0]+12*(X[0]**2)+48*X[1]-36*X[0]*X[1]+27*(X[1]**2)))
return O F19&F20:Hartman's Family
固定3维及6维
def fun19(X):
aH=np.array([[3,10,30],[0.1,10,35],[3,10,30],[0.1,10,35]])
cH=np.array([1,1.2,3,3.2])
pH=np.array([[0.3689,0.117,0.2673],[0.4699,0.4387,0.747],
[0.1091,0.8732,0.5547],[0.03815,0.5743,0.8828]])
O=0
for i in range(0,4):
O=O-cH[i]*np.exp(-(np.sum(aH[i]*((X-pH[i])**2))))
return O
def fun20(X):
aH=np.array([[10,3,17,3.5,1.7,8],[0.05,10,17,0.1,8,14],[3,3.5,1.7,10,17,8],[17,8,0.05,10,0.1,14]])
cH=np.array([1,1.2,3,3.2])
pH=np.array([[0.1312,0.1696,0.5569,0.0124,0.8283,0.5886],[0.2329,0.413,0.8307,0.3736,0.1004,0.9991],
[0.2348,0.1415,0.3522,0.2883,0.3047,0.6650],[0.4047,0.8828,0.8732,0.5743,0.1091,0.0381]])
O=0
for i in range(0,4):
O=O-cH[i]*np.exp(-(np.sum(aH[i]*((X-pH[i])**2))))
return O
F21&F22&F23:Shekel's Family
固定4维
def fun21(X):
aSH=np.array([[4,4,4,4],[1,1,1,1],[8,8,8,8],[6,6,6,6],[3,7,3,7],
[2,9,2,9],[5,5,3,3],[8,1,8,1],[6,2,6,2],[7,3.6,7,3.6]])
cSH=np.array([[0.1],[0.2],[0.2],[0.4],[0.4],
[0.6],[0.3],[0.7],[0.5],[0.5]])
O=0
for i in range(0,5):
O=O-(np.sum((X-aSH[i])**2)+cSH[i])**(-1)
return O
X=np.arange(4)
fun21(X)
def fun22(X):
aSH=np.array([[4,4,4,4],[1,1,1,1],[8,8,8,8],[6,6,6,6],[3,7,3,7],
[2,9,2,9],[5,5,3,3],[8,1,8,1],[6,2,6,2],[7,3.6,7,3.6]])
cSH=np.array([[0.1],[0.2],[0.2],[0.4],[0.4],
[0.6],[0.3],[0.7],[0.5],[0.5]])
O=0
for i in range(0,7):
O=O-(np.sum((X-aSH[i])**2)+cSH[i])**(-1)
return O
def fun23(X):
aSH=np.array([[4,4,4,4],[1,1,1,1],[8,8,8,8],[6,6,6,6],[3,7,3,7],
[2,9,2,9],[5,5,3,3],[8,1,8,1],[6,2,6,2],[7,3.6,7,3.6]])
cSH=np.array([[0.1],[0.2],[0.2],[0.4],[0.4],
[0.6],[0.3],[0.7],[0.5],[0.5]])
O=0
for i in range(0,10):
O=O-(np.sum((X-aSH[i])**2)+cSH[i])**(-1)
return O 该代码主要用于自用记录,若有纰漏错误,是本人能力有限或是疏忽在此提前表达歉意,感谢批评指正。
参考来自知乎用户valley的matlab程序(地址如下)
https://zhuanlan.zhihu.com/p/397505364