www.gusucode.com > GAVPai_Book_MathworksCntrlFileEx_May2019 > GAVPai_Book_MathworksCntrlFileEx_May2019/compute_constrvioln_fn_Rebal.m
% Constraint violation function for rebalanced portfolio risk not to exceed % the original portfolio risk function [G, psi] = compute_constrvioln_fn_Rebal( weight_mat, covar_mat, Crisp_risk, C_param, beta_param, alpha_param, gencount ) [row_mat, ~]= size(weight_mat); psi(1:row_mat) = zeros(1, row_mat); G(1:row_mat) = zeros(1,row_mat); epsilon=0.001; for i=1:row_mat % Select each chromosome from the population x_chrom=weight_mat(i,:); % Compute portfolio risk for the chromosome portfolio_risk = sqrt(x_chrom * covar_mat * x_chrom'); % phi: rebalanced portfolio risk constraint phi = abs(portfolio_risk-Crisp_risk)-epsilon; % compute penalties G g = 1-(phi <=0); G(i) = g; % compute constr violation function psi penalty_term= power(C_param*gencount, alpha_param); psi(i) = penalty_term * sum( g.*power(phi, beta_param)); end end