cec2014测试函数的python版本
时间: 2023-09-28 15:11:20 浏览: 88
以下是CEC2014测试函数的Python版本实现,包括F1至F30共30个函数:
```python
import numpy as np
from scipy.special import gamma
def F1(x):
return np.sum(x ** 2)
def F2(x):
return np.sum(np.abs(x)) + np.prod(np.abs(x))
def F3(x):
dim = len(x)
return np.sum([np.sum(x[:i]) ** 2 for i in range(dim)])
def F4(x):
return np.max(np.abs(x))
def F5(x):
dim = len(x)
return np.sum([100 * (x[i + 1] - x[i] ** 2) ** 2 + (x[i] - 1) ** 2 for i in range(dim - 1)])
def F6(x):
return np.sum(x ** 2 - 10 * np.cos(2 * np.pi * x) + 10)
def F7(x):
dim = len(x)
return np.sum(i * x[i] ** 4 for i in range(dim)) + np.random.rand()
def F8(x):
dim = len(x)
return np.sum(-x * np.sin(np.sqrt(np.abs(x)))) + 418.9829 * dim
def F9(x):
dim = len(x)
return 1 / 0.2 * np.exp(-0.2 * np.sqrt(1 / dim * np.sum(x ** 2))) - np.exp(1 / dim * np.sum(np.cos(2 * np.pi * x))) + np.exp(1)
def F10(x):
dim = len(x)
return 1 / 4000 * np.sum(x ** 2) - np.prod(np.cos(x / np.sqrt(np.arange(1, dim + 1)))) + 1
def F11(x):
dim = len(x)
return np.sum(x ** 2) / dim - np.prod(np.cos(x / np.sqrt(np.arange(1, dim + 1)))) + 1
def F12(x):
dim = len(x)
return -20 * np.exp(-0.2 * np.sqrt(1 / dim * np.sum(x ** 2))) - np.exp(1 / dim * np.sum(np.cos(2 * np.pi * x))) + 20 + np.exp(1)
def F13(x):
dim = len(x)
return 0.1 * (np.sin(3 * np.pi * x[0])) ** 2 + np.sum((x[:-1] - 1) ** 2 * (1 + 10 * (np.sin(np.pi * x[:-1] + 1)) ** 2)) + (x[-1] - 1) ** 2 * (1 + (np.sin(2 * np.pi * x[-1])) ** 2)
def F14(x):
dim = len(x)
return 2 / dim * np.sum(np.abs(x ** 7 - 2 * x ** 5 + x ** 3)) + np.prod(np.cos(x))
def F15(x):
dim = len(x)
return np.sum(x ** 2 - 10 * np.cos(2 * np.pi * x) + 10 * np.exp(1) for i in range(dim))
def F16(x):
dim = len(x)
return 4 * (x[0] ** 2) - 2.1 * (x[0] ** 4) + (x[0] ** 6) / 3 + np.sum(x[1:] ** 2 - 10 * np.cos(2 * np.pi * x[1:]) + 10 for i in range(dim))
def F17(x):
dim = len(x)
return np.sum((x ** 2 - 10 * np.cos(2 * np.pi * x)) / (1 + 0.1 * np.power(np.power(x, 2), 2)) + 10 / np.power(1 + 0.1 * np.power(np.power(x, 2), 2), 2) for i in range(dim))
def F18(x):
dim = len(x)
return np.max(np.abs(x)) + np.sum(np.sin(x ** 2))
def F19(x):
dim = len(x)
return np.sum((x + 0.5) ** 2 - 10 * np.cos(2 * np.pi * (x + 0.5)) for i in range(dim))
def F20(x):
dim = len(x)
return -np.exp(-0.5 * np.sum((x - 1 / np.sqrt(dim)) ** 2)) + 2 * np.exp(-0.5 * np.sum(x ** 2)) + np.exp(0.5 * np.sum(np.cos(2 * np.pi * x))) - np.exp(0.5 * np.sum(np.cos(2 * np.pi * (x - 1 / np.sqrt(dim)))))
def F21(x):
dim = len(x)
return np.sum(np.abs(x)) + np.prod(np.abs(x)) + np.sum(x ** 2)
def F22(x):
dim = len(x)
return 0.1 * (np.sin(3 * np.pi * x[0])) ** 2 + np.sum((x[:-1] - 1) ** 2 * (1 + (np.sin(3 * np.pi * x[1:])) ** 2) + (x[-1] - 1) ** 2 * (1 + (np.sin(2 * np.pi * x[-1])) ** 2))
def F23(x):
dim = len(x)
return np.sum(np.power(np.abs(x), np.arange(1, dim + 1))) + np.random.rand()
def F24(x):
dim = len(x)
return np.sum(np.abs(x) ** (np.arange(1, dim + 1)) + np.sin(np.abs(x) ** (np.arange(1, dim + 1))))
def F25(x):
dim = len(x)
return np.sum(np.abs(x ** 2 - 10 * np.cos(2 * np.pi * x)) ** 0.25 + 10 * np.exp(1) / dim * (1 - np.sin(np.pi * x[:-1])) ** 2)
def F26(x):
dim = len(x)
return -np.sum(np.sin(x) * np.sin((np.arange(1, dim + 1)) * x ** 2 / np.pi) ** (2 * 10))
def F27(x):
dim = len(x)
return np.sum(np.power(np.sum(np.sin(x + np.power(np.arange(1, dim + 1), 2) ** 0.5 * x ** 2 / np.pi), 2), 0.25) + np.random.rand())
def F28(x):
dim = len(x)
return np.sum(-x * np.sin(np.sqrt(np.abs(x))) - (1 + 0.001 * np.sum(x ** 2)) ** 2)
def F29(x):
dim = len(x)
return np.sum(0.5 + (np.sin(np.sqrt(x ** 2 + (np.roll(x, -1) ** 2)))) ** 2 - 0.5 / (1 + 0.001 * (x ** 2 + (np.roll(x, -1) ** 2))) ** 2)
def F30(x):
dim = len(x)
return 1 / 4000 * np.sum(x ** 2) - np.prod(np.cos(x / np.sqrt(np.arange(1, dim + 1)))) + np.random.rand()
```
注意:在函数F7、F8、F9、F13、F17、F18、F22、F23、F24、F26、F27和F29中,都含有随机项,每次计算结果可能会有所不同。