投影梯度优化算法python
时间: 2023-09-30 15:04:45 浏览: 72
投影梯度优化算法(projected gradient descent)是一种常用的优化算法,用于求解带约束条件的最优化问题。该算法的核心思想是在每一步迭代中,通过更新当前解的梯度方向,并将其投影到可行解空间中,以保证满足约束条件。以下是一个使用Python实现投影梯度优化算法的示例代码:
```
import numpy as np
def projection(x, constraints):
# 对x进行投影到可行解空间中
proj_x = np.zeros_like(x)
for i in range(len(x)):
lower_bound, upper_bound = constraints[i]
proj_x[i] = min(max(x[i], lower_bound), upper_bound)
return proj_x
def projected_gradient_descent(objective, gradient, constraints, lr, max_iter, initial_x):
x = initial_x
for _ in range(max_iter):
grad = gradient(x)
x -= lr * grad
x = projection(x, constraints)
return x
# 示例:求解最小化函数 f(x) = x^2 的最优解,其中 x 的取值范围为 [0, 1]
def objective(x):
return x**2
def gradient(x):
return 2 * x
constraints = [(0, 1)] # x 的取值范围约束
lr = 0.1 # 学习率
max_iter = 100 # 最大迭代次数
initial_x = 0.5 # 初始解
# 调用投影梯度优化算法求解最优解
optimal_x = projected_gradient_descent(objective, gradient, constraints, lr, max_iter, initial_x)
print("最优解:", optimal_x)
```