matlab画调度甘特图

所采用案例为高亮老师书《柔性作业车间调度智能算法及其应用》第16页甘特图
matlab画调度甘特图_第1张图片

clear
axis([0,18,0,3.5]);                     %x轴 y轴的范围
set(gca,'xtick',0:2:18) ;               %x轴的增长幅度
set(gca,'ytick',0:1:3.5) ;              %y轴的增长幅度
xlabel('加工时间','FontName','微软雅黑','Color','b','FontSize',16)
ylabel('机器号','FontName','微软雅黑','Color','b','FontSize',16,'Rotation',90)
title('P16示例(最短完工时间为16)','fontname','微软雅黑','Color','b','FontSize',16);
taskNum = 9;                            %任务数目
macStartTime = [0 3 5 0 5 8 3 8 13];    %各工序开始时间
macDurationTime = [3 2 4 3 3 3 3 5 3];  %各工序持续时间
macInfo = [0 0 0 1 1 1 2 2 2];          %在哪台机器上进行绘制,对应于y坐标,M1=0,M2=1…以此类推
jobId = [1 0 2 2 0 1 1 0 2];            %工件号,用于颜色索引,J1=0,J2=1…以此类推
oper=[1 1 2 1 2 3 2 3 3];               %第几道工序
rec = [0,0,0,0];
color = [0.8,0.8,0;
         0,1,0.8;
         0,0.8,1;
        ];
for i = 1 : taskNum
    rec(1) = macStartTime(i);           %矩形的横坐标
    rec(2) = macInfo(i)+0.7;            %矩形的纵坐标
    rec(3) = macDurationTime(i);        %矩形的x轴方向的长度
    rec(4) = 0.6;                       %矩形高度
    txt = sprintf('J%d.%d',jobId(i)+1,oper(i));   
    rectangle('Position',rec,'LineWidth',0.5,'LineStyle','-','FaceColor',[color(jobId(i)+1,1),color(jobId(i)+1,2),color(jobId(i)+1,3)]);%draw every rectangle [1,1,1]表示全白色
    text(macStartTime(i)+0.2,(macInfo(i)+1),txt,'FontWeight','Bold','FontSize',16);%label the id of every task  ,字体的坐标和其它特性
end

matlab画调度甘特图_第2张图片
发现纵轴显示的是数字,而并非我们所需的机器号,matlab可以识别LaTeX,如果不会LaTeX可以借助MathType,具体操作如下:
matlab画调度甘特图_第3张图片
在脚本文件的最后一行添上

set(gca, 'YTickLabel', {'0', '$M_{1}$', '$M_{2}$', '$M_{3}$'});

matlab画调度甘特图_第4张图片
此时,纵轴就变成了所需的机器号,而不是单纯地显示数据。

你可能感兴趣的:(甘特图,算法,matlab)