CYBERNET

コラム用語集

粒子群最適化(Particle Swarm Optimization)

粒子群最適化(Particle Swarm Optimization、PSO)は、鳥の群れや魚の群れが環境の中で最適な場所を探す様子にヒントを得て開発された最適化手法です。このページでは、粒子群最適化の基本的な理論や手法についてご紹介します。

粒子群最適化とは?

まずは、粒子群最適化の基本的な理論について解説します。

群知能

粒子群最適化は、生物の群知能を模倣して開発された解析手法です。群知能とは、個々の生物が単純なルールに従いながらも、他の個体との相互作用を通じて、群全体として高度な行動を示す現象です。この現象は、アリ、鳥、イワシなどの群れでよく見られます。

粒子群最適化では、この群知能を応用して、多数の粒子(エージェント)から構成される群れを用いて最適解を探索します。各粒子は個別に最適解(局所最適解)を求めると同時に、他の粒子と共有される全体としての最適解(全体最適解)も探求します。これら二つの解探索をバランス良く行い、その中間点を最終的な解として選定することで、最適化プロセスを進めることが特徴です。

粒子の移動

図1:粒子群最適化の粒子移動イメージと計算式

粒子群最適化における粒子の移動メカニズムを、より詳細に説明します。粒子群最適化では、各粒子(エージェント)は独自の位置、方向、速度を持ち、これらを更新しながら最適解を探索します。粒子の移動は、その過去の動き(慣性速度)と、個々の経験(個人的な最適点への移動方向)、そして集団の経験(群全体の最適点への移動方向)に基づいて決定されます。

「個々の経験」とは、各エージェントが自身の探索過程で見つけた、これまでの最適な位置へ向かおうとする傾向です。一方、「集団の経験」とは、群れ全体が共有する、全体としての最適な位置への移動傾向を指します。これらの要素に乱数を加え、個々の経験と集団の経験の優先度を決定するパラメータを掛けることで、各粒子の具体的な移動先が決まります。

なお、粒子群最適化における計算の流れは以下のフローチャートの通りとなります。

図2:粒子群最適化の解析フローチャート

粒子群最適化の計算(単目的最適化)

これまでに粒子群最適化の基本的な計算方法について説明しましたが、Optimusでは、効率的かつ精度の高い最適化計算を実現するために「終了判定」と「制約条件の調整」という追加のパラメータが導入されています。以下では、これらのパラメータについて詳しく解説します。

終了判定

終了判定は、反復計算をいつ終えるかを決定する基準となるパラメータです。Optimusでは、一般的な「最大反復回数」というパラメータの設定に加えて、「停止臨界値」という別の終了判定基準も提供しています。

「停止臨界値」は、各反復計算での全粒子の移動距離を監視するパラメータです。この値が設定された臨界値以下になった場合、最適化計算は終了します。この方法は、解の収束を効率的に判断し、不要な計算を削減できます。しかし、臨界値を大きく設定することで計算回数を減らせますが、設定値が大きすぎると解が十分に収束しない可能性があるため、適切な値の選定が重要となります。

制約条件の調整

不可解領域への計算が多くなり、計算回数が無駄に増加する場合には、ペナルティ関数を用いることで計算量の削減が可能です。ペナルティ関数は、制約条件に違反する解の数に比例して増加するように設計されており、次の式で表されます。

図3:ペナルティ関数による適合度の計算式

例えば目的関数を最小化する最適化計算においては、hを正の値にすればペナルティ関数が小さい解は適合度が高いと判定されます。つまり、ペナルティ関数を導入することで不可解領域での探索を減らし、計算量を削減することができます。

さらに、ペナルティ関数には「制約条件の調整」パラメータが含まれており、このパラメータを調整することで、制約条件から離れた領域への探索を増やすことができます。しかし、このパラメータを過度に大きくすると、制約条件に近い領域での計算が不足し、境界付近の最適解を見落とす可能性があります。したがって、このパラメータの設定は慎重に行う必要があります。

多目的最適化における粒子群最適化

粒子群最適化は単目的最適化に適用するだけでなく、多目的最適化問題にも応用できます。多目的最適化では、解の多様性と収束性を同時に達成することが一つの課題です。Optimusでは、この課題に対処するために特別な設定を導入しています。

パレート優越解 vs ε-優越解

多目的最適化では、通常、パレート優越(非劣)解が選ばれます。これは、他のどの解よりも劣らない解、つまり各目的において最も優れた解を指します。しかし、粒子群最適化(特に多目的粒子群最適化、mPSO)では、非劣解のみを採用すると多様性が損なわれ、パレートフロント上の解が均等に分布しづらいという問題があります。

Optimusでは、この問題に対処するために、パレート解の近傍にε領域を設定します。このε領域内に存在する劣解もパレート解として扱うことにより、解の多様性を保ちつつ、パレートフロント上の解の均等な分布を促進します。このアプローチにより、多目的最適化問題における効果的な探索と、解の多様性の保持が可能となります。

図4:ε-優越解におけるε領域

εの値を大きくすると、パレート解として受け入れられる解の範囲が広がり、その結果としてパレート解の数が増加します。このようにして解の多様性を確保することができますが、一方で収束に時間がかかるようになり、計算量も増加するため、注意が必要です。

特に、設計変数の範囲が狭い場合や目的関数が多い場合には、εを小さく設定することが望ましいでしょう。εを小さくすることで、解の範囲をより厳密に絞り込むことができ、計算効率を高めることが可能です。

混雑距離

図5:混雑距離のイメージ図

Optimusでは、混雑距離の概念を用いることで、解の多様性が低い状況でも計算を効率的に終了させる工夫が取り入れられています。混雑距離とは、特定の解の周囲に存在する他の解との距離を数値化したものです。具体的には、ある解の周囲にある2つの最も近い解を選び、それらとの距離をX軸とY軸に沿って計測し、その和で混雑距離を示します。この混雑距離が大きい場合、その解の周囲に他の解が少ないことを意味し、解の多様性が高いと判断されます。

ここで、Optimusでは混雑距離を評価するため、終了基準というパラメータを導入しています。

終了基準

終了基準とは、各計算結果における混雑距離を基に、計算終了判定を行うためのパラメータです。下記の数式で計算された値が、終了基準(δlim)以下となった際に反復計算を終了します。

この数式は各世代の分散を求めており、この値が小さいほど解の分布が密集してきていることを意味し、計算の終了が近づいていることを示します。

実際の例として、終了基準(Lgen)を変えた際の計算回数と、得られたパレート解の数を示した表とグラフを示します。

図6:終了基準(Lgen)の設定値と計算結果の変化

これを見ると、終了基準の値が大きいほどパレート解の数が増える傾向がありますが、それに伴って計算回数も増加することがわかります。このように、終了基準の調整によって多様性を考慮しつつ、精度と計算回数のバランスを取ることができます。

お問い合わせ

サイバネットシステム株式会社
Noesis 製品問合せ窓口

optimus_info@cybernet.co.jp

メールでのお問い合わせも承っております。
Noesis 製品に関するご質問はお気軽にお問い合わせください。

お問い合わせフォームはこちら