相关疑难解决方法(0)

使用优化模块的Scipy错误.将数组转换为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
Run Code Online (Sandbox Code Playgroud)

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

_slsqp.error: failed in converting 8th argument `g' of …
Run Code Online (Sandbox Code Playgroud)

python optimization scipy

7
推荐指数
1
解决办法
1459
查看次数

如何将约束包含在Scipy NNLS函数解决方案中,使其总和为1

我有以下代码来解决非负最小二乘法.使用scipy.nnls.

import numpy as np
from scipy.optimize import nnls 

A = np.array([[60, 90, 120], 
              [30, 120, 90]])

b = np.array([67.5, 60])

x, rnorm = nnls(A,b)

print x
#[ 0.          0.17857143  0.42857143]
# Now need to have this array sum to 1.
Run Code Online (Sandbox Code Playgroud)

我想要做的是对x解决方案应用约束,使其总和为1.我该怎么做?

python numpy scipy

7
推荐指数
1
解决办法
4169
查看次数

标签 统计

python ×2

scipy ×2

numpy ×1

optimization ×1