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

m基于PSO粒子群优化的柔性制造系统AGV调度模型matlab仿真

时间:2022/12/14 18:44:52 点击:

  核心提示:02_103m,包括程序操作录像+参考文献...

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

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

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

点击店铺

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

2.部分仿真图预览



3.算法概述

        在PSO中,群中的每个粒子表示为向量。在投资组合优化的背景下,这是一个权重向量,表示每个资产的分配资本。矢量转换为多维搜索空间中的位置。每个粒子也会记住它最好的历史位置。对于PSO的每次迭代,找到全局最优位置。这是群体中最好的最优位置。一旦找到全局最优位置,每个粒子都会更接近其局部最优位置和全局最优位置。当在多次迭代中执行时,该过程产生一个解决该问题的良好解决方案,因为粒子会聚在近似最优解上。

4.部分源码

dim   = nvar; %变量数量         

Lmin =  lb;

Lmax =  ub;

c1    = 2.5;         %学习因子1

c2    = 2.5;         %学习因子2

w     = 1;         %惯性权重

Iters = 200;         %最大迭代次数

Num   = 400;           

 

%初始化种群的个体(可以在这里限定位置和速度的范围)

for i = 1:nvar

    for j = 1:Num

        x(j,i) = Lmin(i) + (Lmax(i)-Lmin(i))*rand(1,1);  %随机初始化位置

        v(j,i) = Lmin(i) + (Lmax(i)-Lmin(i))*rand(1,1);  %随机初始化速度

    end

end

y     = [];

%先计算各个粒子的适应度,并初始化Pi和Pg

for i=1:Num

    i

    [p(i),z1,z2,z3] = func_F(x(i,:));

    y(i,:)          = x(i,:);

end

%全局最优

pg = x(1,:);             

for i=2:Num

    i

    [pa(i),z1,z2,z3] = func_F(x(i,:));

    pb(i)            = func_F(pg);

    if pa(i) < pb(i)

       pg=x(i,:);

    end

end

for t=1:Iters

    t

    for i=1:Num

        v(i,:)           = w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(pg-x(i,:));

        x(i,:)           = x(i,:)+v(i,:);

        [pa(i),z1,z2,z3] = func_F(x(i,:));

        if pa(i)<p(i)

           p(i)  = pa(i);

           y(i,:)= x(i,:);

        end

        [pb(i),z1,z2,z3] = func_F(pg);

        if p(i)<pb(i)

           pg=y(i,:);

        end

    [Pbest(i),z1_(i),z2_(i),z3_(i)] = func_F(pg);    

    end

    Fs(t)=mean(Pbest);

    Y1       = z1_;

    Y2       = z2_;

    Y3       = z3_;

    tmps     = pg;

end

figure;

plot(Fs);

xlabel('PSO迭代次数');

ylabel('fitness');

grid on

pg

II=15;

Total_time = Y1(II);

Total_WT   = Y2(II);

max_WT     = Y3(II);

X          = tmps;

% Z=fitness(X)

%显示甘特图

[V,I] = sort(X(1:end));

seq1 = sort(I(1:N1));

seq2 = sort(I(N1+1:N1+N2));

seq3 = sort(I(N1+N2+1:N1+N2+N3));

seq4 = sort(I(N1+N2+N3+1:N1+N2+N3+N4));%选择了任务3的计算机器

seq5 = sort(I(N1+N2+N3+N4+1:N1+N2+N3+N4+N5));%选择了任务3的计算机器

x1   = mach(seq1);

x2   = mach(seq2);

x3   = mach(seq3);

x4   = mach(seq4);

x5   = mach(seq5);

for i = 1:N1

    c1(1,i) = time1(x1(i)); 

end

for i = 1:N2

    c2(1,i) = time2(x2(i)); 

end

for i = 1:N3

    c3(1,i) = time3(x3(i)); 

end

for i = 1:N4

    c4(1,i) = time4(x4(i)); 

end

for i = 1:N5

    c5(1,i) = time5(x5(i)); 

end

 

xx  = [x1,x2,x3,x4,x5]

seq = [seq1,seq2,seq3,seq4,seq5] 

cc  = [c1,c2,c3,c4,c5] 

%[x y w h]

LEN = N1+N2+N3+N4+N5;

rec1(:,LEN)=[0,0,0,0]';

rec2(:,LEN)=[0,0,0,0]';

rec3(:,LEN)=[0,0,0,0]';

rec4(:,LEN)=[0,0,0,0]';

rec5(:,LEN)=[0,0,0,0]';

    end

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

        Timesave5(cnt5)=cc(idx);

    end  

end

02_103m

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