基于二进制粒子群算法(BPSO)的计算卸载策略求解matlab代码

文章提出了一种使用二进制粒子群优化算法(BPSO)来解决移动边缘计算(MEC)环境中计算卸载导致的移动终端高能耗问题。通过模拟和优化计算密集型任务的卸载,旨在提升系统服务质量和降低能量消耗。

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

基于移动边缘计算(MEC)环境下的计算卸载技术有效缓解了传统无线网络数据中心的处理压力,提升了系统服务质量.针对计算密集型任务卸载使得移动终端设备能量消耗大的问题,提出了一种基于二进制粒子群算法(BPSO)的计算卸载策略.

⛄ 完整代码

clc

clear

close all

% 初始化种群

narvs = 30;  %解的维数

n = 100;     %粒子的个数100个

x_ub = 10;    

x_lb = -10;   

vmax = 1.2;                  %粒子的最大速度

w = 0.9;                     % 惯性权重

c1 = 2;                      % 每个粒子的个体学习因子,也称为个体加速常数

c2 = 2;                      % 每个粒子的社会学习因子,也称为社会加速常数

%%初始种群

x = randsrc(n,narvs,[0,1;0.5,0.5]);      %设置0和1随机出现的概率均为0.5,x为n行narvs列的矩阵

v = -vmax + 2*vmax .* rand(n,narvs);     %v为n行narvs列的矩阵

s=0;

fitness=zeros(n,1);

for i=1:n

   

   for k=1:30

      f=((1-x(i,k))*10e-26*((rand(1)+1)*5*10^9)^3)+x(i,k)*(0.5*((rand(1)*2+1)/250000))+0.01*(((rand(1)+1)*5*10^9)/(rand(1)*4*10^9));

      s=s+f;

   end

   fit=s; 

   fitness(i,1)=fit;

end

fitness;                                 %计算种群初始值

pbest = x;                               % 初始化这n个粒子迄今为止找到的最佳位置(是一个n*narvs的向量),局部最优解

ind = find(fitness == max(fitness), 1);  % 找到适应度最大的那个粒子的下标     find函数:返回fitness函数中前1个非零元素的位置

gbest = x(ind,:);                        % 定义所有粒子迄今为止找到的最佳位置(是一个1*narvs的向量),全局最优解

K=100;                       %迭代次数

fitnessbest=zeros(K,1);      %保存每一代的函数值  ; zeros(K,1)生成一个K行1列的0矩阵

best=0;

bestOne =zeros(1,30);       %  zeros(1,30)生成一个1行10列的0矩阵

for t = 1:K                  %迭代循环100次  

    for i = 1:n

        v(i,:) = w*v(i,:) + c1*rand(1)*(pbest(i,:) - x(i,:)) + c2*rand(1)*(gbest - x(i,:));

        % 判断速度是否超过限制了(还可以取模)

        for j = 1:narvs

            if v(i,j) < -vmax

                v(i,j) = -vmax;

                

            elseif v(i,j) > vmax

                v(i,j) = vmax;

            end

        end

        x

        v

        %sigmoid函数将例子的速度映射到0-1之间

        vs(i,:)=1./(1+exp(-v(i,:))); 

        for j = 1:narvs

            if rand < vs(i,j)

                x(i,j) = 1;

            else

                x(i,j) = 0;

            end

        end

       x

        s=0;

        for k=1:narvs

            f=((1-x(i,k))*10e-26*((rand(1)+1)*5*10^9)^3)+x(i,k)*(0.5*((rand(1)*2+1)/250000))+0.01*(((rand(1)+1)*5*10^9)/(rand(1)*4*10^9));

            s=s+f;

        end

        fit =s;

      

        s=0;

        for k=1:narvs

            f=((1-pbest(i,k))*10e-26*((rand(1)+1)*5*10^9)^3)+pbest(i,k)*(0.5*((rand(1)*2+1)/250000))+0.01*(((rand(1)+1)*5*10^9)/(rand(1)*4*10^9));

            s=s+f;

        end

        fpbest=s;

           

          s=0;

        for k=1:30

            f=((1-gbest(k))*10e-26*((rand(1)+1)*5*10^9)^3)+gbest(k)*(0.5*((rand(1)*2+1)/250000))+0.01*(((rand(1)+1)*5*10^9)/(rand(1)*4*10^9));

            s=s+f;

        end

        fgbest=s;

       

     % 重新计算第i个粒子的适应度

        if fit > fpbest                      % 如果第i个粒子的适应度大于这个粒子迄今为止找到的最佳位置对应的适应度

            pbest(i,:) = x(i,:);                       % 那就更新第i个粒子迄今为止找到的最佳位置(更新局部最优解)

        end

        if  fit > fgbest                                % 如果第i个粒子的适应度大于所有的粒子迄今为止找到的最佳位置对应的适应度

            gbest = pbest(i,:);                        % 那就更新所有粒子迄今为止找到的最佳位置(更新全局最优解)

        end 

    end

    h = fgbest;

    if h>best         

        best = h; 

        best0ne = gbest;  

    end

    fitnessbest(t,1)=best; 

end

bestOne;

figure

plot(1:K,fitnessbest,'-');

grid on;

grid minor;

⛄ 运行结果

⛄ 参考文献

[1]姚玉海, 王增平, 郭昆亚,等. 基于E占优的多目标二进制粒子群算法求解配电网故障恢复[J]. 电力系统保护与控制, 2014, 42(23):6.

⛳️ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值