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

✅作者简介:热爱科研的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电子书和数学建模资料

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
离散二进制粒子群算法(Binary Particle Swarm Optimization,BPSO)是一种基于群体智能的优化算法,用于解决背包问题。BPSO算法的原理如下: 1. 初始化:首先,随机生成一群粒子,每个粒子代表一个解,即一个可行解。每个粒子都有一个二进制向量,表示是否选择对应的物品放入背包中。 2. 适应度计算:对于每个粒子,根据其二进制向量计算适应度函数值。适应度函数可以根据具体的背包问题定义,通常是考虑物品的重量和价值的线性组合。 3. 全局最优和个体最优更新:记录全局最优解以及每个粒子的个体最优解。个体最优解是该粒子自身历史上最好的解,全局最优解是所有粒子历史上最好的解。 4. 粒子位置更新:根据公式更新粒子的二进制向量位置。位置更新公式包括三个部分:个体认知部分(根据个体最优解调整位置)、社会认知部分(根据全局最优解调整位置)和惯性部分(根据当前位置调整位置)。 5. 重复步骤2-4直到满足停止条件:重复执行适应度计算、全局最优和个体最优更新以及粒子位置更新的步骤,直到满足停止条件,如达到最大迭代次数或找到满意的解。 6. 输出结果:输出全局最优解作为问题的最优解。 BPSO算法通过不断调整粒子的位置来搜索最优解,其中个体最优和全局最优的信息共享使得算法能够在搜索空间中快速收敛到较好的解。通过将问题表示为二进制向量,BPSO算法可以应用于背包问题等离散优化问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

matlab科研助手

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

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

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

打赏作者

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

抵扣说明:

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

余额充值