我正在尝试优化成本函数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'
理想情况下,我希望能够使用上述方法优化功能。
答案 0 :(得分:0)
根据documentation of optimize(在this answer中已正确指出),正在优化的可调用函数必须接受元组(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。)