我有一个优化问题,我需要求解一个向量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'方法,返回违反边界约束的错误答案。我想知道我是否对脚本做了任何错误,或者我使用的方法不合适?
答案 0 :(得分:0)
我不确定是什么造成了不同,但它似乎是' TNC'方法给了我正在寻找的东西。