- Particle Swarm Optimization(PSO)の実装。
- PSOは、(組み合わせ)最適化問題を解決するためのアルゴリズムの一つ
- 3次元以上の入力にも対応。
poetryのインストールが必要です。
git clone https://github.com/kmykprn/PSO.git
cd PSO
poetry install
poetry run python main.py
- デフォルトでは3次元の入力を最適化するPSOが実行されます。
- デフォルトの目的関数は、球体の関数であり、(x, y, z) = (0, 0, 0) のとき f(x, y, z) = 0となります。
実行結果の例
Global Best Position: [-0.00120555 0.00422565 0.00078391]
Global Best Value: 1.9924028516587042e-05
- Global Best Position は、PSOによる探索の結果、最も良い位置(例. X, Y, Z座標)です。(0, 0, 0)に近くなるはずです。
- Global Best Value は、Global Best Positionにおける、目的関数の評価値です。0に近い値ほど良い結果です。
- main.pyの
DIMENSION = 3部分を変更します。 - 例えば2次元の入力を受け付けるときは、
DIMENSION = 2に設定し、実行します。 - ただし、入力の次元数を減らすと、目的関数も変更となる場合が多いため、後述のように目的関数を適したものに設定します。
- objective_function.pyの修正
- objective_function.pyの中に、目的関数を記載します。
- main.pyの修正
from objective_function import ...部分に、目的関数を記載します。pso = PSO(objective_function=...部分に、importした目的関数を設定します。