www.gusucode.com > GAVPai_Book_MathworksCntrlFileEx_May2019 > GAVPai_Book_MathworksCntrlFileEx_May2019/compute_constrvioln_fn.m
% compute constraint violation function represented by equation [4.20] % for a population function [G, psi] = compute_constrvioln_fn(weight_mat, covar_mat, riskbudget, C_param, beta_param, alpha_param, gencount) [row_mat, col_mat]= size(weight_mat); for i=1:row_mat % select each individual from the population x_individual=weight_mat(i,:); % compute portfolio risk portfolio_risk = sqrt(x_individual * covar_mat * x_individual'); % compute Marginal contribution to risk mcr = (covar_mat * x_individual')/portfolio_risk ; % compute function phi phi = (x_individual.*mcr')-(riskbudget/100)*portfolio_risk; % compute penalties g g = 1-(phi <=0); G(i,:) = g ; % compute penalty term penalty_term= power(C_param*gencount, alpha_param); % compute constraint violation function psi psi(i) = penalty_term *sum( g.*power(phi, beta_param)); end