Skip to content

Commit

Permalink
Commit before creating new rep on Gitlab
Browse files Browse the repository at this point in the history
  • Loading branch information
elokdae committed Apr 6, 2021
1 parent ff28b42 commit 6ff753b
Show file tree
Hide file tree
Showing 24 changed files with 311 additions and 145 deletions.
21 changes: 13 additions & 8 deletions Matlab/karma_nash_equilibrium/karma_nash_equilibrium.m
Original file line number Diff line number Diff line change
Expand Up @@ -300,20 +300,25 @@
% Store end results
if ne_param.save
file_str = ['karma_nash_equilibrium/results/k_bar_', num2str(param.k_bar, '%02d')];
if param.n_alpha == 1
if alpha > 0.99 && alpha < 1
alpha_str = num2str(alpha, '%.3f');
else
alpha_str = num2str(alpha, '%.2f');
if param.n_mu > 1
file_str = [file_str, '_w'];
for i_mu = 1 : param.n_mu
file_str = [file_str, '_', num2str(param.w_up_mu(i_mu), '%.2f')];
end
file_str = [file_str, '_alpha_', alpha_str, '.mat'];
else
elseif param.n_alpha > 1
file_str = [file_str, '_z'];
for i_alpha = 1 : param.n_alpha
file_str = [file_str, '_', num2str(param.z_up_alpha(i_alpha), '%.2f')];
end
file_str = [file_str, '.mat'];
else
if alpha > 0.99 && alpha < 1
alpha_str = num2str(alpha, '%.3f');
else
alpha_str = num2str(alpha, '%.2f');
end
file_str = [file_str, '_alpha_', alpha_str];
end
file_str = [file_str, '.mat'];
save(file_str);
end

Expand Down
2 changes: 1 addition & 1 deletion Matlab/karma_nash_equilibrium/load_ne_parameters.m
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
function ne_param = load_ne_parameters(param)

% Maximum karma level. Used as a starting point
ne_param.k_max = 80;
ne_param.k_max = 50;

% Set of all karma values
ne_param.K = (0 : ne_param.k_max).';
Expand Down
4 changes: 2 additions & 2 deletions Matlab/karma_nash_equilibrium/ne_functions/plot_sw_pi.m
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ function plot_sw_pi(fg, position, colormap, sw_pi_down_u_k_up_m, U, K, M, k_ave)
subplot(1, num_U, i_u);
sw_pi_plot{i_u} = heatmap(K, M, pi_mat.', 'ColorbarVisible','off');
sw_pi_plot{i_u}.YDisplayData = flipud(sw_pi_plot{i_u}.YDisplayData);
sw_pi_plot{i_u}.Title = ['k_{avg} = ', num2str(k_ave, '%02d'), ' SW policy for u = ', num2str(U(i_u))];
sw_pi_plot{i_u}.Title = ['k_{bar} = ', num2str(k_ave, '%02d'), ' SW policy for u = ', num2str(U(i_u))];
sw_pi_plot{i_u}.XLabel = 'Karma';
sw_pi_plot{i_u}.YLabel = 'Message';
sw_pi_plot{i_u}.FontName = 'Ubuntu';
Expand All @@ -29,7 +29,7 @@ function plot_sw_pi(fg, position, colormap, sw_pi_down_u_k_up_m, U, K, M, k_ave)
pi_mat = squeeze(sw_pi_down_u_k_up_m(i_u,:,:));
pi_mat(pi_mat <= 1e-6) = nan;
sw_pi_plot{i_u}.ColorData = pi_mat.';
sw_pi_plot{i_u}.Title = ['k_{avg} = ', num2str(k_ave, '%02d'), ' SW policy for u = ', num2str(U(i_u))];
sw_pi_plot{i_u}.Title = ['k_{bar} = ', num2str(k_ave, '%02d'), ' SW policy for u = ', num2str(U(i_u))];
end
end
end
31 changes: 18 additions & 13 deletions Matlab/karma_nash_equilibrium/ne_functions/write_d_csv.m
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
% Wrtie stationary distribution to csv file
function num_K = write_d_csv(d_up_u_k, U, K, s_tol, fileprefix)
num_U = length(U);
num_K = length(K);
s_up_k = sum(d_up_u_k).';
function n_k = write_d_csv(d_up_mu_alpha_u_k, sigma_up_k, param, ne_param, sigma_tol, fileprefix)
n_k = ne_param.n_k;
K = ne_param.K;

% Remove tail of distribution where there are too few agents
while s_up_k(num_K) < s_tol
num_K = num_K - 1;
while sigma_up_k(n_k) < sigma_tol
n_k = n_k - 1;
end
if num_K == length(K)
K = [K; K(end)+1];
d_up_u_k = [d_up_u_k, zeros(num_U, 1)];
if n_k == length(K)
K(end+1) = K(end)+1;
d_up_mu_alpha_u_k(:,:,:,end+1) = 0;
end

% Header
header = ["u", "k", "k2", "P(k)"];
header = ["mu", "alpha", "u", "k", "k2", "P(k)"];
filename = [fileprefix, '.csv'];
fout = fopen(filename, 'w');
for i = 1 : length(header) - 1
Expand All @@ -24,8 +23,14 @@
fclose(fout);

% Data
for i_u = 1 : num_U
data = [U(i_u) * ones(num_K + 1, 1), K(1:num_K+1), K(1:num_K+1) - 0.5, d_up_u_k(i_u,1:num_K+1).'];
dlmwrite(filename, data, '-append');
for i_mu = 1 : param.n_mu
MU = i_mu * ones(n_k + 1, 1);
for i_alpha = 1 : param.n_alpha
ALPHA = param.Alpha(i_alpha) * ones(n_k + 1, 1);
for i_u = 1 : param.n_u
data = [MU, ALPHA, param.U(i_u) * ones(n_k + 1, 1), K(1:n_k+1), K(1:n_k+1) - 0.5, squeeze(d_up_mu_alpha_u_k(i_mu,i_alpha,i_u,1:n_k+1))];
dlmwrite(filename, data, '-append');
end
end
end
end
64 changes: 36 additions & 28 deletions Matlab/karma_nash_equilibrium/ne_functions/write_pi_csv.m
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
% Write policy to csv file
function num_K = write_pi_csv(pi_down_u_k_up_m, s_up_k, U, K, pi_tol, s_tol, fileprefix)
num_U = length(U);
num_K = length(K);

function n_k = write_pi_csv(pi_down_mu_alpha_u_k_up_m, sigma_up_k, param, ne_param, pi_tol, sigma_tol, fileprefix)
n_k = ne_param.n_k;

% Remove tail of distribution where there are too few agents
while s_up_k(num_K) < s_tol
num_K = num_K - 1;
while sigma_up_k(n_k) < sigma_tol
n_k = n_k - 1;
end

% Remove 'zero' values
pi_down_u_k_up_m(pi_down_u_k_up_m < pi_tol) = 0;
for i_u = 1 : num_U
for i_k = 1 : num_K
pi_down_u_k_up_m(i_u,i_k,1:num_K) = pi_down_u_k_up_m(i_u,i_k,1:num_K) / sum(pi_down_u_k_up_m(i_u,i_k,1:num_K));
pi_down_mu_alpha_u_k_up_m(pi_down_mu_alpha_u_k_up_m < pi_tol) = 0;
for i_mu = 1 : param.n_mu
for i_alpha = 1 : param.n_alpha
for i_u = 1 : param.n_u
for i_k = 1 : n_k
pi_down_mu_alpha_u_k_up_m(i_mu,i_alpha,i_u,i_k,1:n_k) = pi_down_mu_alpha_u_k_up_m(i_mu,i_alpha,i_u,i_k,1:n_k) / sum(pi_down_mu_alpha_u_k_up_m(i_mu,i_alpha,i_u,i_k,1:n_k));
end
end
end
end

% Header
header = ["u", "k", "k2", "b", "b2", "P(b)"];
header = ["mu", "alpha", "u", "k", "k2", "b", "b2", "P(b)"];
filename = [fileprefix, '.csv'];
fout = fopen(filename, 'w');
for i = 1 : length(header) - 1
Expand All @@ -27,7 +30,7 @@
fclose(fout);

% Header for mean of policy
header_mean = ["u", "k", "b"];
header_mean = ["mu", "alpha", "u", "k", "b"];
filename_mean = [fileprefix, '_mean.csv'];
fout = fopen(filename_mean, 'w');
for i = 1 : length(header_mean) - 1
Expand All @@ -37,23 +40,28 @@
fclose(fout);

% Data
for i_u = 1 : num_U
u = U(i_u);
for i_k = 1 : num_K + 1
k = i_k - 1;
for i_b = 1 : num_K + 1
b = i_b - 1;
if i_b <= i_k && i_k <= num_K
line = [u, k, k - 0.5, b, b - 0.5, pi_down_u_k_up_m(i_u,i_k,i_b)];
else
line = [u, k, k - 0.5, b, b - 0.5, 2];
end
dlmwrite(filename, line, '-append');
end
for i_mu = 1 : param.n_mu
for i_alpha = 1 : param.n_alpha
alpha = param.Alpha(i_alpha);
for i_u = 1 : param.n_u
u = param.U(i_u);
for i_k = 1 : n_k + 1
k = i_k - 1;
for i_b = 1 : n_k + 1
b = i_b - 1;
if i_b <= i_k && i_k <= n_k
line = [i_mu, alpha, u, k, k - 0.5, b, b - 0.5, pi_down_mu_alpha_u_k_up_m(i_mu,i_alpha,i_u,i_k,i_b)];
else
line = [i_mu, alpha, u, k, k - 0.5, b, b - 0.5, 2];
end
dlmwrite(filename, line, '-append');
end

if i_k <= num_K
line_mean = [U(i_u), K(i_k), dot(squeeze(pi_down_u_k_up_m(i_u,i_k,:)), K)];
dlmwrite(filename_mean, line_mean, '-append');
if i_k <= n_k
line_mean = [i_mu, alpha, u, k, dot(squeeze(pi_down_mu_alpha_u_k_up_m(i_mu,i_alpha,i_u,i_k,:)), ne_param.K)];
dlmwrite(filename_mean, line_mean, '-append');
end
end
end
end
end
Expand Down
30 changes: 0 additions & 30 deletions Matlab/karma_nash_equilibrium/ne_functions/write_s_csv.m

This file was deleted.

36 changes: 36 additions & 0 deletions Matlab/karma_nash_equilibrium/ne_functions/write_sigma_csv.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
% Wrtie stationary karma distribution to csv file
function n_k = write_sigma_csv(sigma_down_mu_alpha_up_k, sigma_up_k, param, ne_param, sigma_tol, fileprefix)
n_k = ne_param.n_k;
K = ne_param.K;

% Remove tail of distribution where there are too few agents
while sigma_up_k(n_k) < sigma_tol
n_k = n_k - 1;
end
if n_k == length(K)
K(end+1) = K(end) + 1;
sigma_down_mu_alpha_up_k(:,:,end+1) = 0;
end

% Renormalize
sigma_down_mu_alpha_up_k = sigma_down_mu_alpha_up_k ./ sum(sigma_down_mu_alpha_up_k, 3);

% Header
header = ["mu", "alpha", "k", "k2", "P(k)"];
filename = [fileprefix, '.csv'];
fout = fopen(filename, 'w');
for i = 1 : length(header) - 1
fprintf(fout, '%s,', header(i));
end
fprintf(fout, '%s\n', header(end));
fclose(fout);

% Data
for i_mu = 1 : param.n_mu
MU = i_mu * ones(n_k + 1, 1);
for i_alpha = 1 : param.n_alpha
data = [MU, param.Alpha(i_alpha) * ones(n_k + 1, 1), K(1:n_k+1), K(1:n_k+1) - 0.5, squeeze(sigma_down_mu_alpha_up_k(i_mu,i_alpha,1:n_k+1))];
dlmwrite(filename, data, '-append');
end
end
end
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading

0 comments on commit 6ff753b

Please sign in to comment.