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

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

1.算法描述

   NSGA-II是基于的非支配排序的方法,在NSGA上进行改进,也是多目标进化优化领域一个里程碑式的一个算法。

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

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

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

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

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

  在NSGA-中,将进化群体按支配时关系分为若干层,第一层为进化群体的非支配个体集合,第二层为在进化群体中去掉第一层个体后所求得的非支配个体集合,第三层为在进化群体中去掉第一层和第二层个体后所求得的非支配个体集合,依此类推。选择操作首先考虑第一层非支配集,按照某种策略从第一层中选取个体;然后再考虑在第二层非支配个体集合中选择个体,依此类推,直至满足新进化群体的大小要求。

2.仿真效果预览
matlab2022a仿真结果如下:

1.png
2.png
3.png

3.MATLAB核心程序

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
 
figure;
plot(bests1);
xlabel('迭代过程');
ylabel('任务完成时间');
figure;
plot(bests2);
xlabel('迭代过程');
ylabel('所有任务计算完成时间之和');
figure;
plot(bests3);
xlabel('迭代过程');
ylabel('单个任务样本完成的最大时间');
% [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
相关文章
|
2天前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-LSTM-SAM网络时间序列预测算法。使用Matlab2022a开发,完整代码含中文注释及操作视频。算法结合卷积层提取局部特征、LSTM处理长期依赖、自注意力机制捕捉全局特征,通过粒子群优化提升预测精度。适用于金融市场、气象预报等领域,提供高效准确的预测结果。
|
2天前
|
算法 数据安全/隐私保护
基于Big-Bang-Big-Crunch(BBBC)算法的目标函数最小值计算matlab仿真
该程序基于Big-Bang-Big-Crunch (BBBC)算法,在MATLAB2022A中实现目标函数最小值的计算与仿真。通过模拟宇宙大爆炸和大收缩过程,算法在解空间中搜索最优解。程序初始化随机解集,经过扩张和收缩阶段逐步逼近全局最优解,并记录每次迭代的最佳适应度。最终输出最佳解及其对应的目标函数最小值,并绘制收敛曲线展示优化过程。 核心代码实现了主循环、粒子位置更新、适应度评估及最优解更新等功能。程序运行后无水印,提供清晰的结果展示。
|
2天前
|
数据安全/隐私保护
基于PID控制器的双容控制系统matlab仿真
本课题基于MATLAB2022a实现双容水箱PID控制系统的仿真,通过PID控制器调整泵流量以维持下游水箱液位稳定。系统输出包括水位和流量两个指标,仿真结果无水印。核心程序绘制了水位和流量随时间变化的图形,并设置了硬约束上限和稳态线。双容水箱系统使用一阶线性微分方程组建模,PID控制器结合比例、积分、微分作用,动态调整泵的输出流量,使液位接近设定值。
|
3天前
|
算法 机器人 数据安全/隐私保护
四自由度SCARA机器人的运动学和动力学matlab建模与仿真
本课题深入研究SCARA机器人系统,提出其动力学与运动学模型,并基于MATLAB Robotics Toolbox建立四自由度SCARA机器人仿真对象。通过理论结合仿真实验,实现了运动学正解、逆解及轨迹规划等功能,完成系统实验和算法验证。SCARA机器人以其平面关节结构实现快速定位与装配,在自动生产线中广泛应用,尤其在电子和汽车行业表现优异。使用D-H参数法进行结构建模,推导末端执行器的位姿,建立了机器人的运动学方程。
|
3天前
|
算法 数据挖掘 数据安全/隐私保护
基于CS模型和CV模型的多目标协同滤波跟踪算法matlab仿真
本项目基于CS模型和CV模型的多目标协同滤波跟踪算法,旨在提高复杂场景下多个移动目标的跟踪精度和鲁棒性。通过融合目标间的关系和数据关联性,优化跟踪结果。程序在MATLAB2022A上运行,展示了真实轨迹与滤波轨迹的对比、位置及速度误差均值和均方误差等关键指标。核心代码包括对目标轨迹、速度及误差的详细绘图分析,验证了算法的有效性。该算法结合CS模型的初步聚类和CV模型的投票机制,增强了目标状态估计的准确性,尤其适用于遮挡、重叠和快速运动等复杂场景。
|
1天前
|
算法 数据安全/隐私保护
基于Adaboost的数据分类算法matlab仿真
本程序基于Adaboost算法进行数据分类的Matlab仿真,对比线性与非线性分类效果。使用MATLAB2022A版本运行,展示完整无水印结果。AdaBoost通过迭代训练弱分类器并赋予错分样本更高权重,最终组合成强分类器,显著提升预测准确率。随着弱分类器数量增加,训练误差逐渐减小。核心代码实现详细,适合研究和教学使用。
|
7月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
284 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
7月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
169 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
7月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
144 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
10月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度

热门文章

最新文章