基于PPNSA+扰动算子的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

5.完整程序


1.程序功能描述

        基于PPNSA+扰动算子的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图和优化收敛曲线。

2.测试软件版本以及运行结果展示

MATLAB2022a版本运行

3.核心程序

..................................................................
[Xs,ff] = func_initial(T,Npop);
fout    = zeros(Iters,1);       

for i = 1:Iters
    i
    [ff,I] = sort(ff,'descend');
    Xs     = Xs(I,:);
    Pmax   = Xs(1,:);
    Fmax   = ff(1);
    %子种群
    for j = 1:Pop_n
        Pops              = Xs(j:Pop_n:end,:);            
        ff_               = ff(j:Pop_n:end,:);
        [Popss,F3]        = func_FLA(T,Pops,ff_,Pmax,Fmax);
        Xs(j:Pop_n:end,:) = Popss;
        ff(j:Pop_n:end,:) = F3;
    end
    % 进化结果评估
    [Xsolve,ybest]  = func_Eval(Xs,ff);

    fout(i)         = -mean(ybest);
end


 


figure
[Fouts,Etime] = func_fitness(T,Xsolve);
Stime         = Etime-T(:,Xsolve); % 开始时间
fval          = -Fouts;
M1            = size(T,1);    % 行数M1为机器数
NX            = length(Xsolve);    % 列数NX为工件数
for i = 1:M1
    for j = 1:NX
        x1 = Stime(i,j);
        x2 = Etime(i,j);
        y1 = i-1;
        y2 = i-0.05;
        fill([x1 x2 x2 x1],[y1 y1 y2 y2],[0,1,0]);
        text(x1*0.55+x2*0.45,(y1+y2)/2,[num2str(Xsolve(j))],'Fontsize',8,'Color','k');
        hold on;
    end
    text(-0.8,(y1+y2)/2,['机器 ',num2str(i)],'Fontsize',8,'Color','k');
end

hold off; 
xlabel('时间'); 
set(gca,'ytick',[],'YDir','reverse','Color',[1 1 1]);
axis([0 fval 0 M1-0.05]);
title(['工件数:',num2str(NX),', 机器数:',num2str(M1),', 最优值:',num2str(fval)]);


figure;
plot(1:Iters,fout(1:end),'b-o'); 
grid on;
xlabel('进化代数'); 
ylabel('适应度');
28

4.本算法原理

         车间调度问题(Job Shop Scheduling Problem, JSSP)是制造业中非常关键的一类优化问题。它涉及到多个工件在多个机器上的加工顺序安排,目标通常是最小化完成所有工件的总时间,即最小化最大完工时间(Makespan)。由于JSSP具有NP难的特性,传统的优化方法往往难以在合理时间内找到最优解。因此,启发式算法和元启发式算法成为了解决这类问题的主流方法。

5.完整程序

VVV

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-18 10:40:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-18 10:40:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-18 10:40:01       82 阅读
  4. Python语言-面向对象

    2024-02-18 10:40:01       91 阅读

热门阅读

  1. MySQL中的聚集索引和非聚集索引

    2024-02-18 10:40:01       55 阅读
  2. MySQL-存储过程(PROCEDURE)

    2024-02-18 10:40:01       43 阅读
  3. 前端主流框架:项目运行命令 npm 详解

    2024-02-18 10:40:01       54 阅读
  4. ES6中的数组解构赋值【详解】

    2024-02-18 10:40:01       56 阅读
  5. sql常用语句小结

    2024-02-18 10:40:01       46 阅读
  6. sqlserver union 和union all

    2024-02-18 10:40:01       48 阅读
  7. 算法训练营day30,贪心算法4

    2024-02-18 10:40:01       63 阅读