Tunny Icon
TunnyDocs

The next-gen Grasshopper optimization tool.

NSGA-II

Non-dominated Sorting Genetic Algorithm II

NSGA-II は、遺伝的アルゴリズムに基づく多目的最適化アルゴリズムです。複数の目的が競合する問題に適しており、他の目的を悪化させることなくどの目的も改善できない解の集合であるパレートフロントを見つけることを目標とします。

多目的最適化とは

単目的最適化には唯一の最良解が存在します。一方、多目的最適化には通常、単一の「最良」解は存在しません。代わりに、トレードオフ解の集合が存在します。

A が解 B支配するとは、以下を満たす場合です。

  • A がすべての目的において B と少なくとも同等以上であり、かつ
  • A が少なくとも 1 つの目的において B よりも厳密に優れている

他のどの解にも支配されない解の集合がパレートフロントを形成します。

NSGA-II の仕組み

STEP1: 初期集団

個体(変数値の集合)の集団がランダムに生成され、評価されます。

STEP2: 非優越ソート

集団は支配関係に基づいてフロントに分類されます。

  • フロント 1: 他のどの解にも支配されない解(現在のパレートフロント)
  • フロント 2: フロント 1 の解にのみ支配される解
  • 以降同様に続く…

このランク付けは非優越ランクと呼ばれます。

STEP3: 混雑度距離

各フロント内で、各個体について混雑度距離(crowding distance)が計算されます。これは、目的空間内である個体が近傍からどれだけ孤立しているかを測る指標です。混雑度距離が大きい個体が優先されることで、パレートフロントに沿った多様性が促進されます。

STEP4: 選択、交叉、突然変異

以下の手順により新しい世代が生成されます。

  1. 選択: より良い非優越ランクを持つ個体を優先し、ランクが同じ場合は混雑度距離が大きい個体を優先する
  2. 交叉: 2 つの親解を組み合わせて子解を生成する
  3. 突然変異: 多様性を維持するために子解をランダムに摂動させる

Tunny は uniform(デフォルト)、blxalphasbxvsbxundxspx のいくつかの交叉方法をサポートしています。

STEP5: エリート主義

現在の集団と子集団の中から最良の個体が組み合わされ、集団サイズを維持するように選別されます。このエリート主義戦略により、過去の世代で見つかった良い解が失われることはありません。

STEP2 から STEP5 は、試行回数に達するまで繰り返されます。

NSGA-II を使うべき場面

  • 2 つ以上の目的関数がある場合
  • 多様なトレードオフ解の集合(パレートフロント全体)が欲しい場合
  • 目的関数の形状について強い事前知識がない場合
  • 十分な評価予算がある場合(遺伝的アルゴリズムは一般に、収束にベイズ的手法よりも多くの試行回数を必要とします)

Reference