梯度投影法的python代码实现
时间: 2023-07-23 21:41:49 浏览: 436
采用梯度方法 python
以下是使用Python实现梯度投影法的示例代码,假设我们要求解以下凸优化问题:
min f(x) = x1^2 + 2x2^2 + 3x3^2
s.t. 2x1 + 3x2 + 4x3 >= 1
x1 + x3 <= 2
x1, x2, x3 >= 0
```python
import numpy as np
from scipy.optimize import minimize
# 定义目标函数和约束条件
def fun(x):
return x[0]**2 + 2*x[1]**2 + 3*x[2]**2
def cons(x):
return [2*x[0] + 3*x[1] + 4*x[2] - 1, x[0] + x[2] - 2]
# 设定初始点
x0 = [0, 0, 0]
# 使用minimize函数求解
res = minimize(fun, x0, constraints={'type': 'ineq', 'fun': cons}, bounds=[(0, None), (0, None), (0, None)], method='SLSQP')
# 输出结果
print('x1 =', res.x[0], ', x2 =', res.x[1], ', x3 =', res.x[2])
print('fval =', res.fun)
```
在上述代码中,我们使用了scipy库中的minimize函数,其中fun为目标函数,cons为约束条件,constraints参数中的'type': 'ineq'表示约束条件为不等式约束,bounds表示变量的取值范围。最后,我们输出了求解结果。
阅读全文