麻烦实施scipy优化最小化

问题描述:

我在实施scipy.optimize.minimize()时遇到了一些麻烦。 它返回我与错误ValueError: Objective function must return a scalar。 这里是我的代码:麻烦实施scipy优化最小化

def cost(A,b,x): 
    return np.sum(np.square(np.dot(A,x)-b)) 

def sse(x): 
    return 1-sum(x) 

x0 = np.ones(4)/4 
bounds = tuple((0,1) for x in x0) 
cons = ({'type': 'eq', 'fun': sse}) 
All = minimize(cost, x0, args=(A, curve), method='SLSQP', bounds=bounds, constraints=cons).x 

A具有形状(400,4)curve具有形状(400,)xx0具有形状(4,)

我似乎错过了一些非常微不足道的东西。任何帮助,将不胜感激。提前致谢!

您的函数的签名以最小化需求作为第一个非关键字参数x;那么其他人可能会跟随。

(所以你的内部变量映射是错误的,因此你的形状产生不同的结果,形状不标)

我还没有看到你的代码的任何使用curve!可能curve = b

所以只是改变:

def cost(A,b,x): # WRONG 
    return np.sum(np.square(np.dot(A,x)-b)) 

def cost(x, A, b): # CORRECT 
    return np.sum(np.square(np.dot(A,x)-b)) 
+0

谢谢!得到它了。另外,'curve'被传递给函数中的'b'变量。 –

+0

是的,但我不喜欢那些不同的名字。很难遵循imho。 – sascha

+0

啊!好的!将考虑到这一点。 –