绘制甘特图函数 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优化代码用矩形表示甘特图
时间: 2024-02-04 20:01:59 浏览: 46
要用矩形表示甘特图,可以将 patch 函数替换为 rectangle 函数,具体修改如下:
```
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);
y = i-0.4;
w = start_time(job_num, machine_num);
h = 0.8;
rectangle('Position',[x, y, w, h],'FaceColor',color(i,:));
end
end
xlabel('时间');
ylabel('工件');
xlim([0 makespan]);
ylim([0 job_num+1]);
title('甘特图');
end
```
在每个循环中,我们使用 rectangle 函数绘制一个矩形,其位置和大小分别由 x、y、w、h 四个参数定义。其中,x 和 y 分别表示矩形的左下角顶点的 x、y 坐标,w 和 h 分别表示矩形的宽度和高度。我们将矩形的高度设置为 0.8,与原来的代码中绘制的图形相同,而将矩形的宽度设置为对应作业的运行时间,这样就能够用矩形直接表示出甘特图中每个作业的运行时间段了。
阅读全文