This is a static copy of a profile report

Home

Function details for optiklThis is a static copy of a profile report

Home

optikl (Calls: 1, Time: 0.813 s)
Generated 01-May-2020 20:23:04 using performance time.
function in file /Users/sidhantkhanna/Documents/GitHub/BKS modified/code/Firms/optikl.m
Copy to new window for comparing multiple runs

Parents (calling functions)

Function NameFunction TypeCalls
OC3function1
Lines where the most time was spent

Line NumberCodeCallsTotal Time% TimeTime Plot
145
[ar_k_bar,ar_l_bar] = con_kl(a...
10.393 s48.3%
33
addpath(genpath('/Users/sidhan...
10.392 s48.2%
25
close all;
10.014 s1.8%
96
ar_k_unc = exp((log(fl_R./(ar_...
10.001 s0.1%
166
feas_v = ar_z_v.*ar_k_star.^fl...
10.001 s0.1%
All other lines  0.012 s1.5%
Totals  0.813 s100% 
Children (called functions)

Function NameFunction TypeCallsTotal Time% TimeTime Plot
con_klfunction10.391 s48.2%
genpathfunction10.306 s37.7%
addpathfunction10.085 s10.5%
closefunction10.013 s1.7%
meshgridfunction10.000 s0.0%
Self time (built-ins, overhead, etc.)  0.017 s2.1%
Totals  0.813 s100% 
Code Analyzer results
Line numberMessage
29This statement (and possibly following ones) cannot be reached.
216Terminate statement with semicolon to suppress output (in functions).
221This statement (and possibly following ones) cannot be reached.
234Terminate statement with semicolon to suppress output (in functions).
239This statement (and possibly following ones) cannot be reached.
283This statement (and possibly following ones) cannot be reached.
293This statement (and possibly following ones) cannot be reached.
Coverage results
Show coverage for parent directory
Total lines in function277
Non-code lines (comments, blank lines)91
Code lines (lines that can run)186
Code lines that did run56
Code lines that did not run130
Coverage (did run/can run)30.11 %
Function listing
time 
Calls 
 line
  23 
function [mt_k_star, mt_l_star]=optikl(varargin)
  24 

  0.014 
      1 
  25
close all; 
< 0.001 
      1 
  26
bl_profile = false;      % Switch off profile if running a tester/calling from another function 
< 0.001 
      1 
  27
bl_saveimg = false; 
< 0.001 
      1 
  28
if(bl_profile) 
  29 
profile off;
  30 
profile on;
  31 
end
  32 

  0.392 
      1 
  33
addpath(genpath('/Users/sidhantkhanna/Documents/GitHub/BKS modified/')); 
  34 

  35 

< 0.001 
      1 
  36
if ~isempty(varargin) 
  37 
    
  0.002 
      1 
  38
    [ar_a,ar_z, ... 
      1 
  39
        fl_alpha,fl_theta,fl_delta,fl_kappa,fl_r,fl_w,fl_phi,fl_ahi,fl_zhi, ... 
      1 
  40
         it_zgridno, it_agridno, ... 
      1 
  41
        ] = varargin{:}; 
  42 
    
< 0.001 
      1 
  43
    bl_print  = false; 
< 0.001 
      1 
  44
    bl_plot   = false; 
  45 
    
  46 
else
  47 
    close all;
  48 
    
  49 
    fl_ahi         = 5;
  50 
    fl_zhi         = 2.2;
  51 
    it_agridno     = 5;
  52 
    it_zgridno     = 6;
  53 
    ar_a = linspace(0,fl_ahi,it_agridno);
  54 
    ar_z = linspace(1,fl_zhi,it_zgridno);
  55 
    fl_phi         = 0.5;
  56 
    
  57 
    fl_alpha = 0.4;
  58 
    fl_theta = 0.79-fl_alpha;
  59 
    fl_delta = 0.05;
  60 
    fl_kappa = 0;
  61 
        
  62 
    [fl_r,fl_w,fl_ahi] = ...
  63 
        deal(0.05,3,100);
  64 
    bl_print       = true;
  65 
    bl_plot        = true;
  66 
    
< 0.001 
      1 
  67
end 
  68 

  69 
%% Set Parameters
  70 

< 0.001 
      1 
  71
fl_R = fl_r + fl_delta; 
  72 

  73 

  74 
%% Set Controls
  75 

< 0.001 
      1 
  76
bl_constrained = true; 
< 0.001 
      1 
  77
if( fl_phi == 1) 
  78 
    bl_constrained = false;
  79 
end
< 0.001 
      1 
  80
bl_feas = true; % 
  81 

  82 

  83 
%% Mesh Grids
  84 

< 0.001 
      1 
  85
[a_m,z_m] = meshgrid(ar_a,ar_z);    % creates 2 matrices of size it_zgridno x it_agridno  
  86 
                                    % a_m has it_zgridno no. of identical rows, each row is ar_a. So each column
  87 
                                    % has identical a element repeated it_zgridno times
  88 
                                    % z_m has it_agridno no of identical columns, each column is ar_z. So each
  89 
                                    % row has identical z element repeated it_agridno times
  90 

< 0.001 
      1 
  91
ar_a_v = a_m(:);                    % matrix unlayered one column under another 
< 0.001 
      1 
  92
ar_z_v = z_m(:);                    % matrix unlayered one column under another 
  93 

  94 

  95 

< 0.001 
      1 
  96
ar_k_unc = exp((log(fl_R./(ar_z_v.*fl_alpha))- fl_theta*log(fl_R./(ar_z_v.*fl_alpha))+ fl_theta.*log(fl_w./(ar_z_v.*fl_theta)))./(fl_alpha+fl_theta-1)); 
< 0.001 
      1 
  97
ar_l_unc = exp((log(fl_w./(ar_z_v.*fl_theta))+ fl_alpha*log(fl_R./(ar_z_v.*fl_alpha))- fl_alpha.*log(fl_w./(ar_z_v.*fl_theta)))./(fl_alpha+fl_theta-1)); 
  98 

< 0.001 
      1 
  99
mt_k_unc = reshape(ar_k_unc, [it_zgridno,it_agridno]); 
< 0.001 
      1 
 100
mt_l_unc = reshape(ar_l_unc, [it_zgridno,it_agridno]); 
 101 

< 0.001 
      1 
 102
mt_k_unc = mt_k_unc'; 
< 0.001 
      1 
 103
mt_l_unc = mt_l_unc'; 
 104 

 105 

 106 
%% Optimal Unconstrained 
 107 

< 0.001 
      1 
 108
if (~bl_constrained) 
 109 
    
 110 
    % in the constrained case, a can not matter, but z does matter
 111 
    if(bl_feas)
 112 
    feas  = (1+fl_r)*fl_kappa;
 113 
    feas_v = ar_z_v.*ar_k_unc.^fl_alpha.*ar_l_unc.^fl_theta;
 114 
    for i = 1:numel(ar_a_v)
 115 
       if (feas_v(i)<feas)
 116 
       ar_k_unc(i) = 0;
 117 
       ar_l_unc(i) = 0;
 118 
       end
 119 
    end
 120 
    end
 121 
    
 122 
    mt_k_unc = reshape(ar_k_unc, [it_zgridno,it_agridno]);
 123 
    mt_l_unc = reshape(ar_l_unc, [it_zgridno,it_agridno]);
 124 

 125 
    mt_k_unc = mt_k_unc';
 126 
    mt_l_unc = mt_l_unc';
 127 
    
 128 
    mt_k_star = mt_k_unc;
 129 
    mt_l_star = mt_l_unc;
 130 
    
 131 
if( bl_print)
 132 
    disp('Below is mt_k_star')
 133 
    disp(size(mt_k_star));
 134 
    disp(mt_k_star);
 135 
    disp('Below is mt_l_star')
 136 
    disp(size(mt_l_star));
 137 
    disp(mt_l_star);
 138 
end
 139 

< 0.001 
      1 
 140
else 
 141 
    
 142 
    %% Optimal Constrained
 143 
    
 144 
    % calls function con_kl to evaluate the constraint on capital
  0.393 
      1 
 145
    [ar_k_bar,ar_l_bar] = con_kl(ar_a_v, ar_z_v,ar_a,ar_z, fl_ahi,fl_zhi,fl_phi,fl_theta,fl_alpha,fl_w,fl_r,fl_delta,fl_kappa,it_agridno,it_zgridno); 
 146 
    
< 0.001 
      1 
 147
    mt_k_bar=reshape(ar_k_bar, [it_zgridno,it_agridno]); 
< 0.001 
      1 
 148
    mt_l_bar=reshape(ar_l_bar, [it_zgridno,it_agridno]); 
 149 
    
< 0.001 
      1 
 150
    mt_k_bar = mt_k_bar'; 
< 0.001 
      1 
 151
    mt_l_bar = mt_l_bar'; 
 152 
    
 153 
    
< 0.001 
      1 
 154
    k3        = [ar_k_unc,ar_k_bar];       
< 0.001 
      1 
 155
    [k4,id]   = min(abs(k3'));            % K star is min of k_unc and k_con. k3 transposed for the correct order for id 
< 0.001 
      1 
 156
    ar_k_star = k4'; 
< 0.001 
      1 
 157
    l3        =[ar_l_unc,ar_l_bar]; 
< 0.001 
      1 
 158
    ar_l_star = zeros(numel(ar_a_v),1);    % assigning l star in constrained case 
 159 
    
< 0.001 
      1 
 160
    for i = 1:numel(ar_a_v) 
< 0.001 
     30 
 161
        ar_l_star(i,1)=l3(i,id(i)); 
< 0.001 
     30 
 162
    end 
 163 
 
< 0.001 
      1 
 164
    if(bl_feas) 
< 0.001 
      1 
 165
    feas  = (1+fl_r)*fl_kappa; 
< 0.001 
      1 
 166
    feas_v = ar_z_v.*ar_k_star.^fl_alpha.*ar_l_star.^fl_theta; 
< 0.001 
      1 
 167
    for i = 1:numel(ar_a_v) 
< 0.001 
     30 
 168
       if (feas_v(i)<feas) 
 169 
       ar_k_star(i) = 0;
 170 
       ar_l_star(i) = 0;
 171 
       end
< 0.001 
     30 
 172
    end 
< 0.001 
      1 
 173
    end 
 174 

 175 

< 0.001 
      1 
 176
mt_k_star=reshape(ar_k_star, [it_zgridno,it_agridno]); 
< 0.001 
      1 
 177
mt_l_star=reshape(ar_l_star, [it_zgridno,it_agridno]); 
 178 

< 0.001 
      1 
 179
 mt_k_star=mt_k_star'; 
< 0.001 
      1 
 180
 mt_l_star=mt_l_star'; 
 181 
    
< 0.001 
      1 
 182
if( bl_print) 
 183 
    disp('Below is mt_k_unc')
 184 
    disp(size(mt_k_unc));
 185 
    disp(mt_k_unc);
 186 
    disp('Below is mt_k_con')
 187 
    disp(mt_k_bar);
 188 
    disp('Below is mt_k_star')
 189 
    disp(size(mt_k_star));
 190 
    disp(mt_k_star);
 191 
    disp('Below is mt_l_unc')
 192 
    disp(size(mt_l_unc));
 193 
    disp(mt_l_unc);
 194 
    disp('Below is mt_l_con')
 195 
    disp(mt_l_bar);
 196 
    disp('Below is mt_l_star')
 197 
    disp(mt_l_star);
 198 
    
 199 
    
 200 
end
 201 

< 0.001 
      1 
 202
if(bl_plot) 
 203 

 204 
%% 3D Plots for k* and l* 
 205 

 206 
figure (1)
 207 
a1 = surf(ar_z, ar_a, mt_k_bar , 'FaceColor','r', 'FaceAlpha',0.5, 'EdgeColor','r'); M1 = 'k bar';
 208 
hold on
 209 
a2 = surf(ar_z, ar_a, mt_k_unc , 'FaceColor','b', 'FaceAlpha',0.5, 'EdgeColor','b'); M2 = 'k unc';
 210 
%hold on
 211 
%a3 = surf(ar_z, ar_a, mt_k_star,'FaceColor','g', 'FaceAlpha',0.5, 'EdgeColor','g'); M3 = 'k star' ;
 212 
hold off
 213 
xlabel('z');
 214 
ylabel('a');
 215 
zlabel('k(unconstrained/constrained/optimal)');
 216 
LEG = legend([a1;a2], M1, M2, 'Location','north')
 217 
LEG.FontSize = 20;
 218 
view(150,15);
 219 
set(gca,'FontSize',17)
 220 
if(bl_saveimg)
 221 
saveas(gcf, '/Users/sidhantkhanna/Documents/GitHub/BKS modified/code/Firms/figures/optikl/Optimum_k.png')
 222 
end
 223 

 224 
figure (2)
 225 
b1 = surf(ar_z, ar_a, mt_l_bar, 'FaceColor','r', 'FaceAlpha',0.5, 'EdgeColor','r'); N1 = 'l bar';
 226 
hold on
 227 
b2 = surf(ar_z, ar_a, mt_l_unc, 'FaceColor','b', 'FaceAlpha',0.5, 'EdgeColor','b'); N2 = 'l unc';
 228 
%hold on
 229 
%b3 = surf(ar_z, ar_a, mt_l_star,'FaceColor','g', 'FaceAlpha',0.5, 'EdgeColor','g'); N3 = 'l star' ;
 230 
hold off
 231 
xlabel('z');
 232 
ylabel('a');
 233 
zlabel('l(unconstrained/constrained/optimal)');
 234 
LEG = legend([b1;b2], N1, N2, 'Location','north')
 235 
LEG.FontSize = 20;
 236 
view(150,15);
 237 
set(gca,'FontSize',17)
 238 
if(bl_saveimg)
 239 
saveas(gcf, '/Users/sidhantkhanna/Documents/GitHub/BKS modified/code/Firms/figures/optikl/Optimum_l.png')
 240 
end
 241 

 242 
%% 2D plot for k*
 243 

 244 
% Jet color Graph All
 245 
figure(3);
 246 
hold on;
 247 

 248 
% one line, unconstrained choice
 249 
pl_unc = plot(ar_z, mt_k_unc(1,:));
 250 
pl_unc.HandleVisibility = 'on';
 251 
pl_unc.LineStyle = '-';
 252 
pl_unc.Color = 'black';
 253 
pl_unc.LineWidth = 4;
 254 

 255 
% one constrained choice line, low a
 256 
pl_unc = plot(ar_z, mt_k_bar(2,:));
 257 
pl_unc.HandleVisibility = 'on';
 258 
pl_unc.LineStyle = '--';
 259 
pl_unc.Color = 'red';
 260 
pl_unc.LineWidth = 3;
 261 

 262 
% one constrained choice line, high a
 263 
pl_unc = plot(ar_z, mt_k_bar(4,:));
 264 
pl_unc.HandleVisibility = 'on';
 265 
pl_unc.LineStyle = '-.';
 266 
pl_unc.Color = 'blue';
 267 
pl_unc.LineWidth = 3;
 268 

 269 
% additional options
 270 
grid on;
 271 
grid minor;
 272 
xlim([1, 2.2]);
 273 
ylim([0, 10]);
 274 

 275 
title('Unconstrained Choices and Endogenous Borrowing Constraints');
 276 
ylabel('Capital Levels');
 277 
xlabel({'Productivity Levels'});
 278 
legend({'Unconstrained Optimal Choice',...
 279 
        'Borrowing Bound low A', ...
 280 
        'Borrowing Bound high A'}, 'Location', 'best', 'Interpreter','latex');
 281 

 282 
if(bl_saveimg)
 283 
saveas(gcf, '/Users/sidhantkhanna/Documents/GitHub/BKS modified/code/Firms/figures/optikl/Optimum_2D.png')
 284 
end
 285 

 286 
hold off;
 287 

 288 
end
 289 

< 0.001 
      1 
 290
end 
 291 

< 0.001 
      1 
 292
if(bl_profile) 
 293 
profile off;
 294 
profile viewer;
 295 
st_file_name = '/Users/sidhantkhanna/Documents/GitHub/BKS modified/code/Profile/Firms/optikl';
 296 
profsave(profile('info'), st_file_name);
 297 

 298 

 299 
end