Я немного новичка и в процессе перемещения алгоритма, который работает с минимальной оптимизацией дисперсии от scipy.minimize.optimize
(который не работает должным образом), чтобы CVXPY
.ValueError в функции minization CVXPY (минимальное отклонение Optimization)
R
ожидаемые доходы, C
в coveriances и rf
безрисковая ставка. w
являются оптимальными весами и r
различные средства вдоль эффективной границы, для которых вычисляются весовые коэффициенты.
Когда я запускаю этот код я получаю:
ValueError: setting an array element with a sequence.
Я считаю, что вар виноват здесь, но я не знаю, как еще структурировать. Insight очень ценится. Кроме того, остальная часть кода может иметь дополнительные ошибки, поэтому, если вы заметите, пожалуйста, укажите их!
def solve_frontier(R, C, rf, context):
frontier_mean, frontier_var, frontier_weights = [], [], []
n = len(R)
w = cvx.Variable(n)
r = cvx.Parameter(sign='positive')
mean_1 = sum(R*w)
var = dot(dot(w, C), w)
penalty = (1/100)*abs(mean_1-r)
prob = cvx.Problem(cvx.Minimize(var + penalty),
[sum(w)-context.allowableMargin == 0])
r_vals = linspace(max(min(R), rf), max(R), num=20)
for i in range(20):
r.value = r_vals[i]
prob.solve()
frontier_mean.append(r)
frontier_var.append(compute_var(prob.value, C))
frontier_weights.append(prob.value)
print "status:", prob.status
return array(frontier_mean), array(frontier_var), frontier_weights
Ошибка должна указывать точно, в какой строке возникает проблема. Пожалуйста, получите эту информацию. Также, если вы прочитаете [минимальные полные проверяемые вопросы] (http://stackoverflow.com/help/mcve) и улучшите свой вопрос, он, вероятно, получит лучший ответ в дополнение к тому, чтобы быть более полезным для будущих пользователей. – KobeJohn
Я использую ipython-ноутбук, и на самом деле он не говорит о том, какая строка является проблематичной. Я попробую сделать его mcv. –
Эта часть выглядит подозрительной для меня '[sum (w) -context.allowableMargin == 0]'. Вы действительно собираетесь передавать один логический список в качестве аргумента? Если не то, что вы намерены? Кроме того, вы говорите, что приведенный выше код печатает ошибку значения, о которой вы упомянули? Если это так, этот класс 'Problem' является странным для скрытия необработанной ошибки, и вы захотите сосредоточиться на том, что происходит в этом классе. – KobeJohn