这个优化问题出了什么问题?我不断得到:ValueError:设置一个带有序列的数组元素

2024-09-28 22:05:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直得到ValueError:设置带有序列的数组元素。我怎样才能使这个优化问题起作用

似乎我在数组的维数或转置函数方面做了一些错误的事情

# Define inputs as column vectors
ETFs_sigma = np.array([.0467,.0781,.0358,.0618,.0331])
ETFs_sigma.shape = (5,1)

ETFs_mu = np.array([.0157,.0131,.0083,.0163,.0120])
ETFs_mu.shape = (5,1)

ones_vector = np.ones(5)
ones_vector.shape = (5,1)

risk_free = .0002

# Optimization problem
w = np.linspace(0,1)
def objective_function3(w,risk_free,coeff_ra,ETFs_mu,ETFs_sigma):
    w = np.array([w[0], w[1], w[2], w[3], w[4]])
    w.shape = (5,1)
    return - (np.dot(np.transpose(w),ETFs_mu) + (ones_vector-w)*risk_free -1/2*coeff_ra[0]*np.dot(np.transpose(w),ETFs_sigma))

res3 = opt.minimize(objective_function3, (.1,.2,.3,.4,.5), args=(risk_free,coeff_ra,ETFs_mu,ETFs_sigma))
res3

我期望解决方案有5个输入的数组,即此最优投资组合的权重


Tags: freenpones数组arraysigmararisk