Sla*_*off 7 python optimization scipy
尝试使用scipy的优化模块使用slsqp查找函数的最小值,我遇到了一些问题.调用该函数的实际代码如下所示:
def minimizeWebEnergyLost(x, parameters):
"""values = [theta, velocity]"""
firstTerm = lambda values: (x * values[1]**2 / 2.0)
sqrtTerm = lambda values: np.sqrt((parameters.gravity**2 * x**2) / (4 * values[1]**4 * np.cos(values[0])**4) + 1)
secondTerm = lambda values: (values[1]**4 * np.cos(values[0])**2) / parameters.gravity
arcsinhTerm = lambda values: np.arcsinh((parameters.gravity * x) / (2 * values[1]**2 * np.cos(values[0])**2))
costFunction = lambda values: firstTerm(values)*sqrtTerm(values)+secondTerm(values)*arcsinhTerm(values)
bounds = ((-math.pi/2,math.pi/2),(0,parameters.maxSlingSpeed))
minimum = minimize(costFunction, (pi/4, 20), method="SLSQP", bounds=bounds)
return minimum
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我得到的错误如下:
_slsqp.error: failed in converting 8th argument `g' of _slsqp.slsqp to C/Fortran array
Run Code Online (Sandbox Code Playgroud)
不太清楚什么是hre,但我可以提出任何可能有用的代码,如果它有帮助.
当用户指定的目标函数不返回标量时,就会发生此神秘错误。现在b-carter在补丁中返回了一条明确的错误消息,
"Objective function must return a scalar"
Run Code Online (Sandbox Code Playgroud)
并且文档已更新,请参阅此线程进行讨论。
| 归档时间: |
|
| 查看次数: |
1459 次 |
| 最近记录: |