⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atadmissioncontrol.m

📁 ofdm系统当中的接纳控制技术 程序当中有三种接纳控制算法的对比 都是基于ofdm系统的
💻 M
字号:
function  [SuccessAdmission,FailureAdmission] = ...ATAdmissionControl(RealSCNum,ACDynamicRatio,ATRate,ATStarveRate,N,ATTrafficType,SlotTime,AdmissionControlStrategy,ATSuccessAdmission,ATFailureAdmission);%这一步实现动态产生用户请求,完成接入控制global ATActive;global AverageStarveRate;global ATRTTrafficTimer;SuccessAdmission = ATSuccessAdmission;global ATDeactiveTimer;FailureAdmission = ATFailureAdmission;global ATTotalActiveTime;global AverageRealSCnum;BETA = 0.01;    %指数平滑因子,100个时隙ACTHRESHHOLD = 100000;%bpsSCThrreshhold = 250;FREEINTERVAL = 3;   %unit:sMAX = 10;   %sMIN = 6;    %sif AdmissionControlStrategy == 0    for a = 1:N        if ATTrafficType(a) == 4            if ATActive(a) == 1   %处于传输激活状态                if ATRTTrafficTimer(a) > 0    %传输还没有结束                    ATRTTrafficTimer(a) = ATRTTrafficTimer(a) - 1;  %传输时隙减少1                    continue;                else            %传输Timer到时                    ATRTTrafficTimer(a) = max(0,ATRTTrafficTimer(a));                    ATActive(a) = 0;   %设置为非激活状态                    ATDeactiveTimer(a) = floor(exprnd(FREEINTERVAL)/SlotTime);  %设置空闲计时器                end            else    %移动台处于非传输状态                if ATDeactiveTimer(a) > 0 %还处于空闲状态                    ATDeactiveTimer(a) = ATDeactiveTimer(a) - 1;                    continue;                else                    ATDeactiveTimer(a) = max(0,ATDeactiveTimer(a));                    ATActive(a) = 1;                    ATRTTrafficTimer(a) = floor((MIN+(MAX-MIN)*rand())/SlotTime);                    ATTotalActiveTime(a) = ATTotalActiveTime(a) + ATRTTrafficTimer(a);                    SuccessAdmission(a) = SuccessAdmission(a) + 1;                end            end        end%         if ATTrafficType(a) == 2    %对FTP用户作接入控制%             if ATActive(a) == 1%                 continue;%             else%                 if sumStarveRate > ACTHRESHHOLD%                     FailureAdmission(a) = FailureAdmission(a) + 1;%                 else%                     Active(a) = 1;%                     SuccessAdmission(a) = SuccessAdmission(a) + 1;%                 end%             end%         end    endelseif AdmissionControlStrategy == 1    %采用申请速率和实际传输速率的差来判断接入    AverageStarveRate = (1-BETA)*AverageStarveRate + BETA*ATStarveRate;    sumStarveRate = sum(AverageStarveRate);    for a = 1:N        if ATTrafficType(a) == 4            if ATActive(a) == 1   %处于传输激活状态                if ATRTTrafficTimer(a) > 0    %传输还没有结束                    ATRTTrafficTimer(a) = ATRTTrafficTimer(a) - 1;  %传输时隙减少1                    continue;                else            %传输Timer到时                    ATRTTrafficTimer(a) = max(0,ATRTTrafficTimer(a));                    ATActive(a) = 0;   %设置为非激活状态                    ATDeactiveTimer(a) = floor(exprnd(FREEINTERVAL)/SlotTime);  %设置空闲计时器                end            else    %移动台处于非传输状态                if ATDeactiveTimer(a) > 0 %还处于空闲状态                    ATDeactiveTimer(a) = ATDeactiveTimer(a) - 1;                    continue;                else                    ATDeactiveTimer(a) = max(0,ATDeactiveTimer(a));                    if sumStarveRate > ACDynamicRatio*ACTHRESHHOLD                        ATActive(a) = 0;                        ATRTTrafficTimer(a) = 0;%floor(60+(100-60)*rand())/SlotTime;                        FailureAdmission(a) = FailureAdmission(a) + 1;                        ATDeactiveTimer(a) = floor(exprnd(FREEINTERVAL)/SlotTime);                    else                        ATActive(a) = 1;                        ATRTTrafficTimer(a) = floor((MIN+(MAX-MIN)*rand())/SlotTime);                        ATTotalActiveTime(a) = ATTotalActiveTime(a) + ATRTTrafficTimer(a);                        SuccessAdmission(a) = SuccessAdmission(a) + 1;                    end                end            end        end%         if ATTrafficType(a) == 2    %对FTP用户作接入控制%             if ATActive(a) == 1%                 continue;%             else%                 if sumStarveRate > ACTHRESHHOLD%                     FailureAdmission(a) = FailureAdmission(a) + 1;%                 else%                     Active(a) = 1;%                     SuccessAdmission(a) = SuccessAdmission(a) + 1;%                 end%             end%         end    endelseif AdmissionControlStrategy == 2    AverageRealSCnum = (1-BETA)*AverageRealSCnum + BETA*RealSCNum;    for a = 1:N        if ATTrafficType(a) == 4            if ATActive(a) == 1   %处于传输激活状态                if ATRTTrafficTimer(a) > 0    %传输还没有结束                    ATRTTrafficTimer(a) = ATRTTrafficTimer(a) - 1;  %传输时隙减少1                    continue;                else            %传输Timer到时                    ATRTTrafficTimer(a) = max(0,ATRTTrafficTimer(a));                    ATActive(a) = 0;   %设置为非激活状态                    ATDeactiveTimer(a) = floor(exprnd(FREEINTERVAL)/SlotTime);  %设置空闲计时器                end            else    %移动台处于非传输状态                if ATDeactiveTimer(a) > 0 %还处于空闲状态                    ATDeactiveTimer(a) = ATDeactiveTimer(a) - 1;                    continue;                else                    ATDeactiveTimer(a) = max(0,ATDeactiveTimer(a));                    if AverageRealSCnum > SCThrreshhold                        ATActive(a) = 0;                        ATRTTrafficTimer(a) = 0;%floor(60+(100-60)*rand())/SlotTime;                        FailureAdmission(a) = FailureAdmission(a) + 1;                        ATDeactiveTimer(a) = floor(exprnd(FREEINTERVAL)/SlotTime);                    else                        ATActive(a) = 1;                        ATRTTrafficTimer(a) = floor((MIN+(MAX-MIN)*rand())/SlotTime);                        ATTotalActiveTime(a) = ATTotalActiveTime(a) + ATRTTrafficTimer(a);                        SuccessAdmission(a) = SuccessAdmission(a) + 1;                    end                end            end        end    endend%     averageStarveRate = (1-BETA)*averageStarveRate + BETA*ATRate;;%注意,此时AverageStarveRate用来表示系统的平均吞吐量%     sumRate = sum(averageStarveRate);%     RateREQ = sum(ATRate + ATStarveRate);%     for a = 1:N%         if ATTrafficType(a) == 4%             if Active(a) == 1   %处于传输激活状态%                 if RTTrafficTimer(a) > 0    %传输还没有结束%                     RTTrafficTimer(a) = RTTrafficTimer(a) - 1;  %传输时隙减少1%                     continue;%                 else            %传输Timer到时%                     RTTrafficTimer(a) = max(0,RTTrafficTimer(a));%                     Active(a) = 0;   %设置为非激活状态%                     DeactiveTimer(a) = floor(exprnd(3)/SlotTime);  %设置空闲计时器%                 end%             else    %移动台处于非传输状态%                 if DeactiveTimer(a) > 0 %还处于空闲状态%                     DeactiveTimer(a) = DeactiveTimer(a) - 1;%                     continue;%                 else%                     DeactiveTimer(a) = max(0,DeactiveTimer(a));%                     if sumRate > ACDynamicRatio*ACTHRESHHOLD%                         Active(a) = 0;%                         RTTrafficTimer(a) = 0;%floor(60+(100-60)*rand())/SlotTime;%                         FailureAdmission(a) = FailureAdmission(a) + 1;%                         DeactiveTimer(a) = floor(exprnd(3)/SlotTime);%                     else%                         Active(a) = 1;%                         RTTrafficTimer(a) = floor((6+(10-6)*rand())/SlotTime);%                         TotalActiveTime(a) = TotalActiveTime(a) + RTTrafficTimer(a);%                         SuccessAdmission(a) = SuccessAdmission(a) + 1;%                     end%                 end%             end%         end% %         if ATTrafficType(a) == 2    %对FTP用户作接入控制% %             if ATActive(a) == 1% %                 continue;% %             else% %                 if sumStarveRate > ACTHRESHHOLD% %                     FailureAdmission(a) = FailureAdmission(a) + 1;% %                 else% %                     Active(a) = 1;% %                     SuccessAdmission(a) = SuccessAdmission(a) + 1;% %                 end% %             end% %         end%     end% end            

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -