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