【老生谈算法】matlab实现MF-TDMA系统中多用户多业务的无线接入控制和时隙分配算法源码——时隙分配算法

MF-TDMA系统中多用户多业务的无线接入控制和时隙分配算法MATLAB源代码

假设在调度时间之内,有M个用户发出资源调度请求,每个用户请求的时隙数量互不相同,但均小于超帧能够提供的最大时隙数量(注:如果大于超帧数量,则用整个超帧进行传输,剩下不足一个超帧的再进行调度)。

假设这M个用户请求的时隙个数为1≤xi<P,i=1,…,M,其中P表示超帧包含的传输时隙个数。系统可供利用的信道数为N,信道和时隙联合分配的目的就是:如何在各个信道的超帧中安排这些业务请求,以使得占用的信道数尽可能少,并且各超帧的承载尽可能均衡。

传统的信道和时隙分配是分开的,在做信道分配的时候不能做到全局考虑和统筹兼顾,导致最终的资源分配并不是最优的。本算法将信道分配和时隙分配作为一个整体考虑,使用全局优化的遗传模拟退火加以解决。

源码如下:

function [BestX,BestY,BestZ,AllFarm,LC1,LC2,LC3,LC4,LC5]=GSAALB(M,N,Pm,Pd,K,t0,alpha,TaskP,TaskT,TaskV,RT,RV)
%% MF-TDMA系统中信道和时隙联合分配的遗传模拟退火算法
%  GreenSim团队——专业级算法设计&代写程序
%  欢迎访问GreenSim团队主页→http://blog.sina.com.cn/greensim
%% 输入参数列表
% M------------遗传算法进化代数
% N------------种群规模,取偶数
% Pm-----------变异概率调节参数
% Pd-----------变异程度调节参数,0<Pd<1,越大,变异的基因位越多
% K------------同一温度下状态跳转次数
% T0-----------初始温度
% Alpha--------降温系数
% Beta---------浓度均衡系数
%% 输出参数列表
% BestX--------最好个体的编码
% BestY--------最好个体对应的装配方案
% BestZ--------最好个体的目标函数值
%% -----------------------初始化----------------------------------
n=size(TaskP,1);
[AA,BB]=QJHJ(TaskP);
farm=Initialization(N,TaskP,AA,BB);%调用子函数,种群初始化
%输出参数初始化
BestX=zeros(1,n);
BestY=zeros(1,n);
BestZ=0;
LC1=zeros(M,1);
LC2=zeros(M,1);
LC3=zeros(M,1);
LC4=zeros(M,1);
LC5=zeros(M,1);
AllFarm=cell(M,1);
%控制参数初始化
m=1;%迭代计数器
t=t0;%温度指示器
BestPos=1;%初始时任意指定被保护个体
%% -----------------------迭代过程---------------------------------
while m<=M%设置停止条件    
%% ----------------------变异退火算子------------------------------
    for i=1:N
        if rand>Pm&&i~=BestPos
            %如果随机数大于变异概率门限值,并且不属于保护个体,就对其实施变异
            I=farm(i,:);%取出该个体
            k=1;
            while k<=K%每一个温度下的状态转移次数
                %调用变异子函数
                J=Mutation(I,Pd,AA,BB);
                %调用计算适应值子函数
                [YI,ZI,FI,TGWI,VGWI,f1I,f2I]=Fitness(I,TaskT,TaskV,RT,RV);
                [YJ,ZJ,FJ,TGWJ,VGWJ,f1J,f2J]=Fitness(J,TaskT,TaskV,RT,RV);
                if FJ>FI
                    farm(i,:)=J;
                elseif rand<exp((FJ-FI)/(FI*t))
                    farm(i,:)=J;
                else
                    farm(i,:)=I;
                end
                k=k+1;
            end
        end
    end    
%% -----------------------交叉算子---------------------------------
    newfarm=zeros(size(farm));
    Ser=randperm(N);%用这个函数保证随机配对
    for i=1:2:(N-1)
        FA=farm(Ser(i),:);
        FB=farm(Ser(i+1),:);
        [SA,SB]=CrossOver(FA,FB);
        newfarm(i,:)=SA;
        newfarm(i+1,:)=SB;
    end
    %新旧种群合并
    FARM=[farm;newfarm];    
%% -----------------------选择复制---------------------------------
   FIT_Y=zeros(2*N,n);
   FIT_Z=zeros(2*N,1);
   FIT_F=zeros(2*N,1);
   FIT_f1=zeros(2*N,1);
   FIT_f2=zeros(2*N,1);
   fit_Y=zeros(N,n);
   fit_Z=zeros(N,1);
   fit_F=zeros(N,1);
   fit_f1=zeros(N,1);
   fit_f2=zeros(N,1);
   for i=1:(2*N)
       XX=FARM(i,:);
       [Y,Z,F,TGW,VGW,f1,f2]=Fitness(XX,TaskT,TaskV,RT,RV);
       FIT_Y(i,:)=Y;
       FIT_Z(i)=Z;
       FIT_F(i)=F;
       FIT_f1(i)=f1;
       FIT_f2(i)=f2;
   end
   Ser=randperm(2*N);
   for i=1:N
       ff1=FIT_F(Ser(2*i-1));
       ff2=FIT_F(Ser(2*i));
       if ff1>=ff2
           farm(i,:)=FARM(Ser(2*i-1),:);
           fit_Y(i,:)=FIT_Y(Ser(2*i-1),:);
           fit_Z(i)=FIT_Z(Ser(2*i-1));
           fit_F(i)=FIT_F(Ser(2*i-1));
           fit_f1(i)=FIT_f1(Ser(2*i-1));
           fit_f2(i)=FIT_f2(Ser(2*i-1));
       else
           farm(i,:)=FARM(Ser(2*i),:);
           fit_Y(i,:)=FIT_Y(Ser(2*i),:);
           fit_Z(i)=FIT_Z(Ser(2*i));
           fit_F(i)=FIT_F(Ser(2*i));
           fit_f1(i)=FIT_f1(Ser(2*i));
           fit_f2(i)=FIT_f2(Ser(2*i));
       end
   end   
%% -----------------------记录与更新-------------------------------
   maxF=max(fit_F);
   meanF=mean(fit_F);
   LC1(m)=maxF;
   LC2(m)=meanF;
   pos=find(fit_F==maxF);
   BestPos=pos(1);
   BestX=farm(BestPos,:);
   BestY=fit_Y(BestPos,:);
   BestZ=fit_Z(BestPos);
   LC3(m)=fit_Z(BestPos);
   LC4(m)=fit_f1(BestPos);
   LC5(m)=fit_f2(BestPos);
   AllFarm{
    
    m}=farm;
   disp(m);
   m=m+1;
   t=t*alpha;
end

源代码运行结果展示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_53407570/article/details/125251141