ベンチマーク関数
本セクションでは、Tunny に用意されているベンチマーク関数を紹介します。
Tunny には、最適化アルゴリズムの性能を確認するためのベンチマーク関数が用意されています。 実際の設計モデルで試そうとすると 1 回の評価に時間がかかるうえに、最適解そのものがわからないため、得られた結果が良いのかどうかを判断できません。 ベンチマーク関数では最適値と最適変数があらかじめわかっているので、サンプラーがどこまで最適解に近づけたかを数値で比較できます。
用意されているのは単目的関数が 6 種類、多目的関数が 4 種類で、Grasshopper 上では
Benchmark コンポーネントから利用できます。
コンポーネントを配置することで、適切な範囲が設定された変数がまとめて用意されるので、すぐに最適化を試せます。
以下ではその一覧を示します。
各関数の数式や形状の詳細は、単目的関数と多目的関数のそれぞれのページで説明します。
単目的関数
| Name | Description | Optimal Value | Optimal Variables |
|---|---|---|---|
| Ackley | 多くの局所最小値と、原点に 1 つの大域最小値を持つ多峰性関数です。指数関数とコサイン関数の成分を含み、外側がほぼ平坦な複雑な landscape を形成します。 | 0 | x* = (0, 0, ..., 0) |
| Griewank | 次元数が増えるほど難易度が上がる多峰性関数です。原点に 1 つの大域最小値を持ち、局所最小値も多数存在します。コサイン成分が周期的な構造を作り出します。 | 0 | x* = (0, 0, ..., 0) |
| Rastrigin | 規則的なパターンで多数の局所最小値が配置された、非常に多峰性の高い関数です。sphere 関数をベースに、コサインによる変調を加えることで複数の山と谷を作り出します。 | 0 | x* = (0, 0, ..., 0) |
| Rosenbrock | 湾曲した谷の形状から「バナナ関数」として知られる、古典的な最適化ベンチマークです。非凸で、大域最小値は見つけにくい狭く湾曲した谷の中に 1 つだけ存在します。 | 0 | x* = (1, 1, ..., 1) |
| Schwefel | 大域最小値が局所最小値から遠く離れた位置にある、欺瞞的な多峰性関数です。大域最適解が探索空間の境界付近に位置する複雑な構造を持ちます。 | 0 | x* = (420.9687, 420.9687, ..., 420.9687) |
| Sphere | 原点に唯一の大域最小値を持つ、もっともシンプルなベンチマーク関数です。単峰性かつ凸であるため比較的最適化しやすく、アルゴリズムの基本性能をテストするのに有用です。 | 0 | x* = (0, 0, ..., 0) |
多目的関数
| Name | Description |
|---|---|
| DTLZ1 | 線形なパレートフロントを持つ、スケーラブルな多目的テスト問題です。目的関数の数が増えるほど難易度が増す多峰性の landscape を特徴とします。パレートフロントは線形の超平面を形成します。 |
| DTLZ2 | 球状のパレートフロントを持つ、スケーラブルな多目的テスト問題です。DTLZ1 よりシンプルで単峰性の構造を持ちます。パレートフロントは目的空間内の単位球を形成し、収束性のテストに有用です。 |
| ZDT1 | 凸のパレートフロントを持つ、2 目的のテスト関数です。1 つの目的関数が Sphere 関数で、もう 1 つが凸のトレードオフを作り出すシンプルな構造を持ちます。アルゴリズムの比較に広く使用されています。 |
| ZDT2 | 非凸のパレートフロントを持つ、2 目的のテスト関数です。ZDT1 に似ていますが、パレートフロントの形状が凹型であるため、パレートフロントの凸性を前提とするアルゴリズムにとってはより難しい問題となります。 |