我试图在Matlab中复制一篇论文(“毕竟市场上的平均方差是否有效?”来自Levy& Roll)。我希望最小化以下函数(D)及其约束:
我希望 mu 和 sigma ,
此外,alpha,q和r_z是自由变量,其中
我有:
现在我不知道如何处理自由变量alpha,q和r_z
我的目标函数D:
function dist=distOpt(alpha, N, x0, mu_sam, sigma_sam)
sumSigma=0;
for i=1:N
sumMu=sumMu+((x0(i)-mu_sam(i))/sigma_sam(i))^2;
sumSigma=sumSigma+((x0(N+i)-sigma_sam(i))/sigma_sam(i))^2;
end
dist=sqrt(alpha*(1/N)*sumMu + (1-alpha)*(1/N)*sumSigma);
和约束:
Mu_sam=repelem(-0.0001,y-1);
Sigma_sam=repelem(-0.0002,y-1);
x0=[Mu_sam Sigma_sam];
function [c,ceq] = confuneq(x0,rz,Cor,Weights)
q=1;
ceq=diag(x0(7:end))*Cor*diag(x0(7:end))*Weights' - q*(x0(1:6)'-rz);
c=[];
我使用fmincon:
optFunc=@(x0) distOpt(alpha,(y-1),x0, Mu_sam, Sig_sam);
options = optimoptions(@fmincon,'Algorithm','sqp','MaxFunctionEvaluations', 12000,'FunValCheck','on');
nonlcon=@(c,ceq) confuneq(x0,r_z, rho, Weights);
[x0, fval, exitFlag]= fmincon(optFunc,x0,[],[],[],[],[],[],nonlcon,options);
有人可以帮忙吗?
答案 0 :(得分:0)
现在我不知道如何处理自由变量alpha,q和r_z
我认为你有两个选择:
1)为它们选择固定值。
2)将它们包含在x中以获得最佳值。