Я пытаюсь минимизировать следующую проблему оптимизации в MATLAB (извините за уродливую форму, но, видимо, мне нужно больше репутации для публикации изображений):
w * = argmin f (w) = \ sum_ {i = 1} ^ {n} \ sum_ {j = 1} ^ {n} (w_i (Cw) _i-w_j (Cw) _j) ^ 2
S.T.
1 ^ транспонированный * ш
0 <= ш <= leq1 </p>
w - вектор весов 1xn и ковариационная матрица C nxn.
Пока я получил это:
w0 = [0.25, 0.25, 0.25, 0.25];
Aeq = ones(1, port_size);
beq = 1;
lb = zeros(1, port_size);
ub = ones(1, port_size);
fun_rp = @(w)
for i = 1:port_size
for j = 1: port_size
(w(1,i)*(C*w(1,i)')-w(1,j)*(C*w(1,j)'))^2;
end
end
Затем я хочу поместить переменные в функцию fmincon для решения проблемы.
Но почему-то я получаю сообщение об ошибке, что fun_rp - неопределенная функция или переменная. Кто-нибудь знает, как это исправить?
С наилучшими пожеланиями