fmincon nonlinear equality constraint
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Clemens Gersch
le 11 Mai 2020
Commenté : Clemens Gersch
le 12 Mai 2020
Hi,
I am trying to implement the following equality constraint for using it in fmincon:
where
and TargetVariance is a fixed numeric value. The size of w is 1xN.
This is a minimal example of my code.
%Input
Mu = [.1, .15, .12];
Cov = [.3, .1, .2;
.1, .5, .1;
.2, .1, .7];
% Prepare vector of ones.
N = numel(Mu);
one = ones(1,N);
% Objective function.
NegPFMu = @(w) -Mu * w';
% Set equal weights as initial point.
w0 = one * (1/N);
% Sum of weights constraint.
Aeq = one;
beq = 1;
% Shortselling constraint.
lb = zeros(1,N);
% Minimize.
wopt = fmincon(NegPFMu, w0, [], [], Aeq, beq, lb);
Can you help me with the constraint?
I was thinking about something like the following but I don't how to call that as my nonlcon then.
function [c, ceq] = mycon(w, Cov, TargetVariance)
PortfolioVariance = @(w) w*Cov*w'
ceq = PortfolioVariance(w) - Targetvariance;
c = [];
end
Could you help me please?
0 commentaires
Réponse acceptée
Matt J
le 12 Mai 2020
wopt = fmincon(NegPFMu, w0, [], [], Aeq, beq, lb,[], @(w) mycon(w, Cov, TargetVariance));
function [c, ceq] = mycon(w, Cov, TargetVariance)
ceq = w*Cov*w'- Targetvariance;
c = [];
end
3 commentaires
Matt J
le 12 Mai 2020
Modifié(e) : Matt J
le 12 Mai 2020
@(w) mycon(w, Cov, TargetVariance) is an anonymous function.
However, if you mean you would like to avoid creating the local function mycon, then you could do this,
wopt = fmincon(NegPFMu, w0, [], [], Aeq, beq, lb,[],...
@(w) deal([], w*Cov*w'- Targetvariance) );
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Solver Outputs and Iterative Display dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!