繁体   English   中英

使用优化模块的Scipy错误。 将数组转换为fortran失败

[英]Scipy error using optimization module. Failure converting array to fortran

尝试使用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

出于某种原因,我得到的错误如下:

_slsqp.error: failed in converting 8th argument `g' of _slsqp.slsqp to C/Fortran array

不太清楚什么是hre,但我可以提出任何可能有用的代码,如果它有帮助。

当用户指定的目标函数未返回标量时,会发生此隐秘错误。 现在, b-carter在补丁中返回了明确的错误消息,

"Objective function must return a scalar" 

并且文档已更新,请参阅主题以供讨论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM