我正在尝试最小化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 ^转置* w 0 <= w <= leq1
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是未定义的函数或变量。有人知道如何解决这个问题吗?
最诚挚的问候