- 最急降下法 (Gradient Descent): 最急降下法は、最小化する関数の勾配を使用して最適な解を見つける手法です。以下は、最急降下法の基本的なコード例です。
def gradient_descent(f, initial_x, learning_rate, num_iterations):
x = initial_x
for _ in range(num_iterations):
gradient = compute_gradient(f, x)
x -= learning_rate * gradient
return x
- ニュートン法 (Newton's Method): ニュートン法は、最小化する関数の2階導関数(ヘッセ行列)を使用して最適な解を見つける手法です。以下は、ニュートン法の基本的なコード例です。
def newton_method(f, initial_x, num_iterations):
x = initial_x
for _ in range(num_iterations):
gradient = compute_gradient(f, x)
hessian = compute_hessian(f, x)
x -= np.linalg.inv(hessian) @ gradient
return x
- 制約付き最適化 (Constrained Optimization): 制約付き最適化では、最小化する関数に制約条件がある場合に最適な解を見つける手法です。以下は、制約付き最適化の一例として、SciPyライブラリを使用したコード例です。
from scipy.optimize import minimize
def objective(x):
return x[0]2 + x[1]2
def constraint(x):
return x[0] + x[1] - 1
initial_guess = [0, 0]
bounds = [(0, None), (0, None)]
constraints = {'type': 'eq', 'fun': constraint}
result = minimize(objective, initial_guess, method='SLSQP', bounds=bounds, constraints=constraints)
print(result.x)
これらはPythonで最小化を行うための一般的な手法の一部ですが、他にも多くの手法があります。最適な手法は、解きたい問題の性質や制約条件によって異なります。問題に応じて最適な手法を選択し、コードを実装してください。