首页 > 其他分享 >基于WOA鲸鱼优化的5G通信系统资源分配优化matlab仿真

基于WOA鲸鱼优化的5G通信系统资源分配优化matlab仿真

时间:2023-04-13 23:45:53浏览次数:49  
标签:rand end 优化 iter matlab 载波 WOA Leader Positions

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

2.算法涉及理论知识概要

3.1鲸鱼算法

       鲸鱼算法(Whale Optimization Algorithm,WOA)[1]。鲸鱼优化算法(WOA)是 2016 年由澳大利亚格里菲斯大学的 Mirjalili 等提出的一种新的群体智能优化算法,因算法简练易于实现,且对目标函数条件要求宽松,参数控制较少等种种优点受到一批又一批学者的亲睐,且经过不断的改进WOA已应用于许多领域。WOA算法设计的既精妙又富有特色,它源于对自然界中座头鲸群体狩猎行为的模拟, 通过鲸鱼群体搜索、包围、追捕和攻击猎物等过程实现优时化搜索的目的。在原始的WOA中,提供了包围猎物,螺旋气泡、寻找猎物的数学模型。

 

       WOA算法的初始阶段中,座头鲸并不知道食物所在的位置,他们都是通过群体合作来获得食物的位置信息,因此,距离食物最近的鲸鱼相当于当前的一个局部最优解,其他鲸鱼个体都会朝这个位置靠近,从而逐步包围食物,因此使用下列的数学模型表示:

 

 

 

 

2.2气泡攻击

 

   本阶段模仿座头鲸进行气泡攻击,通过收缩包围和螺旋更新位置来设计鲸鱼捕食吐出气泡的行为,从而达到鲸鱼局部寻优的目的。

 

 (1)螺旋更新位置

 

   座头鲸个体首先计算与当前最优鲸鱼的距离,然后再以螺旋方式游走,在进行食物的搜索时候,螺旋游走方式的数学模型为:

 

 

 

 

2.3寻觅食物阶段

 

       座头鲸通过控制|A|向量游走获取食物,当|A|>1的时候,座头鲸个体向着参考座头鲸的位置靠近,鲸鱼个体朝着随机选取的座头鲸更新位置,这种方式保证了座头鲸个体能够进行全局搜索,获得全局最优解,其数学模型表示如下:

 

 

 

 

3.2 5G通信系统资源分配

      5G针对不同的服务、部署场景和频谱,可以游戏可扩展的numerology。对于具有可扩展numerology的资源块设计,支持PRB定义,其中对于所有numerology,每个PRB的子载波数相同,每个PRB的子载波数一般为12。对于2n*15kHz的子载波间隔,子载波在频域中以嵌套方式映射到15kHz的子载波间隔的子集/超集上。当多个numerology在时域多路复用时,在一个载波中,不同numerology的RB位于相对固定的网格上,对于2n*15kHz的子载波间隔,RB网格被定义为在频域中嵌套的15kHz子载波间隔RB网格的子集/超集。

 

       对于每个PRB的子载波数,在NR中,12和16被视为候选,并在表1中进行比较:

 

       NR和LTE之间的频谱共享:每个PRB 12个子载波更好地支持NR和LTE之间的频谱共享。当NR和LTE的PRB定义相同时,对实现的影响将最小化。对于每个RB设计16个子载波,必须为NR设计独立实现。

        LTE设计的重用:每个PRB有12个子载波,可以重用许多LTE设计方面,例如LTE中的TBS表。由于每个PRB有16个子载波,调度器必须重新设计,并且必须为实现和规范付出巨大的努力。数据包大小/资源利用率:对于较小的数据包大小,例如用于URLLC模拟的32字节的URLLC服务,12可以提供比16更高的资源利用率和更少的冗余RE。对于中等和较大的分组大小,例如URLLC和eMBB服务,很难说哪一个更好,因为分组大小是灵活的,并且可以用12个子载波间隔分配比16子载波间隔分配更多的RB,具有相似的资源数量,即相似的利用率。

        BW利用率:在系统频带内,两个备选方案支持类似的BW利用率。同意支持高达约100%的带宽利用率。以20MHz BW和15kHz SCS为例,99.9%的带宽利用率和111个RB将在每个PRB有12个子载波的情况下处于活动状态,99.6%的带宽利用率和83个RB将在每个PRB有16个子载波的情况下处于活动状态。

       DCI的大小:在给定的BW下,每个RB 16个子载波提供的RB数少于12个,并且资源块分配所需的比特数也将更少。然而,通过适当的设计,DCI的尺寸可以减小,影响可以最小化。

 

3.MATLAB核心程序

 

delta = 1e-6;
Flag = 0;
Positions = initialization(SearchAgents_no, dim, ub, lb);
Convergence_curve = zeros(1,Max_iter);
iter = 0;  
while iter < Max_iter && Flag <= 3
    for i = 1:size(Positions,1)
 
        %返回超出搜索空间边界的搜索代理 
        Flag4ub = Positions(i,:) > ub;
        Flag4lb = Positions(i,:) < lb;
        Positions(i,:) = (Positions(i,:).*(~(Flag4ub+Flag4lb))) + ub.*Flag4ub + lb.*Flag4lb;
        
        % 计算每个搜索代理的目标函数
        fitness = fobj(Positions(i,:));
 
        %更新 
        if fitness < Leader_score   
            Leader_score = fitness;         
            Leader_pos = Positions(i,:);
        end       
    end
    
    a = 2 - iter*((2)/Max_iter);    
    
    a2 = -1 + iter*((-1)/Max_iter);
    
    % 更新搜索代理的位置
    for i = 1:size(Positions,1)
        r1 = rand();    
        r2 = rand();    
        
        A = 2*a*r1-a;   
        C = 2*r2;       
 
        b = 1;              
        l = (a2-1)*rand + 1;   
        
        p = rand();       
        
        for j = 1:size(Positions,2)
            if p < 0.5   
                if abs(A) >= 1
                    rand_leader_index = floor(SearchAgents_no*rand()+1);
                    X_rand = Positions(rand_leader_index, :);
                    D_X_rand = abs(C*X_rand(j) - Positions(i,j)); 
                    Positions(i,j) = X_rand(j) - A*D_X_rand;       
                elseif abs(A) < 1
                    D_Leader = abs(C*Leader_pos(j) - Positions(i,j)); 
                    Positions(i,j) = Leader_pos(j) - A*D_Leader;      
                end
            elseif p>=0.5
                distance2Leader = abs(Leader_pos(j)-Positions(i,j));
                Positions(i,j) = distance2Leader*exp(b.*l).*cos(l.*2*pi) + Leader_pos(j);
            end
        end
    end
    iter = iter + 1;
    Convergence_curve(iter) = -Leader_score;
    [iter -Leader_score]
end
end
function Positions = initialization(SearchAgents_no, dim, ub, lb)
Boundary_no = size(ub,2); 
if Boundary_no == 1
    Positions = rand(SearchAgents_no,dim).*(ub - lb) + lb;
end
if Boundary_no > 1
    for i = 1:dim
        ub_i = ub(i);
        lb_i = lb(i);
        Positions(:,i) = rand(SearchAgents_no,1).*(ub_i - lb_i) + lb_i;
    end
end
 
end

 

  

 

标签:rand,end,优化,iter,matlab,载波,WOA,Leader,Positions
From: https://www.cnblogs.com/51matlab/p/17316984.html

相关文章

  • m基于MATLAB和simulink实现模糊控制器以及模糊神经网络控制器
    1.算法仿真效果matlab2017b仿真结果如下:2.算法涉及理论知识概要模糊神经网络控制在控制领域里目前已经成为一个研究热点,其原因在于两者之间的互补性质。神经网络和模糊系统均属于无模型的估计器和非线性动力学系统,也是一种处理不确定性、非线性和其它不确定问题(ill-posedprob......
  • 对比不同子载波数量下的OFDM和FBMC频谱matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要OFDM(OrthogonalFrequencyDivisionMultiplexing)即正交频分复用技术,实际上OFDM是MCM(MultiCarrierModulation),多载波调制的一种。通过频分复用实现高速串行数据的并行传输,它具有较好的抗多径衰落的能力,能够......
  • m基于MATLAB和simulink实现模糊控制器以及模糊神经网络控制器
    1.算法仿真效果matlab2017b仿真结果如下:                 2.算法涉及理论知识概要        模糊神经网络控制在控制领域里目前已经成为一个研究热点,其原因在于两者之间的互补性质。神经网络和模糊系统均属于无模型的估计器和非线性......
  • 对比不同子载波数量下的OFDM和FBMC频谱matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:              2.算法涉及理论知识概要       OFDM(OrthogonalFrequencyDivisionMultiplexing)即正交频分复用技术,实际上OFDM是MCM(MultiCarrierModulation),多载波调制的一种。通过频分复用实......
  • MATLAB代码:基于改进K-means算法的含电动汽车负荷源荷场景聚类
    MATLAB代码:基于改进K-means算法的含电动汽车负荷源荷场景聚类关键词:有序聚类 改进k-means聚类电动汽车负荷聚类风光场景聚类 仿真平台:MATLAB主要内容:代码主要做的是基于改进k-means算法的场景生成,具体为含有电动汽车负荷的场景聚类问题,其中,光电和电负荷用有序聚类方法,风......
  • MATLAB代码:基于非对称纳什谈判的多微网P2P电能交易策略
    MATLAB代码:基于非对称纳什谈判的多微网P2P电能交易策略关键词:纳什谈判合作博弈 微网电转气-碳捕集 P2P电能交易交易   参考文档:加好友获取仿真平台:MATLABCPLEX+MOSEKIPOPT主要内容:该代码主要做的是微网间基于非对称纳什谈判的P2P电能交易共享问题,基于纳什谈判理论......
  • MATLAB代码:基于模型预测控制的楼宇负荷需求响应研究
    MATLAB代码:基于模型预测控制的楼宇负荷需求响应研究关键词:楼宇负荷空调模型预测控制需求响应 仿真平台:MATLAB+CVX平台主要内容:代码主要做的是一个建筑楼宇的需求响应问题,首先利用楼宇的储热特性,结合热力学方程构建了其储热模型,其次,考虑在动态能量电价的引导下,对楼宇负荷进......
  • MATLAB代码:基于两阶段鲁棒优化算法的微网电源容量优化配置
    MATLAB代码:基于两阶段鲁棒优化算法的微网电源容量优化配置关键词:容量优化配置微网 两阶段鲁棒规划仿真平台:MATLABYALMIP+CPLEX主要内容:代码主要做的是一个微网中电源容量优化配置的问题,即风电、光伏、储能以及燃气轮机的容量规划问题,程序考虑了不确定性,采用两阶段鲁棒优化......
  • MATLAB代码:基于条件风险价值CVaR的微网动态定价与调度策略
    MATLAB代码:基于条件风险价值CVaR的微网动态定价与调度策略关键词:P2P交易微网优化调度条件风险价值合作博弈动态定价参考文档:加好友获取仿真平台:MATLAByalmip+cplex+mosek主要内容:代码主要做的是一个基于主从博弈的考虑差别定价和风险管理的微网动态定价与调度策略,构建了......
  • MATLAB代码:基于分时电价条件下家庭能量管理策略研究
    MATLAB代码:基于分时电价条件下家庭能量管理策略研究关键词:家庭能量管理模型分时电价空调电动汽车可平移负荷仿真平台:MATLAB+CPLEX平台主要内容:代码主要做的是家庭能量管理模型,首先构建了电动汽车、空调、热水器以及烘干机等若干家庭用户用电设备的能量管理模型,其次,考虑在......