Scipy优化作为解决方案返回初始猜测

时间:2016-04-02 23:59:16

标签: python optimization scipy

我有一个优化问题,我需要求解一个向量X:

  

E = O - X * H

     

O和H都是已知的。求解X使得最小化E的方差。

我写的代码如下:

H = np.matrix(df.ix[:,1:5]) # 61 by 4 matrix
O = np.matrix(df[fund]) # 1 by 61 matrix
#X = np.array([1,0,0,0]) # 1 by 4 matrix
def fitness(X, H=H, O=O):
    A = X*np.transpose(H) # 1 by 61 matrix
    E = O - A
    target = np.var(E, ddof=1)
    return target
cons = ({'type':'eq','fun': lambda X: sum(X)-1})
bnds = [(0, 1) for i in range(4)]
res = optimize.minimize(fitness, np.array([0,1,0,0]), method='SLSQP', bounds=bnds, constraints=cons)
print res.x

代码不断返回与解决方案相同的无限猜测。我也尝试过BFGS'方法,返回违反边界约束的错误答案。我想知道我是否对脚本做了任何错误,或者我使用的方法不合适?

1 个答案:

答案 0 :(得分:0)

我不确定是什么造成了不同,但它似乎是' TNC'方法给了我正在寻找的东西。