Python 多元lambdizing函数

Python 多元lambdizing函数,python,numpy,sympy,Python,Numpy,Sympy,我试图优化成本函数EL_c EL_c=-300.49858410695*C_0 - 301*C_1 - 60.2000000000003*C_2 在使用 EL_c.free_symbols={C_0,C_1,C_2} 我试着用 ff=lambdify(("C_0","C_1","C_2"),EL_c) 然后 x0=(1,1,1) scipy.optimize.minimize(ff,x0,method="Nelder-Mead") 然而,我得到了错误 TypeError: <lam

我试图优化成本函数EL_c

EL_c=-300.49858410695*C_0 - 301*C_1 - 60.2000000000003*C_2
在使用

EL_c.free_symbols={C_0,C_1,C_2}
我试着用

ff=lambdify(("C_0","C_1","C_2"),EL_c)
然后

x0=(1,1,1)
scipy.optimize.minimize(ff,x0,method="Nelder-Mead")
然而,我得到了错误

TypeError: <lambda>() missing 2 required positional arguments: 'C_1' 
and 'C_2'
TypeError:()缺少2个必需的位置参数:“C_1”
和“C_2”
理想情况下,我希望能够使用上述方法优化函数。

正如中正确指出的那样,正在优化的可调用函数必须接受形状(N,)的元组,而不仅仅是N个参数

对我起作用的是:

ff = lambdify((A,B,C), EL_c)
fff = lambda x: ff(*x) # Unpack tuple into positional args
scipy.optimize.minimize(fff, x0=(1,1,1), method="Nelder-Mead")
(我的变量被称为A,B,C。)

正如中正确指出的那样,正在优化的可调用函数必须接受一个元组(N,),而不仅仅是N个参数

对我起作用的是:

ff = lambdify((A,B,C), EL_c)
fff = lambda x: ff(*x) # Unpack tuple into positional args
scipy.optimize.minimize(fff, x0=(1,1,1), method="Nelder-Mead")

(我的变量被称为A,B,C。)

我想你只需要将调用更改为最小化:不要将lambda的变量放入元组中,只需将它们放入最小化:
scipy.optimize.minimize(ff,1,1,method=“Nelder-Mead”)
我已经尝试过了,但我得到了“minimize()为参数获取多个值”方法“Hhm”,那太糟糕了。。。我认为一个稍微有点不妥的选择是给lambda一个包含三个变量的元组,但我想这不是这里的计划:/我想你只需要将调用更改为最小化:不要将lambda的变量放在元组中,只需将它们放在最小化中:
scipy.optimize.minimize(ff,1,1,method=“Nelder-Mead”)
我已经尝试过了,但是我得到了“minimize()为参数获取多个值”方法“嗯,这很糟糕。。。我认为一个稍微有点不妥的选择是给lambda一个包含三个变量的元组,但我想这不是这里的计划:/谢谢你的回答。你知道我如何在-1和1之间增加限制A,B,C吗?我使用了con0=x[0]+1 con1=1-x[0]con2=x[1]+1 con3=1-x[1]con4=x[1]+1 con5=1-x[1]cons=({'type':'ineq','fun':con0},{'type':'ineq','fun':con1},{'type':'ineq','fun':con2},{'type':'ineq','fun','con3},{'type':'ineq','fun',{'type':'ineq','fun','con3},{'type','type':'ineq','fun','con4',{'type','type':'ineq':'fun},再次检查链接的文档。对于某些优化方法,有一些方法可以指定边界和/或约束。感谢您的回答。你知道我如何在-1和1之间增加限制A,B,C吗?我使用了con0=x[0]+1 con1=1-x[0]con2=x[1]+1 con3=1-x[1]con4=x[1]+1 con5=1-x[1]cons=({'type':'ineq','fun':con0},{'type':'ineq','fun':con1},{'type':'ineq','fun':con2},{'type':'ineq','fun','con3},{'type':'ineq','fun',{'type':'ineq','fun','con3},{'type','type':'ineq','fun','con4',{'type','type':'ineq':'fun},再次检查链接的文档。对于某些优化方法,有指定边界和/或约束的方法。