PSO 알고리즘 간단 소개
- 목차
반응형
PSO 알고리즘 한 줄 요약
새 떼가 집단 행동을 하는 방식에서 착안한 최적해 탐색 기법
주요 용어
- 위치, 속도: 각 개체의 위치와 이동 속도
- 관성: 각 개체가 이동하는 방향으로 가려는 힘 (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
반응형
'데이터 분석 > 최적화 알고리즘' 카테고리의 다른 글
Nelder-Mead Method 간단 소개 (0) | 2024.02.03 |
---|---|
Differential Evolution 간단 소개 (0) | 2024.02.02 |
유전 알고리즘 python 코드를 통해 알아보기 (0) | 2024.02.02 |
수치 최적화 알고리즘 정리 (0) | 2024.02.02 |
Lagrange Polynomial Interpolation 설명 (python 구현) (0) | 2024.02.02 |