[파이썬][Scipy] Optimization (최적화) 객체 예제

scipy.optimize 모듈은 최적화 문제를 풀기 위한 객체와 알고리즘을 제공합니다. 아래 예제에서는 scipy.optimize 모듈을 사용하여 최적화 문제를 해결하는 방법을 보여줍니다.

먼저, 필요한 모듈을 가져옵니다:

mport numpy as np
from scipy.optimize import minimize

예제 1: 단일 변수 함수의 최소값 찾기

단일 변수 함수의 최소값을 찾는 예제입니다.

# 최소화할 함수 정의
def f(x):
    return x**2 + 4*x + 4

# 초기 추측값 설정
x0 = 0

# 최적화 문제 정의 (최소화)
result = minimize(f, x0)

# 최적 결과 출력
print("최적해:", result.x)
print("최소값:", result.fun)

예제 2: 다변수 함수의 최적화

다변수 함수의 최적화 문제를 해결하는 예제입니다.

# 최소화할 다변수 함수 정의
def multivariate_f(x):
    return (x[0] - 2)**2 + (x[1] - 3)**2 + (x[2] - 1)**2

# 초기 추측값 설정
x0 = np.array([0, 0, 0])

# 최적화 문제 정의 (최소화)
result = minimize(multivariate_f, x0)

# 최적 결과 출력
print("최적해:", result.x)
print("최소값:", result.fun)

예제 3: 제약 조건을 가지는 최적화

제약 조건을 가지는 최적화 문제를 해결하는 예제입니다.

from scipy.optimize import LinearConstraint

# 최소화할 함수 정의
def f(x):
    return x[0]**2 + x[1]**2

# 초기 추측값 설정
x0 = np.array([1, 1])

# 선형 제약 조건 정의: x0 + 2*x1 >= 1
linear_constraint = LinearConstraint([[1, 2]], [1], [np.inf])

# 최적화 문제 정의 (최소화, 선형 제약 조건 추가)
result = minimize(f, x0, constraints=linear_constraint)

# 최적 결과 출력
print("최적해:", result.x)
print("최소값:", result.fun)

이러한 예제에서는 단일 변수 및 다변수 함수의 최적화, 그리고 제약 조건을 가지는 최적화 문제를 다루는 방법을 보여줍니다. scipy.optimize 모듈을 사용하면 다양한 최적화 문제를 해결할 수 있습니다.