Tunny Icon
TunnyDocs

The next-gen Grasshopper optimization tool.

Benchmark

このページでは、Tunny に用意されているベンチマーク関数のコンポーネントを紹介します。 各関数の数式や形状はベンチマーク関数セクションで説明しているため、ここでは概要のみを説明します。

ベンチマーク関数は、最適値と、そのときの変数の値があらかじめわかっている関数です。 そのため、実際の設計問題に取りかかる前に、選んだサンプラーがどのように解へ近づいていくかを確かめる目的で使用できます。

単目的関数が 6 種類、多目的関数が 4 種類用意されています。

コンポーネントを配置すると、適切な範囲が設定された GenePool に接続され、Vars 入力に接続されます。 変数の範囲を自分で決める必要がないので、配置してすぐに最適化を試せます。

デフォルトは 10 変数ですが、変数の数は任意に設定できます。 Griewank のように、次元数が増えるほど難しくなる関数もあります。 変数の数を変えることで、サンプラーが難しい問題にどこまで対応できるかを比べられます。

Delay 入力に秒数を入力すると、目的関数の処理にその秒数がかかるようになるため、実際の重い解析をシミュレートしたい場合に便利です。 ベンチマーク関数そのものの計算はすぐに終わるので、解析を伴う最適化と同じ感覚で挙動を確認したい場合は、この入力で処理時間を近づけてください。

以下のように Tunny に接続することで、ベンチマーク関数の最適化を実行できます。

image

サマリー

単目的関数

名前 説明 最適値 最適変数
Ackley 多数の局所最小値と原点に 1 つの大域最小値を持つ多峰性関数です。指数関数と余弦関数の組み合わせにより、複雑なランドスケープを形成します。 0 x* = (0, 0, ..., 0)
Griewank 次元数が増えるほど難しくなる多峰性関数です。原点に大域最小値が 1 つあり、多数の局所最小値を持ちます。 0 x* = (0, 0, ..., 0)
Rastrigin 規則的なパターンで多数の局所最小値が並ぶ、高度に多峰性の関数です。球面関数に余弦変調を加えることで複数のピークと谷を形成しています。 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)

多目的関数

名前 説明
DTLZ1 線形パレートフロントを持つスケーラブルな多目的テスト問題です。目的数が増えるほど難しくなる多峰性ランドスケープを特徴とし、パレートフロントは線形超平面を形成します。
DTLZ2 球面パレートフロントを持つスケーラブルな多目的テスト問題です。DTLZ1 より単純な単峰性構造を持ちます。パレートフロントは目的空間において単位球面を形成し、収束性のテストに有用です。
ZDT1 凸型パレートフロントを持つ 2 目的テスト関数です。一方の目的が Sphere 関数で、もう一方が凸型のトレードオフを形成するシンプルな構造です。アルゴリズム比較に広く使用されます。
ZDT2 非凸(凹型)パレートフロントを持つ 2 目的テスト関数です。ZDT1 に似ていますが、パレートフロントが凹型であるため、凸性を前提とするアルゴリズムにはより難しい問題となります。