PSO 알고리즘 간단 소개

    목차
반응형

PSO 알고리즘 한 줄 요약

새 떼가 집단 행동을 하는 방식에서 착안한 최적해 탐색 기법

 

https://pypi.org/project/pyswarms/

 

주요 용어

- 위치, 속도: 각 개체의 위치와 이동 속도

- 관성: 각 개체가 이동하는 방향으로 가려는 힘 (inertia)

    - 가중치 w

- pbest(Particle best): 각 개체가 경험한 개인 최적 위치 (indivisual best)

    - cognitive: 각 개체가 pbest로 가려는 힘, 가중치 c1

- gbest(Global best): 군집이 경험한 최적 위치 (swarm best)

    - social: gbest로 가려는 힘, 가중치 c2

- 새로운 속도 = w * 기존 속도 [inertia]
                      + c1 * (pbest - 현재 위치) [cognitive]
                      + c2 * (gbest - 현재 위치) [social]

 

Pseudo Code

For 각 입자
    입자별 위치(position)와 속도(velocity)를 임의의 값으로 초기화
END
Do
    For 각 입자
        fitness value 계산 (성공 측정)
        If fitness value 가 best fitness value(pBest)보다 낫다면
            현재 value를 새로운 pBest로 변경
    END

가장 좋은 fitness 값을 가지고 있는 입자를 gBest로 선택
    For 각 입자
        입자 속도(velocity)계산
        계산한 속도를 가지고 입자의 위치(position) 업데이트
    End
최대 반복 횟수나 최소 에러 기준에 도달하지 않는 경우 계속 진행

 

모식도

 

 

 

Python 코드

import pyswarms as ps
from pyswarms.utils.functions import single_obj as fx

# Set-up hyperparameters
options = {'c1': 0.5, 'c2': 0.3, 'w':0.9}

# Call instance of PSO
optimizer = ps.single.GlobalBestPSO(n_particles=10, dimensions=2, options=options)

# Perform optimization
cost, pos = optimizer.optimize(fx.sphere, iters=1000)
"""
best cost: 4.612197116927276e-42, best pos: [1.86203455e-22 2.13951522e-21]
"""

 

 

 

자세한 수식 설명과 코드 구현 → github

728x90
반응형