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

64 阅读2分钟

1.程序功能描述

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

 

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

MATLAB2022a版本运行

 

1.jpeg

2.jpeg

3.jpeg

4.jpeg  

 

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(x10.55+x20.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难的特性,传统的优化方法往往难以在合理时间内找到最优解。因此,启发式算法和元启发式算法成为了解决这类问题的主流方法。

 

15585453cbad9562b122d077bafaeedc_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png