Как минимизировать целевую функцию с сериями сумм в Matlab? - PullRequest
1 голос
/ 19 апреля 2019

Я пытаюсь минимизировать следующую проблему оптимизации в 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 - неопределенная функция или переменная. Кто-нибудь знает, как это исправить?

С наилучшими пожеланиями

...