您现在的位置:首页 >> 智能优化 >> 内容

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

时间:2023/1/25 22:42:40 点击:

  核心提示:A295,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y56YlZtx

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览




3.算法概述

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

4.部分源码

...................................................................

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

A295

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168