www.pudn.com > TrdeoffinTDMsystem.rar > Evaluation_10_users_all_index.asv


% =========================================================================
% Copyright (c)2006, 东南大学移动通信国家重点实验室
% All rights reserved.
%
% 文件名称:Evaluation_12_users_all_index.m
% function描述:12用户场景下的调度算法性能评估

% 当前版本: 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 = 10;

% 计算用户位置
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=5
K = 5;
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=5
K = 5;
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_12_users_op_curve.mat


figure
plot(op_fair_gini,op_th_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('Framework','RR','Max C/I','PF','Hybrid N/A K=2','Hybrid N/A K=5','Hybrid A/N K=2','Hybrid A/N K=5', 4)
xlabel('Fairness');
ylabel('Throughput (bps/Hz)');

figure
plot(op_fair_jain,op_th_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('Framework','RR','Max C/I','PF','Hybrid N/A K=2','Hybrid N/A K=5','Hybrid A/N K=2','Hybrid A/N K=5', 3)
xlabel('Fairness');
ylabel('Throughput (bps/Hz)');

figure
plot(op_fair_log,op_th_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=5','Hybrid A/N K=2','Hybrid A/N K=5',3)
xlabel('Fairness');
ylabel('Throughput (bps/Hz)');