使用fmin_powell()函数实现Python中的凸优化问题
发布时间:2023-12-26 18:14:53
fmin_powell()函数是scipy中的一个求解凸优化问题的方法之一。它使用了Powell's conjugate direction method来进行搜索,并返回找到的使得目标函数最小化的参数值。
下面是一个使用fmin_powell()函数解决一个简单的凸优化问题的示例:
首先,我们导入必要的库:
import numpy as np
from scipy.optimize import minimize
接下来,我们定义一个目标函数,这里我们以Rosenbrock函数为例:
def rosenbrock(x):
return sum(100.0 * (x[1:] - x[:-1]**2.0)**2.0 + (1 - x[:-1])**2.0)
接着,我们可以使用fmin_powell()函数来求解最小化这个函数的参数值,并设置起始点为[0, 1, 2, 3]:
x0 = np.array([0, 1, 2, 3])
res = minimize(rosenbrock, x0, method='powell')
最后,我们可以打印出找到的最优参数值和最小目标函数值:
print(res.x) # 输出最优参数值
print(res.fun) # 输出最小目标函数值
运行上述代码,我们可以得到如下结果:
[1. 1. 1. 1.] # 最优参数值
2.504085239527489e-15 # 最小目标函数值
在这个例子中,我们使用fmin_powell()函数寻找了使得Rosenbrock函数最小化的参数值。可以看到,最优参数值为[1, 1, 1, 1],而最小化的目标函数值接近于0。
