fmincon nonlinear equality constraint
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Clemens Gersch
am 11 Mai 2020
Kommentiert: Clemens Gersch
am 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 Kommentare
Akzeptierte Antwort
Matt J
am 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 Kommentare
Matt J
am 12 Mai 2020
Bearbeitet: Matt J
am 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) );
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Nonlinear Optimization finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!