Nelder-Mead Method 간단 소개
- 목차
반응형
Nelder-Mead Method 한 줄 요약
Downhill Simplex라고도 불리며 다면체(Simplex)를 이용하여 함수의 최대/최소를 찾아가는 기법
주요 용어
- 함수의 최솟값을 찾는 경우
- 중심점: 최댓값을 갖는 점을 제외한 나머지 점들의 평균
- Reflection: 최솟값에서 가장 먼 점에서의 반대방향은 최솟값에 더 가까울 것이라는 가정을 하여 중심점 기준으로 Reflect(반사)
- Expansion: 반사되어 간 좌표가 새로운 최솟값인 경우, 그 방향으로 조금 더 가면 최솟값이 있을 것이라는 가정을 하여 반사되었던 방향으로 Expanse(확장)
- Contraction: 반사되어 간 좌표가 값이 큰 경우, 그 방향으로 덜 가면 더 작은 함수값을 찾을 수 있을 것이라는 가정을 하여 Contract(축소)
- α, β, γ: Reflection, Expansion, Contraction 계수
Pseudo Code
모식도
Python 코드
import numpy as np
from scipy.optimize import fmin
def f1(x): # 일반 함수
return (x - 2) ** 2 + 2
fmin(f1, 0) # 0 = initial guess
"""
Optimization terminated successfully.
Current function value: 2.000000
Iterations: 27
Function evaluations: 54
array([2.])
"""
def f2(x): # 다변수 함수
return (1 - x[0])**2 + 100.0 * (x[1] - x[0]**2)**2
fmin(f2, (-1, -1))
"""
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 67
Function evaluations: 125
array([0.99999886, 0.99999542])
"""
자세한 수식 설명과 코드 구현 → github
728x90
반응형
'데이터 분석 > 최적화 알고리즘' 카테고리의 다른 글
PSO 알고리즘 간단 소개 (0) | 2024.02.08 |
---|---|
Differential Evolution 간단 소개 (0) | 2024.02.02 |
유전 알고리즘 python 코드를 통해 알아보기 (0) | 2024.02.02 |
수치 최적화 알고리즘 정리 (0) | 2024.02.02 |
Lagrange Polynomial Interpolation 설명 (python 구현) (0) | 2024.02.02 |