matlab画调度甘特图
所采用案例为高亮老师书《柔性作业车间调度智能算法及其应用》第16页甘特图clearaxis([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)ylabe
·
所采用案例为高亮老师书《柔性作业车间调度智能算法及其应用》第16页甘特图
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可以识别LaTeX,如果不会LaTeX可以借助MathType,具体操作如下:
在脚本文件的最后一行添上
set(gca, 'YTickLabel', {'0', '$M_{1}$', '$M_{2}$', '$M_{3}$'});

此时,纵轴就变成了所需的机器号,而不是单纯地显示数据。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)