1.软件版本
MATLAB2013a
2.本算法理论知识
基于概率切换和最小化概率切换的频谱切换算法,由于过多的考虑了资源的合理利用,使得次用户的不切换概率并大于等于
的情况,从而导致对应的次用户的服务质量显著下降,考虑到这个因素,文献[40]提出了一种基于频谱空洞预留机制的频谱分配算法,从而最大程度上保证这些次用户的服务质量。
根据文献所述,当出现授权用户的时候,次用户必须暂停当前所占的行道,并切换到其他的频谱空洞上继续完成未完成的服务。然后,过多的频谱切换会带来很多切换时延,这样就很难保证次用户的服务质量,特别对于一些实时性较强的服务,影响更大。文献[40] 提出的频谱空洞的预留方案使不能保证服务质量的次用户直接使用预留的频谱空洞,不再进行频谱感知、频谱请求等过程,从而最大程度上降低频谱切换时延。
根据文献所述,当空洞上进行通信时实际的不切换概率
,如果
大于
,说明用于通信的频谱空洞可以满足次用户的服务质量要求,不需要再给该次用户预留任何频谱空洞;否则,如果
,说明次用户在实际获得的频谱空洞上进行通信时达不到自己的服务质量要求,很可能会出现中断服务等情况,需要为之预留频谱空洞,使它切换到预留频谱空洞上继续完成通信。由此可见,为次用户预留频谱空洞的条件为:
我们假设预留的频谱空洞时间至少可以刚好满足服务质量的要求,从而有:
进一步可以得到:
更进一步可以得到:
可以得到:
式子为预留因子,当预留因子为0的时候,说明不需要再为次用户的通信预留其他的频谱空洞,当预留因子为1的时候,表示在服务时间内都要在预留频谱空洞上进行通信。通过预留频谱空洞算法,就可以保证次用户通信过程中的服务质量要求,弥补频谱空洞匹配算法的不足,使次用户顺利完成自己的服务。
3.核心代码
登录后复制
clc;clear;close all;warning off;RandStream.setDefaultStream(RandStream('mt19937ar','seed',1));addpath 'My_Function\' %自定义函数路径addpath 'My_Figure\' %仿真结果图保存路径addpath 'My_Result\' %仿真结果及仿真中间结果数值保存路径%参数化lemda = 0.2;M = 50;%用户数量%信道数目N = 10;lemda = 1/2000 + (1/200-1/2000)*rand(N,1);%1/2000 ~ 1/200的均匀分布Treqi = zeros(M,1);PQi = zeros(M,1);PQi2 = zeros(M,1);PHij = zeros(M,N);PHij2 = zeros(M,1);betai = zeros(M,1);for nn = 1:M nn TIME = 100; NUM = 0; %中继信道lemda lemda2 = 1/1000 + (1/100-1/1000)*rand(N,1);%1/1000 ~ 1/100的均匀分布 for t = 1:TIME for i = 1:nn %步骤1:对次用户业务服务质量所要求的PQi等进行初始化,即最小的不发生切换的概率 PQi(i) = rand(1,1)/2; %步骤2:次用户SUi的目标切换概率1-PQi PQi2(i) = 1 - PQi(i); %步骤3:计算次用户在不同频谱空洞上通信的实际切换概率Phij Treqi(i) = 10 + (300-10)*rand(1,1); for j = 1:N PHij(i,j) = 1-exp(-lemda(j)*Treqi(i)); end %步骤4:根据Hi,找到切换概率和目标切换概率的差值最小的频谱空洞j for j = 1:N Hs1(j) = abs(PQi(i) - exp(-lemda(j)*Treqi(i))); end %考虑中继协作,CR用户和中继进行竞争,获得最佳的II值。 for j = 1:N PHij(i,j) = 1-exp(-lemda2(j)*Treqi(i)); end for j = 1:N Hs2(j) = abs(PQi(i) - exp(-lemda2(j)*Treqi(i))); end Hss = [Hs1,Hs2]; [VV,II] = min(Hss); %步骤5:把频谱控制j分配给对应的次用户i lemdas = [lemda;lemda2]; H(i) = Hss(II);%将最佳的空洞j分配给次用户i %步骤6:计算次用户SUi在频谱空洞j上通信的不切换概率 PHij2(i) =1-exp(-lemdas(II)*Treqi(i)); %步骤7:比较1-Phij和PQi的大小,1-Phij > PQi,beta=0,则不需要预留频谱空洞,1-Phij <= %PQi,beta不等于0,则需要频谱预留 if PHij2(i) > PQi betai(i) = 0; else betai(i) = 1+log(PQi(i))/lemdas(II)/Treqi(i); end %步骤8:计算对应的切换次数 if betai(i) ~=0; NUM = NUM + 1; end end end PRO(nn) = NUM/TIME;endhold onplot(1:M,PRO,'k','Linewidth',2);PRO1 = PRO;Treqi = zeros(M,1);PQi = zeros(M,1);PQi2 = zeros(M,1);PHij = zeros(M,N);PHij2 = zeros(M,1);betai = zeros(M,1);for nn = 1:M nn TIME = 100; NUM = 0; for t = 1:TIME for i = 1:nn %步骤1:对次用户业务服务质量所要求的PQi等进行初始化,即最小的不发生切换的概率 PQi(i) = rand(1,1)/2; %步骤2:次用户SUi的目标切换概率1-PQi PQi2(i) = 1 - PQi(i); %步骤3:计算次用户在不同频谱空洞上通信的实际切换概率Phij Treqi(i) = 10 + (300-10)*rand(1,1); for j = 1:N PHij(i,j) = 1-exp(-lemda(j)*Treqi(i)); end %步骤4:根据Hi,找到切换概率和目标切换概率的差值最小的频谱空洞j for j = 1:N Hs(j) = abs(PQi(i) - exp(-lemda(j)*Treqi(i))); end %步骤5:把频谱控制j分配给对应的次用户i [VV,II] = min(Hs); H(i) = Hs(II);%将最佳的空洞j分配给次用户i %下面的步骤引入频谱预留的思想,进行切换的改进 %步骤6:计算次用户SUi在频谱空洞j上通信的不切换概率1-Phij PHij2(i) = 1-(1-exp(-lemda(II)*Treqi(i))); %步骤7:比较1-Phij和PQi的大小,1-Phij > PQi,beta=0,则不需要预留频谱空洞,1-Phij <= %PQi,beta不等于0,则需要频谱预留 if PHij2(i) > PQi betai(i) = 0; else betai(i) = 1+log(PQi(i))/lemda(II)/Treqi(i); end %步骤8:计算对应的切换次数 if betai(i) ~=0; NUM = NUM + 1; end end end PRO(nn) = NUM/TIME;endhold onplot(1:M,PRO,'b','Linewidth',2);PRO2 = PRO;Treqi = zeros(M,1);PQi = zeros(M,1);PQi2 = zeros(M,1);PHij = zeros(M,N);PHij2 = zeros(M,1);betai = zeros(M,1);for nn = 1:M nn TIME = 100; NUM = 0; for t = 1:TIME for i = 1:nn %步骤1:对次用户业务服务质量所要求的PQi等进行初始化,即最小的不发生切换的概率 PQi(i) = rand(1,1)/2; %步骤2:次用户SUi的目标切换概率1-PQi PQi2(i) = 1 - PQi(i); %步骤3:计算次用户在不同频谱空洞上通信的实际切换概率Phij Treqi(i) = 10 + (300-10)*rand(1,1); for j = 1:N PHij(i,j) = 1-exp(-lemda(j)*Treqi(i)); end %步骤4:根据Hi,找到切换概率和目标切换概率的差值最小的频谱空洞j for j = 1:N Hs(j) = abs(PQi(i) - exp(-lemda(j)*Treqi(i))); end %步骤5:把频谱控制j分配给对应的次用户i [VV,II] = min(Hs); H(i) = Hs(II);%将最佳的空洞j分配给次用户i %步骤6:计算次用户SUi在频谱空洞j上通信的切换概率Phij PHij2(i) = 1-(1-exp(-lemda(II)*Treqi(i))); %步骤6:计算对应的切换次数 NUM = NUM+PHij2(i); end end PRO(nn) = NUM/TIME;endhold onplot(1:M,PRO,'r','Linewidth',2);PRO3 = PRO;xlabel('次用户个数');ylabel('切换次数');legend('中继协作基于最小概率的频谱空洞预留算法','基于最小概率的频谱空洞预留算法','基于最小概率的频谱空洞匹配算法');save result1.mat M PRO1 PRO2 PRO31.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.100.101.102.103.104.105.106.107.108.109.110.111.112.113.114.115.116.117.118.119.120.121.122.123.124.125.126.127.128.129.130.131.132.133.134.135.136.137.138.139.140.141.142.143.144.145.146.147.148.149.150.151.152.153.154.155.156.157.158.159.160.161.162.163.164.165.166.167.168.169.170.171.172.173.174.175.176.177.178.179.180.181.182.183.184.185.186.187.188.189.190.191.192.193.
4.操作步骤与仿真结论
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删