www.pudn.com > TrdeoffinTDMsystem.rar > Evaluation_6_users_all_index.m
% =========================================================================
% Copyright (c)2006, 东南大学移动通信国家重点实验室
% All rights reserved.
%
% 文件名称:Evaluation_6_users_all_index.m
% function描述:6用户场景下的调度算法性能评估
% 当前版本: 1.0
% 作 者:梁浩
% 完成日期: 2007年6月
%==========================================================================
clear
clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 初始化
% 设置系统参数
alpha = 3.52249;
L0 = 140.4193;
sigma_original = 8;
mean_m = -2.5;
var_m = 31;
Pt = 10.^(40./10)./1000;
N0 = 10.^(-100./10)./1000;
beta = 10 ./ log(10);
% 设置用户数目
N = 12;
% 计算用户位置
for i = 1:N
d(i) = 2 ./ (N+1) .* i;
end
% 计算用户接收SNR的均值和标准差
mean = - 10 .* alpha .* log10(d) - L0 + mean_m + 10 .* log10(Pt./N0);
sigma = ones(1,N) .* sqrt(sigma_original.^2 + var_m);
'8888888888888888888888'
mean
sigma
% 计算信噪比平均值的dB值
aveSNR_dB = 10 .* log10(exp(mean./beta + sigma.^2./2./beta.^2));
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 性能评估
% RR
rrFair_gini = RRFair_Gini(N, mean, sigma)
rrFair_jain = RRFair_Jain(N, mean, sigma)
rrFair_log = RRFair_Log(N, mean, sigma)
rrTh = RRTh(N, mean, sigma)
% Max C/I
maxCIFair_gini = MaxCIFair_Gini(N, mean, sigma)
maxCIFair_jain = MaxCIFair_Jain(N, mean, sigma)
maxCIFair_log = MaxCIFair_Log(N, mean, sigma)
maxCITh = MaxCITh(N, mean, sigma)
% PF
pfFair_gini = PFFair_Gini(N, mean, sigma, aveSNR_dB)
pfFair_jain = PFFair_Jain(N, mean, sigma, aveSNR_dB)
pfFair_log = PFFair_Log(N, mean, sigma, aveSNR_dB)
pfTh = PFTh(N, mean, sigma, aveSNR_dB)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 分组#1(折中分组,多取一个转置),Hybird N/A K=2
K = 2;
clear user_per_group;
clear vecN;
clear mean_grouped;
clear sigma_grouped;
clear aveSNRn;
user_per_group = N ./ K;
vecN = user_per_group .* ones(1, K);
for k = 1:K
for u = 1:user_per_group
mean_grouped(k, u) = mean(k + (u-1).*K); % 对均值和标准差进行分组,使其更为均匀
sigma_grouped(k, u) = sigma(k + (u-1).*K);
aveSNR_dB_grouped(k, u) = aveSNR_dB(k + (u-1).*K); % 信噪比平均值的dB表达同样需要分组
end
end
% % % mean_grouped
% % % sigma_grouped
for i = 1:K
for j= 1:vecN(i)
Th_1(i,j) = Hy_NA_Th(10^(-3),'x_hi', 10^(-3), 10^4, K, vecN, mean_grouped, sigma_grouped, aveSNR_dB_grouped, i, j)
end
end
hyNAFair_1_gini = Fairness_Gini(N, Th_1)
hyNAFair_1_jain = Fairness_Jain(N, Th_1)
hyNAFair_1_log = Fairness_Log(N, Th_1)
hyNATh_1 = sum(sum(Th_1))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 分组#2(折中分组,多取一个转置),Hybird N/A K=3
K = 3;
clear user_per_group;
clear vecN;
clear mean_grouped;
clear sigma_grouped;
clear aveSNRn;
user_per_group = N ./ K;
vecN = user_per_group .* ones(1, K);
for k = 1:K
for u = 1:user_per_group
mean_grouped(k, u) = mean(k + (u-1).*K); % 对均值和标准差进行分组,使其更为均匀
sigma_grouped(k, u) = sigma(k + (u-1).*K);
aveSNR_dB_grouped(k, u) = aveSNR_dB(k + (u-1).*K); % 信噪比平均值的dB表达同样需要分组
end
end
% % % mean_grouped
% % % sigma_grouped
for i = 1:K
for j= 1:vecN(i)
Th_2(i,j) = Hy_NA_Th(10^(-3),'x_hi', 10^(-3), 10^4, K, vecN, mean_grouped, sigma_grouped, aveSNR_dB_grouped, i, j)
end
end
hyNAFair_2_gini = Fairness_Gini(N, Th_2)
hyNAFair_2_jain = Fairness_Jain(N, Th_2)
hyNAFair_2_log = Fairness_Log(N, Th_2)
hyNATh_2 = sum(sum(Th_2))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 分组#3(折中分组,多取一个转置),Hybird A/N K=2
K = 2;
clear user_per_group;
clear vecN;
clear mean_grouped;
clear sigma_grouped;
clear aveSNRn;
user_per_group = N ./ K;
vecN = user_per_group .* ones(1, K);
for k = 1:K
for u = 1:user_per_group
mean_grouped(k, u) = mean(k + (u-1).*K); % 对均值和标准差进行分组,使其更为均匀
sigma_grouped(k, u) = sigma(k + (u-1).*K);
end
end
% % % mean_grouped
% % % sigma_grouped
% 计算Hybrid A/N方法中用到的中间参数aveSNRn
for n = 1:K
aveSNRn(n) = quadl(@Hy_AN_modpdf, 10^(-4), 10^8, 10^(-12), [], vecN, mean_grouped, sigma_grouped, n);
end
aveSNRn
for i = 1:K
for j= 1:vecN(i)
Th_3(i,j) = Hy_AN_Th(10^(-3),'x_hi', 10^(-3), 10^4, K, vecN, mean_grouped, sigma_grouped, aveSNRn, i, j)
end
end
hyANFair_3_gini = Fairness_Gini(N, Th_3)
hyANFair_3_jain = Fairness_Jain(N, Th_3)
hyANFair_3_log = Fairness_Log(N, Th_3)
hyANTh_3 = sum(sum(Th_3))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 分组#4(折中分组,多取一个转置),Hybird A/N K=3
K = 3;
clear user_per_group;
clear vecN;
clear mean_grouped;
clear sigma_grouped;
clear aveSNRn;
user_per_group = N ./ K;
vecN = user_per_group .* ones(1, K);
for k = 1:K
for u = 1:user_per_group
mean_grouped(k, u) = mean(k + (u-1).*K); % 对均值和标准差进行分组,使其更为均匀
sigma_grouped(k, u) = sigma(k + (u-1).*K);
end
end
% % % mean_grouped
% % % sigma_grouped
% 计算Hybrid A/N方法中用到的中间参数aveSNRn
for n = 1:K
aveSNRn(n) = quadl(@Hy_AN_modpdf, 10^(-4), 10^8, 10^(-12), [], vecN, mean_grouped, sigma_grouped, n);
end
aveSNRn
for i = 1:K
for j= 1:vecN(i)
Th_4(i,j) = Hy_AN_Th(10^(-3),'x_hi', 10^(-3), 10^4, K, vecN, mean_grouped, sigma_grouped, aveSNRn, i, j)
end
end
hyANFair_4_gini = Fairness_Gini(N, Th_4)
hyANFair_4_jain = Fairness_Jain(N, Th_4)
hyANFair_4_log = Fairness_Log(N, Th_4)
hyANTh_4 = sum(sum(Th_4))
rand('state', 0)
[PBFS_Th_gini_100, PBFS_Fair_gini_100] = PBFS_Gini(N, mean, sigma, ones(1, N), 5000, 3)
[PBFS_Th_gini_500, PBFS_Fair_gini_500] = PBFS_Gini(N, mean, sigma, ones(1, N), 5000, 50)
[PBFS_Th_gini_3000, PBFS_Fair_gini_3000] = PBFS_Gini(N, mean, sigma, ones(1, N), 5000, 500)
[PBFS_Th_jain_100, PBFS_Fair_jain_100] = PBFS_Jain(N, mean, sigma, ones(1, N), 5000, 3)
[PBFS_Th_jain_500, PBFS_Fair_jain_500] = PBFS_Jain(N, mean, sigma, ones(1, N), 5000, 50)
[PBFS_Th_jain_3000, PBFS_Fair_jain_3000] = PBFS_Jain(N, mean, sigma, ones(1, N), 5000, 500)
[PBFS_Th_log_100, PBFS_Fair_log_100] = PBFS_Log(N, mean, sigma, ones(1, N), 5000, 3)
[PBFS_Th_log_500, PBFS_Fair_log_500] = PBFS_Log(N, mean, sigma, ones(1, N), 5000, 50)
[PBFS_Th_log_3000, PBFS_Fair_log_3000] = PBFS_Log(N, mean, sigma, ones(1, N), 5000, 500)
% [S_PBFS_Th, S_PBFS_Fair] = S_PBFS_Gini(N, mean, sigma, ones(1, N), 1000)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 读入最优曲线
% load mat_6_users_op_curve.mat
figure
plot(aimFair_gini,opTh_gini,'k.-')
hold on;
plot(rrFair_gini,rrTh,'kh')
hold on;
plot(maxCIFair_gini,maxCITh , 'ks');
hold on;
plot(pfFair_gini,pfTh , 'kd');
hold on;
plot(hyNAFair_1_gini, hyNATh_1, 'k<')
hold on;
plot(hyNAFair_2_gini, hyNATh_2, 'k>')
hold on;
plot(hyANFair_3_gini, hyANTh_3, 'k^')
hold on;
plot(hyANFair_4_gini, hyANTh_4, 'kv')
hold on;
plot(PBFS_Fair_gini_100,PBFS_Th_gini_100, 'k*')
hold on;
plot(PBFS_Fair_gini_500,PBFS_Th_gini_500, 'k+')
hold on;
plot(PBFS_Fair_gini_3000,PBFS_Th_gini_3000, 'kp')
hold on;
% plot(S_PBFS_Fair,S_PBFS_Th, 'k+')
% hold on;
grid on;
legend('Optimal Curve','RR','Max C/I','PF','Hybrid N/A K=2','Hybrid N/A K=3','Hybrid A/N K=2','Hybrid A/N K=3', 'PBFS D=6', 'PBFS D=100', 'PBFS D=1000', 4)
xlabel('Fairness');
ylabel('Throughput (bps/Hz)');
figure
plot(aimFair_jain,opTh_jain,'k.-')
hold on;
plot(rrFair_jain,rrTh,'kh')
hold on;
plot(maxCIFair_jain,maxCITh , 'ks');
hold on;
plot(pfFair_jain,pfTh , 'kd');
hold on;
plot(hyNAFair_1_jain, hyNATh_1, 'k<')
hold on;
plot(hyNAFair_2_jain, hyNATh_2, 'k>')
hold on;
plot(hyANFair_3_jain, hyANTh_3, 'k^')
hold on;
plot(hyANFair_4_jain, hyANTh_4, 'kv')
hold on;
plot(PBFS_Fair_jain_100,PBFS_Th_jain_100, 'k*')
hold on;
plot(PBFS_Fair_jain_500,PBFS_Th_jain_500, 'k+')
hold on;
plot(PBFS_Fair_jain_3000,PBFS_Th_jain_3000, 'kp')
hold on;
% plot(S_PBFS_Fair,S_PBFS_Th, 'k+')
% hold on;
grid on;
legend('Optimal Curve','RR','Max C/I','PF','Hybrid N/A K=2','Hybrid N/A K=3','Hybrid A/N K=2','Hybrid A/N K=3', 'PBFS D=6', 'PBFS D=100', 'PBFS D=1000', 3)
xlabel('Fairness');
ylabel('Throughput (bps/Hz)');
figure
plot(aimFair_log,opTh_log,'k.-')
hold on;
plot(rrFair_log,rrTh,'kh')
hold on;
plot(maxCIFair_log,maxCITh , 'ks');
hold on;
plot(pfFair_log,pfTh , 'kd');
hold on;
plot(hyNAFair_1_log, hyNATh_1, 'k<')
hold on;
plot(hyNAFair_2_log, hyNATh_2, 'k>')
hold on;
plot(hyANFair_3_log, hyANTh_3, 'k^')
hold on;
plot(hyANFair_4_log, hyANTh_4, 'kv')
hold on;
plot(PBFS_Fair_log_100,PBFS_Th_log_100, 'k*')
hold on;
plot(PBFS_Fair_log_500,PBFS_Th_log_500, 'k+')
hold on;
plot(PBFS_Fair_log_3000,PBFS_Th_log_3000, 'kp')
hold on;
% plot(S_PBFS_Fair,S_PBFS_Th, 'k+')
% hold on;
grid on;
legend('Optimal Curve','RR','Max C/I','PF','Hybrid N/A K=2','Hybrid N/A K=3','Hybrid A/N K=2','Hybrid A/N K=3', 'PBFS D=6', 'PBFS D=100', 'PBFS D=1000', 3)
xlabel('Fairness');
ylabel('Throughput (bps/Hz)');