基准测试

将典型的EC基准测试函数重新分组,以便于轻松导入和基准测试示例。

单目标连续

多目标连续

二进制

符号回归

cigar()

fonseca()

chuang_f1()

kotanchek()

plane()

kursawe()

chuang_f2()

salustowicz_1d()

sphere()

schaffer_mo()

chuang_f3()

salustowicz_2d()

rand()

dtlz1()

royal_road1()

unwrapped_ball()

ackley()

dtlz2()

royal_road2()

rational_polynomial()

bohachevsky()

dtlz3()

rational_polynomial2()

griewank()

dtlz4()

sin_cos()

h1()

zdt1()

ripple()

himmelblau()

zdt2()

rastrigin()

zdt3()

rastrigin_scaled()

zdt4()

rastrigin_skew()

zdt6()

rosenbrock()

schaffer()

schwefel()

shekel()

持续优化

deap.benchmarks.cigar(individual)[源代码]

雪茄测试目标函数。

类型

最小化

范围

全局最优

\(x_i = 0, \forall i \in \lbrace 1 \ldots N\rbrace\), \(f(\mathbf{x}) = 0\)

函数

\(f(\mathbf{x}) = x_0^2 + 10^6\sum_{i=1}^N\,x_i^2\)

deap.benchmarks.plane(individual)[源代码]

平面测试目标函数。

类型

最小化

范围

全局最优

\(x_i = 0, \forall i \in \lbrace 1 \ldots N\rbrace\), \(f(\mathbf{x}) = 0\)

函数

\(f(\mathbf{x}) = x_0\)

deap.benchmarks.sphere(individual)[源代码]

球体测试目标函数。

类型

最小化

范围

全局最优

\(x_i = 0, \forall i \in \lbrace 1 \ldots N\rbrace\), \(f(\mathbf{x}) = 0\)

函数

\(f(\mathbf{x}) = \sum_{i=1}^Nx_i^2\)

deap.benchmarks.rand(individual)[源代码]

随机测试目标函数。

类型

最小化或最大化

范围

全局最优

函数

\(f(\mathbf{x}) = \text{\texttt{random}}(0,1)\)

deap.benchmarks.ackley(individual)[源代码]

Ackley 测试目标函数。

类型

最小化

范围

\(x_i \in [-15, 30]\)

全局最优

\(x_i = 0, \forall i \in \lbrace 1 \ldots N\rbrace\), \(f(\mathbf{x}) = 0\)

函数

:math:`f(mathbf{x}) = 20 - 20expleft(-0.2sqrt{frac{1}{N}

sum_{i=1}^N x_i^2} right) + e - expleft(frac{1}{N}sum_{i=1}^N cos(2pi x_i) right)

deap.benchmarks.bohachevsky(individual)[源代码]

Bohachevsky 测试目标函数。

类型

最小化

范围

\(x_i \in [-100, 100]\)

全局最优

\(x_i = 0, \forall i \in \lbrace 1 \ldots N\rbrace\), \(f(\mathbf{x}) = 0\)

函数

:math:`f(mathbf{x}) = sum_{i=1}^{N-1}(x_i^2 + 2x_{i+1}^2 -

0.3cos(3pi x_i) - 0.4cos(4pi x_{i+1}) + 0.7)

deap.benchmarks.griewank(individual)[源代码]

Griewank 测试目标函数。

类型

最小化

范围

\(x_i \in [-600, 600]\)

全局最优

\(x_i = 0, \forall i \in \lbrace 1 \ldots N\rbrace\), \(f(\mathbf{x}) = 0\)

函数

:math:`f(mathbf{x}) = frac{1}{4000}sum_{i=1}^N,x_i^2 -

prod_{i=1}^Ncosleft(frac{x_i}{sqrt{i}}right) + 1`

deap.benchmarks.h1(individual)[源代码]

包含几个局部最大值的简单二维函数。来源:《并行遗传算法在解决复杂优化问题中的优势》,A. J. Knoek van Soest 和 L. J. R. Richard Casius,J. Biomech. Eng. 125, 141 (2003)

类型

最大化

范围

\(x_i \in [-100, 100]\)

全局最优

\(\mathbf{x} = (8.6998, 6.7665)\), \(f(\mathbf{x}) = 2\)n

函数

:math:`f(mathbf{x}) = frac{sin(x_1 - frac{x_2}{8})^2 +

frac{sin(x_2 + frac{x_1}{8})^2}{sqrt{(x_1 - 8.6998)^2 + (x_2 - 6.7665)^2} + 1}`

deap.benchmarks.himmelblau(individual)[源代码]

Himmelblau 函数是多模态的,在 \([-6, 6]^2\) 中有 4 个定义的最小值。

类型

最小化

范围

\(x_i \in [-6, 6]\)

全局最优

\(\mathbf{x}_1 = (3.0, 2.0)\), \(f(\mathbf{x}_1) = 0\)n \(\mathbf{x}_2 = (-2.805118, 3.131312)\), \(f(\mathbf{x}_2) = 0\)n \(\mathbf{x}_3 = (-3.779310, -3.283186)\), \(f(\mathbf{x}_3) = 0\)n \(\mathbf{x}_4 = (3.584428, -1.848126)\), \(f(\mathbf{x}_4) = 0\)n

函数

\(f(x_1, x_2) = (x_1^2 + x_2 - 11)^2 + (x_1 + x_2^2 -7)^2\)

deap.benchmarks.rastrigin(individual)[源代码]

Rastrigin 测试目标函数。

类型

最小化

范围

\(x_i \in [-5.12, 5.12]\)

全局最优

\(x_i = 0, \forall i \in \lbrace 1 \ldots N\rbrace\), \(f(\mathbf{x}) = 0\)

函数

\(f(\mathbf{x}) = 10N + \sum_{i=1}^N x_i^2 - 10 \cos(2\pi x_i)\)

deap.benchmarks.rastrigin_scaled(individual)[源代码]

缩放Rastrigin测试目标函数。

\(f_{\text{RastScaled}}(\mathbf{x}) = 10N + \sum_{i=1}^N\)

left(10^{left(frac{i-1}{N-1}right)} x_i right)^2 - 10cosleft(2pi 10^{left(frac{i-1}{N-1}right)} x_i right)

deap.benchmarks.rastrigin_skew(individual)[源代码]

偏斜Rastrigin测试目标函数。

\(f_{\text{RastSkew}}(\mathbf{x}) = 10N + \sum_{i=1}^N \left(y_i^2 - 10 \cos(2\pi x_i)\right)\)

:math:`text{其中 } y_i = `
begin{cases}

10cdot x_i & text{ 如果 } x_i > 0,\ x_i & text{ 否则 }

end{cases}`

deap.benchmarks.rosenbrock(individual)[源代码]

Rosenbrock 测试目标函数。

类型

最小化

范围

全局最优

\(x_i = 1, \forall i \in \lbrace 1 \ldots N\rbrace\), \(f(\mathbf{x}) = 0\)

函数

\(f(\mathbf{x}) = \sum_{i=1}^{N-1} (1-x_i)^2 + 100 (x_{i+1} - x_i^2 )^2\)

deap.benchmarks.schaffer(individual)[源代码]

Schaffer 测试目标函数。

类型

最小化

范围

\(x_i \in [-100, 100]\)

全局最优

\(x_i = 0, \forall i \in \lbrace 1 \ldots N\rbrace\), \(f(\mathbf{x}) = 0\)

函数

:math:`f(mathbf{x}) = sum_{i=1}^{N-1} (x_i^2+x_{i+1}^2)^{0.25} cdot

left[ sin^2(50cdot(x_i^2+x_{i+1}^2)^{0.10}) + 1.0 right]`

deap.benchmarks.schwefel(individual)[源代码]

Schwefel 测试目标函数。

类型

最小化

范围

\(x_i \in [-500, 500]\)

全局最优

\(x_i = 420.96874636, \forall i \in \lbrace 1 \ldots N\rbrace\), \(f(\mathbf{x}) = 0\)

函数

:math:`f(mathbf{x}) = 418.9828872724339cdot N -

sum_{i=1}^N,x_isinleft(sqrt{|x_i|}right)`

deap.benchmarks.shekel(individual, a, c)[源代码]

Shekel 多模态函数可以有任意数量的最大值。最大值的数量由任意一个参数 ac 的长度给出,a 是一个大小为 \(M imes N\) 的矩阵,其中 M 是最大值的数量,N 是维度的数量,而 c 是一个 \(M imes 1\) 的向量。

\(f_\text{Shekel}(\mathbf{x}) = \sum_{i = 1}^{M} \frac{1}{c_{i} + \sum_{j = 1}^{N} (x_{j} - a_{ij})^2 }\)

以下图表使用

\(\mathcal{A} = \begin{bmatrix} 0.5 & 0.5 \\ 0.25 & 0.25 \\ 0.25 & 0.75 \\ 0.75 & 0.25 \\ 0.75 & 0.75 \end{bmatrix}\)\(\mathbf{c} = \begin{bmatrix} 0.002 \\ 0.005 \\ 0.005 \\ 0.005 \\ 0.005 \end{bmatrix}\),从而在 \(\mathbb{R}^2\) 中定义了5个最大值。

多目标

deap.benchmarks.fonseca(individual)[源代码]

Fonseca 和 Fleming 的多目标函数。来自:C. M. Fonseca 和 P. J. Fleming,“多目标优化与多约束处理与进化算法——第二部分:应用示例”,IEEE 系统、人与控制论汇刊,1998年。

\(f_{\text{Fonseca}1}(\mathbf{x}) = 1 - e^{-\sum_{i=1}^{3}(x_i - \frac{1}{\sqrt{3}})^2}\)

\(f_{\text{Fonseca}2}(\mathbf{x}) = 1 - e^{-\sum_{i=1}^{3}(x_i + \frac{1}{\sqrt{3}})^2}\)

deap.benchmarks.kursawe(individual)[源代码]

Kursawe 多目标函数。

\(f_{\text{Kursawe}1}(\mathbf{x}) = \sum_{i=1}^{N-1} -10 e^{-0.2 \sqrt{x_i^2 + x_{i+1}^2} }\)

\(f_{\text{Kursawe}2}(\mathbf{x}) = \sum_{i=1}^{N} |x_i|^{0.8} + 5 \sin(x_i^3)\)

deap.benchmarks.schaffer_mo(individual)[源代码]

Schaffer 的单属性 个体 上的多目标函数。来自:J. D. Schaffer,“使用向量评估遗传算法的多目标优化”,在第一届遗传算法国际会议论文集中,1987年。

\(f_{\text{Schaffer}1}(\mathbf{x}) = x_1^2\)

\(f_{\text{Schaffer}2}(\mathbf{x}) = (x_1-2)^2\)

deap.benchmarks.dtlz1(individual, obj)[源代码]

DTLZ1 多目标函数。它返回一个 obj 值的元组。个体必须至少有 obj 个元素。来自:K. Deb, L. Thiele, M. Laumanns 和 E. Zitzler。可扩展多目标优化测试问题。CEC 2002,第 825 - 830 页,IEEE 出版社,2002 年。

\(g(\mathbf{x}_m) = 100\left(|\mathbf{x}_m| + \sum_{x_i \in \mathbf{x}_m}\left((x_i - 0.5)^2 - \cos(20\pi(x_i - 0.5))\right)\right)\)

\(f_{\text{DTLZ1}1}(\mathbf{x}) = \frac{1}{2} (1 + g(\mathbf{x}_m)) \prod_{i=1}^{m-1}x_i\)

\(f_{\text{DTLZ1}2}(\mathbf{x}) = \frac{1}{2} (1 + g(\mathbf{x}_m)) (1-x_{m-1}) \prod_{i=1}^{m-2}x_i\)

\(\ldots\)

\(f_{\text{DTLZ1}m-1}(\mathbf{x}) = \frac{1}{2} (1 + g(\mathbf{x}_m)) (1 - x_2) x_1\)

\(f_{\text{DTLZ1}m}(\mathbf{x}) = \frac{1}{2} (1 - x_1)(1 + g(\mathbf{x}_m))\)

其中 \(m\) 是目标的数量,而 \(\mathbf{x}_m\) 是一个向量,表示个体在 \(n > m\) 维度中的剩余属性 \([x_m~\ldots~x_n]\)

deap.benchmarks.dtlz2(individual, obj)[源代码]

DTLZ2 多目标函数。它返回一个 obj 值的元组。个体必须至少有 obj 个元素。来源:K. Deb, L. Thiele, M. Laumanns 和 E. Zitzler。可扩展多目标优化测试问题。CEC 2002,第825-830页,IEEE出版社,2002年。

\(g(\mathbf{x}_m) = \sum_{x_i \in \mathbf{x}_m} (x_i - 0.5)^2\)

\(f_{\text{DTLZ2}1}(\mathbf{x}) = (1 + g(\mathbf{x}_m)) \prod_{i=1}^{m-1} \cos(0.5x_i\pi)\)

\(f_{\text{DTLZ2}2}(\mathbf{x}) = (1 + g(\mathbf{x}_m)) \sin(0.5x_{m-1}\pi ) \prod_{i=1}^{m-2} \cos(0.5x_i\pi)\)

\(\ldots\)

\(f_{\text{DTLZ2}m}(\mathbf{x}) = (1 + g(\mathbf{x}_m)) \sin(0.5x_{1}\pi )\)

其中 \(m\) 是目标的数量,而 \(\mathbf{x}_m\) 是一个向量,表示个体在 \(n > m\) 维度中的剩余属性 \([x_m~\ldots~x_n]\)

deap.benchmarks.dtlz3(individual, obj)[源代码]

DTLZ3 多目标函数。它返回一个 obj 值的元组。个体必须至少有 obj 个元素。来源:K. Deb, L. Thiele, M. Laumanns 和 E. Zitzler。可扩展的多目标优化测试问题。CEC 2002,第825-830页,IEEE出版社,2002年。

\(g(\mathbf{x}_m) = 100\left(|\mathbf{x}_m| + \sum_{x_i \in \mathbf{x}_m}\left((x_i - 0.5)^2 - \cos(20\pi(x_i - 0.5))\right)\right)\)

\(f_{\text{DTLZ3}1}(\mathbf{x}) = (1 + g(\mathbf{x}_m)) \prod_{i=1}^{m-1} \cos(0.5x_i\pi)\)

\(f_{\text{DTLZ3}2}(\mathbf{x}) = (1 + g(\mathbf{x}_m)) \sin(0.5x_{m-1}\pi ) \prod_{i=1}^{m-2} \cos(0.5x_i\pi)\)

\(\ldots\)

\(f_{\text{DTLZ3}m}(\mathbf{x}) = (1 + g(\mathbf{x}_m)) \sin(0.5x_{1}\pi )\)

其中 \(m\) 是目标的数量,而 \(\mathbf{x}_m\) 是一个向量,表示个体在 \(n > m\) 维度中的剩余属性 \([x_m~\ldots~x_n]\)

deap.benchmarks.dtlz4(individual, obj, alpha)[源代码]

DTLZ4多目标函数。它返回一个包含*obj*值的元组。个体必须至少有*obj*个元素。*alpha*参数允许在:func:dtlz2`中进行元变量映射 :math:`x_i rightarrow x_i^alpha,作者建议 \(\alpha = 100\)。来自:K. Deb, L. Thiele, M. Laumanns 和 E. Zitzler。可扩展多目标优化测试问题。CEC 2002,第825-830页,IEEE出版社,2002年。

\(g(\mathbf{x}_m) = \sum_{x_i \in \mathbf{x}_m} (x_i - 0.5)^2\)

\(f_{\text{DTLZ4}1}(\mathbf{x}) = (1 + g(\mathbf{x}_m)) \prod_{i=1}^{m-1} \cos(0.5x_i^\alpha\pi)\)

\(f_{\text{DTLZ4}2}(\mathbf{x}) = (1 + g(\mathbf{x}_m)) \sin(0.5x_{m-1}^\alpha\pi ) \prod_{i=1}^{m-2} \cos(0.5x_i^\alpha\pi)\)

\(\ldots\)

\(f_{\text{DTLZ4}m}(\mathbf{x}) = (1 + g(\mathbf{x}_m)) \sin(0.5x_{1}^\alpha\pi )\)

其中 \(m\) 是目标的数量,而 \(\mathbf{x}_m\) 是一个向量,表示个体在 \(n > m\) 维度中的剩余属性 \([x_m~\ldots~x_n]\)

deap.benchmarks.zdt1(individual)[源代码]

ZDT1 多目标函数。

\(g(\mathbf{x}) = 1 + \frac{9}{n-1}\sum_{i=2}^n x_i\)

\(f_{\text{ZDT1}1}(\mathbf{x}) = x_1\)

\(f_{\text{ZDT1}2}(\mathbf{x}) = g(\mathbf{x})\left[1 - \sqrt{\frac{x_1}{g(\mathbf{x})}}\right]\)

deap.benchmarks.zdt2(individual)[源代码]

ZDT2 多目标函数。

\(g(\mathbf{x}) = 1 + \frac{9}{n-1}\sum_{i=2}^n x_i\)

\(f_{\text{ZDT2}1}(\mathbf{x}) = x_1\)

\(f_{\text{ZDT2}2}(\mathbf{x}) = g(\mathbf{x})\left[1 - \left(\frac{x_1}{g(\mathbf{x})}\right)^2\right]\)

deap.benchmarks.zdt3(individual)[源代码]

ZDT3 多目标函数。

\(g(\mathbf{x}) = 1 + \frac{9}{n-1}\sum_{i=2}^n x_i\)

\(f_{\text{ZDT3}1}(\mathbf{x}) = x_1\)

\(f_{\text{ZDT3}2}(\mathbf{x}) = g(\mathbf{x})\left[1 - \sqrt{\frac{x_1}{g(\mathbf{x})}} - \frac{x_1}{g(\mathbf{x})}\sin(10\pi x_1)\right]\)

deap.benchmarks.zdt4(individual)[源代码]

ZDT4 多目标函数。

\(g(\mathbf{x}) = 1 + 10(n-1) + \sum_{i=2}^n \left[ x_i^2 - 10\cos(4\pi x_i) \right]\)

\(f_{\text{ZDT4}1}(\mathbf{x}) = x_1\)

\(f_{\text{ZDT4}2}(\mathbf{x}) = g(\mathbf{x})\left[ 1 - \sqrt{x_1/g(\mathbf{x})} \right]\)

deap.benchmarks.zdt6(individual)[源代码]

ZDT6 多目标函数。

\(g(\mathbf{x}) = 1 + 9 \left[ \left(\sum_{i=2}^n x_i\right)/(n-1) \right]^{0.25}\)

\(f_{\text{ZDT6}1}(\mathbf{x}) = 1 - \exp(-4x_1)\sin^6(6\pi x_1)\)

\(f_{\text{ZDT6}2}(\mathbf{x}) = g(\mathbf{x}) \left[ 1 - (f_{\text{ZDT6}1}(\mathbf{x})/g(\mathbf{x}))^2 \right]\)

二进制优化

deap.benchmarks.binary.chuang_f1(individual)[源代码]

来自 : Chung-Yao Chuang 和 Wen-Lian Hsu 的多元多模型方法用于全局多模态问题的二元欺骗函数。

该函数接受40+1维的单个输入,并在 [1,1,…,1] 和 [0,0,…,0] 处有两个全局最优解。

deap.benchmarks.binary.chuang_f2(individual)[源代码]

来自 : Chung-Yao Chuang 和 Wen-Lian Hsu 的多元多模型方法用于全局多模态问题的二元欺骗函数。

该函数接受40+1维的个体,并在 [1,1,…,0,0], [0,0,…,1,1], [1,1,…,1] 和 [0,0,…,0] 处有四个全局最优解。

deap.benchmarks.binary.chuang_f3(individual)[源代码]

来自 : Chung-Yao Chuang 和 Wen-Lian Hsu 的多元多模型方法用于全局多模态问题的二元欺骗函数。

该函数接受40+1维的单个输入,并在 [1,1,…,1] 和 [0,0,…,0] 处有两个全局最优解。

deap.benchmarks.binary.royal_road1(individual, order)[源代码]

在 Melanie Mitchell 的著作《遗传算法导论》中提出的 Royal Road 函数 R1。

deap.benchmarks.binary.royal_road2(individual, order)[源代码]

Melanie Mitchell 在《遗传算法导论》中提出的 Royal Road 函数 R2。

deap.benchmarks.binary.bin2float(min_, max_, nbits)[源代码]

将一个二进制数组转换为一个浮点数数组,其中每个浮点数由 nbits 组成,并且介于 min_max_ 之间,并返回装饰函数的执行结果。

符号回归

deap.benchmarks.gp.kotanchek(data)[源代码]

Kotanchek 基准函数。

范围

\(\mathbf{x} \in [-1, 7]^2\)

函数

\(f(\mathbf{x}) = \frac{e^{-(x_1 - 1)^2}}{3.2 + (x_2 - 2.5)^2}\)

deap.benchmarks.gp.salustowicz_1d(data)[源代码]

Salustowicz 基准函数。

范围

\(x \in [0, 10]\)

函数

\(f(x) = e^{-x} x^3 \cos(x) \sin(x) (\cos(x) \sin^2(x) - 1)\)

deap.benchmarks.gp.salustowicz_2d(data)[源代码]

Salustowicz 基准函数。

范围

\(\mathbf{x} \in [0, 7]^2\)

函数

\(f(\mathbf{x}) = e^{-x_1} x_1^3 \cos(x_1) \sin(x_1) (\cos(x_1) \sin^2(x_1) - 1) (x_2 -5)\)

deap.benchmarks.gp.unwrapped_ball(data)[源代码]

未包装的球基准函数。

范围

\(\mathbf{x} \in [-2, 8]^n\)

函数

\(f(\mathbf{x}) = \\frac{10}{5 + \sum_{i=1}^n (x_i - 3)^2}\)

deap.benchmarks.gp.rational_polynomial(data)[源代码]

有理多项式球基准函数。

范围

\(\mathbf{x} \in [0, 2]^3\)

函数

\(f(\mathbf{x}) = \\frac{30 * (x_1 - 1) (x_3 - 1)}{x_2^2 (x_1 - 10)}\)

deap.benchmarks.gp.rational_polynomial2(data)[源代码]

有理多项式基准函数。

范围

\(\mathbf{x} \in [0, 6]^2\)

函数

\(f(\mathbf{x}) = \\frac{(x_1 - 3)^4 + (x_2 - 3)^3 - (x_2 - 3)}{(x_2 - 2)^4 + 10}\)

deap.benchmarks.gp.sin_cos(data)[源代码]

正弦余弦基准函数。

范围

\(\mathbf{x} \in [0, 6]^2\)

函数

\(f(\mathbf{x}) = 6\sin(x_1)\cos(x_2)\)

deap.benchmarks.gp.ripple(data)[源代码]

Ripple 基准函数。

范围

\(\mathbf{x} \in [-5, 5]^2\)

函数

\(f(\mathbf{x}) = (x_1 - 3) (x_2 - 3) + 2 \sin((x_1 - 4) (x_2 -4))\)

移动峰值基准

对 Jurgen Branke 的 Moving Peaks Benchmark 的重新实现。增加了 du Plessis 和 Engelbrecht, 2013, 具有波动最优数量的自适应环境 中提出的波动峰值数量。

class deap.benchmarks.movingpeaks.MovingPeaks(self, dim[, pfunc][, npeaks][, bfunc][, random][, ...])[源代码]

移动峰值基准是一个随时间变化的适应度函数。它由多个峰值组成,这些峰值在高度、宽度和位置上发生变化。峰值函数由 pfunc 给出,可以是函数对象或函数对象列表(默认是 function1())。峰值的数量由 npeaks 决定(默认是 5)。这个参数可以是整数或序列。如果设置为整数,峰值数量不会改变;如果设置为包含3个元素的序列,峰值数量将在该序列的第一个和第三个元素之间波动,第二个元素是初始峰值数量。在波动峰值数量时,必须包含参数 number_severity,它表示允许变化的峰值比例。搜索域的维度是 dim。还可以给定一个基函数 bfunc 作为静态景观(默认没有基函数)。参数 random 用于为移动峰值提供独立的随机数生成器,以确保进化不受此对象生成的数字影响(默认使用Python模块 random 中的随机函数)。下表列出了设置基准所需的各种其他关键字参数,默认参数基于此基准的场景1。

参数

SCENARIO_1 (默认)

SCENARIO_2

SCENARIO_3

详情

pfunc

function1()

cone()

cone()

峰值函数或峰值函数列表。

npeaks

5

10

50

峰的数量。如果是整数,峰的数量不会改变,如果是序列,它将波动 [最小值, 当前值, 最大值]。

bfunc

None

None

lambda x: 10

基础静态函数。

min_coord

0.0

0.0

0.0

峰中心的最小坐标。

max_coord

100.0

100.0

100.0

峰值中心的坐标最大值。

min_height

30.0

30.0

30.0

峰的最小高度。

max_height

70.0

70.0

70.0

峰的最大高度。

uniform_height

50.0

50.0

0

所有山峰的起始高度,如果 uniform_height <= 0,则每个山峰的初始高度将随机设置。

min_width

0.0001

1.0

1.0

峰的最小宽度。

max_width

0.2

12.0

12.0

峰值的最大宽度

uniform_width

0.1

0

0

所有峰值的起始宽度,如果 uniform_width <= 0,则每个峰值的初始宽度将随机设置。

lambda_

0.0

0.5

0.5

变化之间的相关性。

move_severity

1.0

1.5

1.0

当峰值变化时,单个峰值移动的距离。

height_severity

7.0

7.0

1.0

当峰发生变化时,峰高变化的标准差。

width_severity

0.01

1.0

0.5

当峰变化时,峰宽变化的标准偏差。

period

5000

5000

1000

两次变更之间的时间段。

本模块的字典 SCENARIO_1SCENARIO_2SCENARIO_3 定义了这些参数的默认值。场景 3 需要一个常数基函数,可以作为 lambda 函数 lambda x: constant 给出。

以下展示了场景1的一个示例,其中高度和宽度不均匀。

__call__(self, individual[, count])[源代码]

使用当前基准配置评估给定的 个体

参数:
  • indidivudal – 要评估的个人。

  • count – 是否将此评估计入总评估次数。(默认为 True

changePeaks()[源代码]

排序峰值以改变位置、高度、宽度和数量。

globalMaximum()[源代码]

返回全局最大值及其位置。

maximums()[源代码]

返回所有可见的最大值及其位置,按全局最大值优先排序。

deap.benchmarks.movingpeaks.cone(individual, position, height, width)[源代码]

用于场景2和3的锥峰函数。

\(f(\mathbf{x}) = h - w \sqrt{\sum_{i=1}^N (x_i - p_i)^2}\)

deap.benchmarks.movingpeaks.function1(individual, position, height, width)[源代码]

用于场景1的函数1峰值函数。

\(f(\mathbf{x}) = \\frac{h}{1 + w \sqrt{\sum_{i=1}^N (x_i - p_i)^2}}\)

基准测试工具

包含在基准测试算法时非常有用的工具的模块

deap.benchmarks.tools.convergence(first_front, optimal_front)[源代码]

给定一个帕累托前沿 first_front 和最优帕累托前沿,此函数返回一个收敛度量,如K. Deb在原始NSGA-II文章中所解释的那样。值越小,前沿越接近最优前沿。

deap.benchmarks.tools.diversity(first_front, first, last)[源代码]

给定一个帕累托前沿 first_front 和最优帕累托前沿的两个极点,此函数返回一个多样性度量,如K. Deb在原始NSGA-II文章中所解释的那样。值越小,前沿越好。

deap.benchmarks.tools.noise(noise)[源代码]

Decorator for evaluation functions, it evaluates the objective function and adds noise by calling the function(s) provided in the noise argument. The noise functions are called without any argument, consider using the Toolbox or Python’s functools.partial() to provide any required argument. If a single function is provided it is applied to all objectives of the evaluation function. If a list of noise functions is provided, it must be of length equal to the number of objectives. The noise argument also accept None, which will leave the objective without noise.

这个装饰器为被装饰的函数添加了一个 noise() 方法。

noise.noise(noise)[源代码]

将当前噪声设置为 noise。在装饰评估函数后,该函数将可以直接从函数对象中访问。:

prand = functools.partial(random.gauss, mu=0.0, sigma=1.0)

@noise(prand)
def evaluate(individual):
    return sum(individual),

# This will remove noise from the evaluation function
evaluate.noise(None)
deap.benchmarks.tools.rotate(matrix)[源代码]

用于评估函数的装饰器,它通过 matrix 旋转目标函数,该 matrix 应为一个有效的正交 NxN 旋转矩阵,其中 N 是单个个体的长度。调用装饰函数时,应将待评估的个体作为第一个参数。实际上,反向旋转矩阵应用于个体,并将结果列表传递给评估函数。因此,评估函数不应期望接收到个体,因为它将接收到一个普通的列表(numpy.array)。乘法操作使用 numpy 完成。

这个装饰器为被装饰的函数添加了一个 rotate() 方法。

备注

可以通过QR分解创建一个随机的正交矩阵Q。:

A = numpy.random.random((n,n))
Q, _ = numpy.linalg.qr(A)
rotate.rotate(matrix)[源代码]

将当前旋转设置为 matrix 。在装饰评估函数之后,此函数将可以直接从函数对象中调用。:

# Create a random orthogonal matrix
A = numpy.random.random((n,n))
Q, _ = numpy.linalg.qr(A)

@rotate(Q)
def evaluate(individual):
    return sum(individual),

# This will reset rotation to identity
evaluate.rotate(numpy.identity(n))
deap.benchmarks.tools.scale(factor)[源代码]

用于评估函数的装饰器,它通过 factor 缩放目标函数,该 factor 的长度应与个体大小相同。调用装饰函数时,应将待评估的个体作为第一个参数。实际上,逆因子向量应用于个体,并将结果列表提供给评估函数。因此,评估函数不应期望个体,因为它将接收一个普通列表。

这个装饰器为被装饰的函数添加了一个 scale() 方法。

scale.scale(factor)[源代码]

将当前比例设置为 factor。在装饰评估函数后,该函数将可以直接从函数对象中调用。:

@scale([0.25, 2.0, ..., 0.1])
def evaluate(individual):
    return sum(individual),

# This will cancel the scaling
evaluate.scale([1.0, 1.0, ..., 1.0])
deap.benchmarks.tools.translate(vector)[源代码]

用于评估函数的装饰器,它通过与个体大小相同长度的 向量 来转换目标函数。当调用装饰后的函数时,应将待评估的个体作为第一个参数。实际上,反向翻译向量应用于个体,并将结果列表提供给评估函数。因此,评估函数不应期望接收到个体,因为它将接收到一个普通的列表。

这个装饰器为被装饰的函数添加了一个 translate() 方法。

translate.translate(vector)[源代码]

将当前翻译设置为 vector。在装饰评估函数后,此函数将可以直接从函数对象中调用。:

@translate([0.25, 0.5, ..., 0.1])
def evaluate(individual):
    return sum(individual),

# This will cancel the translation
evaluate.translate([0.0, 0.0, ..., 0.0])