Python SciPy'中的多个变量;s.最小化
根据该模型,可以最小化具有多个变量的函数,但它没有说明如何对这些函数进行优化Python SciPy'中的多个变量;s.最小化,python,math,scipy,Python,Math,Scipy,根据该模型,可以最小化具有多个变量的函数,但它没有说明如何对这些函数进行优化 from scipy.optimize import minimize from math import * def f(c): return sqrt((sin(pi/2) + sin(0) + sin(c) - 2)**2 + (cos(pi/2) + cos(0) + cos(c) - 1)**2) print minimize(f, 3.14/2 + 3.14/7) 上面的代码确实试图最小化函数f,但
from scipy.optimize import minimize
from math import *
def f(c):
return sqrt((sin(pi/2) + sin(0) + sin(c) - 2)**2 + (cos(pi/2) + cos(0) + cos(c) - 1)**2)
print minimize(f, 3.14/2 + 3.14/7)
上面的代码确实试图最小化函数f
,但是对于我的任务,我需要最小化三个变量
只需引入第二个参数并相应地调整minimize就会产生一个错误(TypeError:f()正好接受2个参数(给定1个)
)
当使用多个变量进行最小化时,
最小化
是如何工作的。将多个变量打包到一个数组中:
import scipy.optimize as optimize
def f(params):
# print(params) # <-- you'll see that params is a NumPy array
a, b, c = params # <-- for readability you may wish to assign names to the component variables
return a**2 + b**2 + c**2
initial_guess = [1, 1, 1]
result = optimize.minimize(f, initial_guess)
if result.success:
fitted_params = result.x
print(fitted_params)
else:
raise ValueError(result.message)
print(params)
显示数组,但它们是什么?我首先在函数调用中没有看到向函数f
发送任何输入params
。params
如何对应于正在优化的函数?为什么三个结果元素相同(-1.66705302e-08
)。如何优化多个矢量决策变量而不是多个标量决策变量?您的代码显示一个标量决策变量c
。没有其他两个决策变量的指示,这意味着这不是您要求解的多元函数。您希望为未显示的函数优化三个决策变量,每个变量也是标量,a
,b
,c
?你有没有一个2个向量作为决策变量的例子?例如,x
和y
是两个决策向量/数组,而不是scalars@develarist我认为最好对你所问的问题单独提出一个问题。但是,如果你需要优化两个向量,我会考虑向量的每个元素是一个要优化的变量。如果你有两个三元素向量,你有6个变量需要优化。
[ -1.66705302e-08 -1.66705302e-08 -1.66705302e-08]