绘制甘特图函数 function plot_gantt_chart(job_num, machine_num, start_time, makespan) color = lines(job_num); figure; for i = 1:job_num for j = 1:machine_num x = [start_time(i, j) start_time(i, j) start_time(i, j)+start_time(job_num, machine_num)]; y = [i-0.4 i+0.4 i]; patch(x, y, color(i, :)); end end xlabel('时间'); ylabel('工件'); % xlim([0 makespan]); % ylim([0 job_num+1]); title('甘特图'); end优化代码
时间: 2023-12-30 17:04:38 浏览: 106
好的,下面是一个优化后的 Matlab 实现:
```matlab
function plot_gantt_chart(job_num, machine_num, start_time, makespan)
% 生成颜色矩阵
color = lines(job_num);
% 绘制甘特图
for i = 1:job_num
for j = 1:machine_num
x = [start_time(i, j), start_time(i, j), start_time(i, j) + start_time(job_num, machine_num)];
y = [i - 0.4, i + 0.4, i];
patch(x, y, color(i, :), 'EdgeColor', 'none');
end
end
% 设置坐标轴标签和范围
xlim([0, makespan]);
ylim([0.5, job_num + 0.5]);
xlabel('Time');
ylabel('Job');
% 设置作业名称
for i = 1:job_num
text(0, i, strcat('Job', num2str(i)), 'HorizontalAlignment', 'right');
end
% 设置标题
title('Gantt Chart');
end
```
在这个实现中,我们使用 Matlab 的 `patch` 函数绘制甘特图,并将所有矩形的边框颜色设置为无色,以避免重叠产生的黑线。同时,我们将设置坐标轴范围和作业名称的代码移到了最后,以提高代码可读性。
阅读全文