analytical ソルバー#
analytical は探索アルゴリズムの性能評価を目的とした、
定義済みのベンチマーク関数 \(f(x)\) を計算する Solver です。
入力パラメータ#
solver セクション以下の function_name パラメータで用いる関数を指定します。
function_name形式: 文字列
説明: 関数名。以下の関数が選べます。
quadratics二次形式(球面関数)
\[f(\vec{x}) = \sum_{i=1}^N x_i^2\]大域最適値: \(f(\vec{x}^*) = 0 \quad (\forall_i\, x_i^* = 0)\)
quartics2つの大域最適解をもつ4次関数
\[f(\vec{x}) = \left(\frac{1}{N}\sum_{i=1}^N (x_i - 1)^2\right) \left(\frac{1}{N}\sum_{i=1}^N (x_i + 1)^2\right)\]大域最適値: \(f(\vec{x}^*) = 0 \quad (\forall_i\, x_i^* = 1\) および \(\forall_i\, x_i^* = -1)\)
鞍点: \(f(\vec{0}) = 1\)
ackley-
\[f(\vec{x}) = 20 + e - 20\exp\!\left[-0.2\sqrt{\frac{1}{N}\sum_{i=1}^N x_i^2}\right] - \exp\!\left[\frac{1}{N}\sum_{i=1}^N\cos(2\pi x_i)\right]\]
大域最適値: \(f(\vec{x}^*) = 0 \quad (\forall_i\, x_i^* = 0)\) 。多数の局所最適解を持ちます。
-
alpineAlpine 関数
\[f(\vec{x}) = \sum_{i=1}^N \left|x_i \sin(x_i) + 0.1\, x_i\right|\]大域最適値: \(f(\vec{x}^*) = 0 \quad (\forall_i\, x_i^* = 0)\)
exponential指数関数
\[f(\vec{x}) = -\exp\!\left(-\frac{1}{2}\sum_{i=1}^N x_i^2\right)\]大域最適値: \(f(\vec{x}^*) = -1 \quad (\forall_i\, x_i^* = 0)\)
griewankGriewank 型関数
\[f(\vec{x}) = 1 + \frac{1}{4000}\sum_{i=1}^N x_i^2 + \prod_{i=1}^N \cos\!\left(\frac{x_i}{\sqrt{i}}\right)\]注意: 余弦積の項を加算(減算ではない)しているため、標準の Griewank 関数とは異なります。
himmelblauHimmelblau 関数 (\(N = 2\) のみ)
\[f(x, y) = (x^2 + y - 11)^2 + (x + y^2 - 7)^2\]大域最適値: \(f = 0\) の点が4つあります: \((3,\,2)\), \((-2.805118,\,3.131312)\), \((-3.779310,\,-3.283186)\), \((3.584428,\,-1.848126)\)
michalewicz-
\[f(\vec{x}) = -\sum_{i=1}^N \sin(x_i)\left[\sin\!\left(\frac{i\, x_i^2}{\pi}\right)\right]^{20}\]
大域最適値および位置は次元に依存します。局所最適解は \(d!\) 個存在します。 \(N = 2\) のとき \(f(\vec{x}^*) \approx -1.8013 \quad (\vec{x}^* \approx (2.2051,\,1.5698))\)。 \(N = 5\) のとき \(f(\vec{x}^*) \approx -4.6876\)。 \(N = 10\) のとき \(f(\vec{x}^*) \approx -9.6602\)。
-
qingQing 関数
\[f(\vec{x}) = \sum_{i=1}^N \left(x_i^2 - i\right)^2\]大域最適値: \(f(\vec{x}^*) = 0 \quad (x_i^* = \pm\sqrt{i},\; i = 1, \ldots, N)\)
rastrigin-
\[f(\vec{x}) = 10N + \sum_{i=1}^N \left[x_i^2 - 10\cos(2\pi x_i)\right]\]
大域最適値: \(f(\vec{x}^*) = 0 \quad (\forall_i\, x_i^* = 0)\)
-
rosenbrock-
\[f(\vec{x}) = \sum_{i=1}^{N-1} \left[100(x_{i+1} - x_i^2)^2 + (x_i - 1)^2\right]\]
大域最適値: \(f(\vec{x}^*) = 0 \quad (\forall_i\, x_i^* = 1)\)
-
schafferSchaffer 関数(一般化版)
\[f(\vec{x}) = \sum_{i=1}^{N-1} \left[0.5 + \frac{\sin^2\!\left(x_i^2 + x_{i+1}^2\right) - 0.5}{\left(1 + 0.001\,(x_i^2 + x_{i+1}^2)\right)^2}\right]\]大域最適値: \(f(\vec{x}^*) = 0 \quad (\forall_i\, x_i^* = 0)\)
schwefel-
\[f(\vec{x}) = 418.9829\,N - \sum_{i=1}^N x_i \sin\!\left(\sqrt{|x_i|}\right)\]
大域最適値: \(f(\vec{x}^*) \approx 0 \quad (\forall_i\, x_i^* \approx 420.9687)\)
-
linear_regression_testガウスノイズ \(\mathcal{N}(0, \sigma^2)\) をもつ線形回帰モデル \(y = at + b\) の負の対数尤度。 データ \(\{(t_k, y_k)\} = \{(1,1),(2,3),(3,2),(4,4),(5,3),(6,5)\}\) で学習。 パラメータは \(a = x_1\), \(b = x_2\), \(\log\sigma^2 = x_3\) です(\(N = 3\) のみ)。
\[f(a, b, s) = \frac{1}{2}\left[n\,s + e^{-s}\sum_{k=1}^{n}(a\,t_k + b - y_k)^2\right] \quad (s = \log\sigma^2,\; n = 6)\]大域最適値: \(f(\vec{x}^*) \approx 1.005071 \quad (\vec{x}^* \approx (0.628571,\,0.8,\,-0.664976))\)