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

m基于NSGAII的多机器多任务调度排序优化matlab仿真,考虑机器任务完成时间、机器总负荷和最大

时间:2022/12/11 20:39:13 点击:

  核心提示:02_077m,包括程序操作录像+说明文档...

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

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

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

点击店铺

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

2.部分仿真图预览






3.算法概述

        NSGA-Ⅱ算法是 Srinivas 和 Deb 于 2000 年在 NSGA 的基础上提出的,它比 NSGA算法更加优越:它采用了快速非支配排序算法,计算复杂度比 NSGA 大大的降低;采用了拥挤度和拥挤度比较算子,代替了需要指定的共享半径 shareQ,并在快速排序后的同级比较中作为胜出标准,使准 Pareto 域中的个体能扩展到整个 Pareto 域,并均匀分布,保持了种群的多样性;引入了精英策略,扩大了采样空间,防止最佳个体的丢失,提高了算法的运算速度和鲁棒性。

       NSGA-Ⅱ就是在第一代非支配排序遗传算法的基础上改进而来,其改进主要是针对如上所述的三个方面:

    ①提出了快速非支配排序算法,一方面降低了计算的复杂度,另一方面它将父代种群跟子代种群进行合并,使得下一代的种群从双倍的空间中进行选取,从而保留了最为优秀的所有个体;

    ②引进精英策略,保证某些优良的种群个体在进化过程中不会被丢弃,从而提高了优化结果的精度;

    ③采用拥挤度和拥挤度比较算子,不但克服了NSGA中需要人为指定共享参数的缺陷,而且将其作为种群中个体间的比较标准,使得准Pareto域中的个体能均匀地扩展到整个Pareto域,保证了种群的多样性。

4.部分源码

%交叉概率

pc     = 0.8;       

ncross = 2*round(npop*pc/2);  

%变异概率

pm     = 0.2;       

nmut   = round(npop*pm);   

empty.pos   = [];

empty.cost  = [];

empty.dcount= []; 

empty.dset  = [];     

empty.rank  = [];      

empty.cdis  = [];      

pop         = repmat(empty,npop,1);

for i=1:npop

    pop(i).pos  = lb + rand(1,nvar).*(ub-lb);

    pop(i).cost = fitness(pop(i).pos);

end

[pop,F] = func_sorting(pop);

pop     = func_crowding_distance(pop,F);

pop     = func_2sorting(pop);

bests1  = []; 

bests2  = []; 

bests3  = []; 

for iter=1:maxiter

    iter

    %crossover

    crosspop = repmat(empty,ncross,1);

    crosspop = func_crossover(crosspop,pop,ncross,F,nvar);%%%%%%%%%%%%

     %mutation

    mutpop   = repmat(empty,nmut,1);

    mutpop   = func_mutation(mutpop,pop,nmut,lb,ub,nvar);

    pop      = [pop;crosspop;mutpop];

    [pop,F]  = func_sorting(pop);

    pop      = func_crowding_distance(pop,F);

    pop      = func_2sorting(pop);

    pop      = pop(1:npop);

    [pop,F]  = func_sorting(pop);

    pop      = func_crowding_distance(pop,F);

    pop      = func_2sorting(pop);

    C        =[pop.cost]';

    bests1   =[bests1,mean(C(:,1))]; 

    bests2   =[bests2,mean(C(:,2))]; 

    bests3   =[bests3,mean(C(:,3))]; 

    Y1       = C(:,1);

    Y2       = C(:,2);

    Y3       = C(:,3);

    tmps     = [pop.pos];

    figure(1);

    plot3(Y1,Y2,Y3,'bo');

    xlabel('任务完成时间');

    ylabel('所有任务计算完成时间之和');

    zlabel('单个任务样本完成的最大时间');

    grid on;

    axis([0.98*min(Y1),1.02*max(Y1),0.98*min(Y2),1.02*max(Y2),0.98*min(Y3),1.02*max(Y3)]);

    pause(0.0001);

end

% [VV,II]    = min(Y1+Y2+Y3);

II=8;

Total_time = Y1(II);

Total_WT   = Y2(II);

max_WT     = Y3(II);

X          = tmps(nvar*(II-1)+1:nvar*II);

% Z=fitness(X)

%显示甘特图

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

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

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

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

x1   = mach(seq1);

x2   = mach(seq2);

x3   = mach(seq3);

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

xx  = [x1,x2,x3]

seq = [seq1,seq2,seq3] 

cc  = [c1,c2,c3] 

02_077m

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