MATLAB绘制调度任务甘特图 matlab画动图调速度
bigegpt 2024-10-06 02:45 6 浏览
工序调度优化相关的问题需要绘制甘特图来表示优化的结果,今天主要是介绍绘制甘特图的自定义函数,同时也收集了网上一些相关的程序。
1.绘制甘特图的自定义函数
主程序
clc;%除命令行窗口命令
clear all;%清除工作区变量
close all;%关闭图形窗口
max_time = 160;%最大完工时间
max_tap = 10;%总间隔
total_task = 10;%总任务数
start_time =[13 104 89 1 5 54 43 91 95 1];%每个任务起始时间
persist_time = [41 19 6 12 37 34 48 10 56 3];%每个任务持续时间
id =[2 10 3 2 6 2 7 7 3 5]; %每个任务编号 纵轴的位置
gante(total_task,start_time,persist_time,id )%调用自定义函数
甘特图自定义函数 gante.m
function gante(total_task,start_time,persist_time,id )
%% 函数功能 绘制甘特图
%作者:风云龙 2022年10月11日
%参考内容:CSDN作者HowardGe的文章《Matlab 画甘特图》
%参考文章链接为https://blog.csdn.net/howardge/article/details/24147657
%% 函数输入:
%total_task 任务总数
%start_time 任务开始时间
%persist_time 任务持续时间
%% 函数输出:生成多种格式的甘特图 图片
s = rng;%初始化随机数
%id 任务编号
rec=[0,0,0,0];%每个矩形的初始化值 四个顶点的值
%绘制调度图
for i =1:total_task
color = rand(total_task,3); %生成随机数颜色
%矩形的四个顶点
rec(1) = start_time(i);
rec(2) = id (i);
rec(3) = persist_time(i);
rec(4) = 1;
rectangle('Position',rec,'LineWidth',2,'LineStyle','-.','FaceColor',color(i,:));%画每个矩形窗口
% rectangle函数创建带有尖角或圆角的矩形
text((start_time(i)+persist_time(i)/3),(id(i)+0.5),['t',int2str(i)]);%每个任务的编号
end
box on;%设置外框
grid on;%绘制网格
xlabel('time/hour');%设置横坐标
ylim([1 total_task+2]);%设置纵坐标
set(gca,'FontName','Times New Roman','FontSize',12);%修改字体为古罗马
%自动保存生成的图片
formats = {'bmp','emf','pbm','pdf','pgm','png','ppm','tiff','fig','eps','svg'} ;%用元胞类型存储 图片类型
filename = 'gante_figure';%文件名称
for i = 1:length(formats)
saveas(gcf,filename,formats{1,i});%保存
end
end
绘制结果
2.其他绘制甘特图程序
程序1
%fileName:mt06_final.mt06
%fileDescription:create a Gantt chart whith the data given
%creator:by mnmlist
%Version:1.0
%last edit time:06-05-2015
clc;
clear all;
close all;
axis([0,56,0,6.5]);%x轴 y轴的范围
set(gca,'xtick',0:2:56) ;%x轴的增长幅度
set(gca,'ytick',0:1:6.5) ;%y轴的增长幅度
xlabel('加工时间'),ylabel('机器号');%x轴 y轴的名称
title('mt06 的一个最佳调度(最短完工时间为55)');%图形的标题
n_bay_nb=6;%total bays //机器数目
n_task_nb = 36;%total tasks //任务数目
%x轴 对应于画图位置的起始坐标x
n_start_time=[0 1 0 8 8 13 6 10 13 1 16 13 22 13 22 25 18 27 25 19 28 31 28 31 38 30 38 42 45 38 48 45 49 49 48 52];%start time of every task //每个工序的开始时间
%length 对应于每个图形在x轴方向的长度
n_duration_time =[1 5 8 5 5 3 4 8 10 3 3 9 3 5 5 6 9 3 5 9 10 1 10 7 4 8 10 3 9 7 3 4 6 1 4 1];%duration time of every task //每个工序的持续时间
%y轴 对应于画图位置的起始坐标y
n_bay_start=[2 2 1 1 2 1 3 5 4 0 3 2 1 0 2 1 0 3 4 5 0 1 5 3 5 4 0 5 5 4 0 4 4 2 3 3]; %bay id of every task ==工序数目,即在哪一行画线
%工序号,可以根据工序号选择使用哪一种颜色
n_job_id=[0 2 1 3 1 5 2 2 1 0 5 4 4 3 3 0 2 3 4 5 5 2 1 0 4 3 1 0 3 2 4 5 0 5 1 4];%
rec=[0,0,0,0];%temp data space for every rectangle
color=['r','g','b','c','m','y'];
for i =1:n_task_nb
rec(1) = n_start_time(i);%矩形的横坐标
rec(2) = n_bay_start(i)+0.7; %矩形的纵坐标
rec(3) = n_duration_time(i); %矩形的x轴方向的长度
rec(4) = 0.6;
txt=sprintf('p(%d,%d)=%d',n_bay_start(i)+1,n_job_id(i)+1,n_duration_time(i));%将机器号,工序号,加工时间连城字符串
rectangle('Position',rec,'LineWidth',0.5,'LineStyle','-','FaceColor',color(n_job_id(i)+1));%draw every rectangle
text(n_start_time(i)+0.2,(n_bay_start(i)+1),txt,'FontWeight','Bold','FontSize',18);%label the id of every task ,字体的坐标和其它特性
end
% ————————————————
% 版权声明:本文为CSDN博主「mnmlist_tata」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
% 原文链接:https://blog.csdn.net/mnmlist/article/details/45744539
运行结果
程序2
clc;
clear all;
close all;
%机器 任务 时间1 时间2 属性
a={1 '#3 (25,000)' 0 100 3;
1 '#4 (24,000)' 100 196 4;
1 '#8 (24,000)' 196 372 8;
2 '#1 (16,000)' 0 48 1;
2 '#2 (26,000):' 48 126 2;
2 '#11 (82,300)' 126 372 11;
3 '#5 (15,000)' 0 60 5;
3 '#4 (17,000)' 60 128 4;
3 '#6 (18,000)' 128 200 6;
3 '#10 (43,055)' 200 372 10;
4 '#7 (22,000)' 0 35 7;
4 '#8 (103,000)' 35 200 8;
4 '#9 (107,638)' 200 372 9;};
xlabels = string({"0","50","100","150","200","250","300","350"});
ylabels = string({"DS1","DS2","DS3","DS4"});%num2str((1:max(a(:,1)))','DS%d');
h=figure(1);
clf;
w=0.5;
set(gcf,'color','w');
%配色方案
colors = {[51,204,255]/255;
[255,255,0]/255;
[51,204,102]/255;
[51,255,204]/255;
[255,255,153]/255;
[219,186,119]/255;
[204,255,255]/255;
[102,255,51]/255;
[255,204,0]/255;
[102,153,255]/255;
[153,204,51]/255;};
for ii=1:size(a,1)
% 利用颜色区分所装的原油类型
x=cell2mat({a{ii,[3 3 4 4]}});
y=a{ii,1}+[-w/2 w/2 w/2 -w/2];
p=patch('xdata',x,'ydata',y,'facecolor',[1 1 1],'LineWidth',1.5); %这里[1,1,1]可以用上面的颜色代替,以标识不同的颜色
text(a{ii,3}+0.5,a{ii,1},a{ii,2},'FontSize',9);
end
set(gca,'Box','on');
set(gca,'XTick',0:50:350);
set(gca,'YTick',0:max(cell2mat({a{:,1}})));
set(gca,'XTickLabel',xlabels);
set(gca,'YTickLabel',['',ylabels,'']);
% 设置宽高
set(gcf,'position',[500,300,1000,250]);
box off;
annotation1 = annotation(h,'arrow',[0.131 0.131],[0.92 0.96]);
annotation2 = annotation(h,'arrow',[0.88 0.91],[0.11 0.11]);
% 设置坐标轴字体大小
set(gca,'FontName','Times New Roman','FontSize',12,'LineWidth',1.5);
axis([0 400 0 5]);
% ————————————————
% 版权声明:本文为CSDN博主「CallMeJacky」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
% 原文链接:https://blog.csdn.net/zyxhangiian123456789/article/details/105490650
程序运行结果
程序3
clc;
clear all;
close all;
%% 矩形里的数字是任务编号,纵坐标是资源,横坐标是工期
data=[
0 3 0 6 2; %x范围 y范围 编号
3 8 0 7 4;
3 9 7 9 5;
8 14 0 2 6;
9 11 2 7 7
12 13 2 9 3
13 17 2 8 8
17 19 0 2 9];
x=data(:,[1 1 2 2])';
y=data(:,[3 4 4 3])';
%抽出data第一行看
%data(1,[1 1 2 2])=[0 0 3 3]
%data(1,[3 4 4 3])=[0 6 6 0]
%表示(0,0)-(0,6)-(3,6)-(3,0)四点组成的矩形
%用patch就可以画出这个矩形
%不过patch要求每一列画一个多边形,所以最后要转置
cla;
patch('xdata',x,'ydata',y,... %根据x,y画框框
'facecolor','none','edgecolor','k');%框框面和边的颜色
xl=(data(:,1)+data(:,2))/2;%x的平均值作为标记的x坐标
yl=(data(:,3)+data(:,4))/2;%y的平局值作为标记的y坐标
label=num2str(data(:,5));%data的第5列转为字符,作为标记内容
text(xl,yl,label);%显示标记
%https://zhidao.baidu.com/question/1947285617765777428
运行结果
程序4
clc;
clear all;
close all;
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
set(gca, 'YTickLabel', {'0', 'M_{1}', 'M_{2}', 'M_{3}'});
% ————————————————
% 版权声明:本文为CSDN博主「谢师傅season」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
% 原文链接:https://blog.csdn.net/weixin_43840701/article/details/107092800
运行结果
程序5
clc;
clear all;
close all;
%% 基础设置
axis([0, 20, 0, 5.5]);
set(gca, 'xtick', 0 : 1 : 20);
set(gca, 'ytick', 0 : 1 : 10.5);
xlabel('购买年与结投年'), ylabel('证券种类');
title('证券投资年份');
Number_securities = 15;
Number_task = 15;
%% 对应坐标
X_start_time = [1 11 10 1 5 16 1 16 5 1 17 4 1 18 3];
X_duration_time = [10 2 10 4 2 4 15 2 15 16 2 16 17 2 17];
Y_start_time = [1 1 2 3 3 4 5 5 6 7 7 8 9 9 10];
N_job_id = [1 1 1 2 2 2 3 3 3 4 4 4 5 5 5];
rec = [0 0 0 0 ];
color=['r','g','b','c','m'];
%% 绘图
for i = 1 : Number_securities
rec(1) = X_start_time(i);
rec(2) = Y_start_time(i) + 0.7;
rec(3) = X_duration_time(i);
rec(4) = 0.6;
txt=sprintf('(%d,%d)', N_job_id(i)+1, X_duration_time(i));
rectangle('Position',rec,'LineWidth',0.5,'LineStyle','-');
text(X_start_time(i)+0.2,(Y_start_time(i)+1),txt,'FontWeight','Bold','FontSize',18);
end
% ————————————————
% 版权声明:本文为CSDN博主「天威难测」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
% 原文链接:https://blog.csdn.net/m0_53347750/article/details/123295425
运行结果
参考内容
[1] CSDN博主HowardGe的文章《Matlab 画甘特图》,文章链接为:https://blog.csdn.net/howardge/article/details/24147657
[2] CSDN博主mnmlist_tata的文章《matlab画甘特图》,文章链接为:
https://blog.csdn.net/mnmlist/article/details/45744539
[3] CSDN博主CallMeJacky的文章《【Matlab】简单甘特图绘制》,文章链接为:
https://blog.csdn.net/zyxhangiian123456789/article/details/105490650
[4] 百度知道答主dukinkin的回答,文章链接为;
https://zhidao.baidu.com/question/1947285617765777428
[5] CSDN博主谢师傅season的文章《matlab画调度甘特图》,文章链接为:
https://blog.csdn.net/weixin_43840701/article/details/107092800
相关推荐
- 5分钟调色大片的方法(5分钟调色大片的方法有哪些)
-
哈喽大家好。在大家印象中一定觉得ps非常难学非常难。大家不要着急,小编的教学都是针对ps零基础的同学的,而且非常实用哦。只要大家跟着图文练习一两遍,保证大家立马学会~!好了,废话少说,下面开始我们今天...
- 闪白特效原来是这么用的(闪白特效怎么使用)
-
作者|高艳侠订阅|010-86092062闪白特效是影视作品中应用比较多的效果之一,那么具体该在哪些场景使用闪白特效?具体该如何操作?下面就以AdobePremiere(以下简称PR)为例,...
- ppt常用小图标去哪里找?3个矢量素材网站推荐!
-
ppt是一个注重可视化表达的演示载体,除了高清图片,ppt中另一类常用的素材是各种小图标,也叫矢量图标,巧妙运用小图标能提升整体美观度和表现力,那么ppt常用小图标去哪里找呢?为方便各位快速找到合适的...
- 有什么好用的截图录屏工具?试试这9款
-
经常有朋友反馈苦于缺乏截屏和录屏的趁手工具,本期我们分享几个相当好用的截屏和录屏工具,希望能帮到大家。ScreenToGifScreenToGif是一款免费且开源的录屏工具。此款工具最大的特点是可以...
- 配色苦手福音!专业快速色环配色PS插件
-
今天橘子老师给的大家介绍的是一款快速配色的插件,非常强大配色苦手福音来啦!(获取方式见文末)【插件介绍】配色在后期设计中占有主导地位,好的配色能让作品更加抢眼Coolorus这款专业的配色插件,能够...
- 如何用PS抠主体?(ps怎么抠主体)
-
1.主体法抠图-抠花苞和花梗导入一张荷花苞的照片,点击上图中顶部“选择”菜单栏,下拉单击“主体”。可以看到,只有花苞被选中,但是花梗并没有被选中。接下来单击上图中左侧工具栏的“快速选择工具”,上图中顶...
- 2799元的4K电视,有保障吗?(买4k电视机哪个品牌好)
-
在上一期《电脑报》的3·15专题报道中,我们揭露了一款不靠谱的42英寸4K智能电视——TCLD42A561U。这款售价2699元的4K智能电视不仅4K画质方面存在严重问题,而且各种功能和应用体验也不理...
- 苹果电脑的Touch Bar推出一段时间了 这款工具可以帮你开发适用于它的APP
-
距离苹果推出带有TouchBar的MacBookPro已经有一段时间了,除了那些像Adobe、Google和Microsoft大公司在开发适用于TouchBar的应用之外,其实还有很多独立的开...
- 如魔法般吸取颜色的桌灯(如魔法般吸取颜色的桌灯叫什么)
-
色彩为生活带来的感官刺激,逐渐被视为理所当然。一盏桌灯运用它的神奇力量,将隐藏于物件中的颜色逐一释放,成为装点环境的空间魔法师。ColorUp是一款可以改变颜色的吸色台灯,沿用传统灯泡的造型,融入了拾...
- 一篇文章带你用jquery mobile设计颜色拾取器
-
【一、项目背景】现实生活中,我们经常会遇到配色的问题,这个时候去百度一下RGB表。而RGB表只提供相对于的颜色的RGB值而没有可以验证的模块。我们可以通过jquerymobile去设计颜色的拾取器...
- ps拾色器快捷键是什么?(ps2019拾色器快捷键)
-
ps拾色器快捷键是什么?文章末尾有获取方式,按照以下步骤就能自动获得!学会制作PS特效需要一定程度的耐心和毅力。初学者可以从基本的工具和技术开始学习,逐渐提高他们的技能水平。同时,观看更多优秀的特效作...
- 免费开源的 Windows 截图录屏工具,支持 OCR 识别和滚动截图等
-
功能很强大、安装很小巧的免费截图、录屏工具,提供很多使用的工具来帮我么能解决问题,推荐给大家。关于ShareXShareX是一款免费的windows工具,起初是一个小巧的截图工具,经过多年的迭...
- 入门到精通系列PS教程:第13篇 · 拾色器、颜色问题说明及补充
-
入门到精通系列PS教程:第13篇·拾色器、颜色问题说明及补充作者|侯潇问题说明我的第12篇教程里,有个小问题没有说清楚。要说是错误,又不算是错误,只是没有说准确。写完那篇教程后,因为已经到了深...
- PS冷知识:用吸管工具吸取屏幕上的任意颜色
-
今天,我们给大家介绍PS中的一个冷知识:用吸管工具可以吸取屏幕上的任意颜色。其实,操作起来是非常简单的。大多数情况下,我们认为,PS的吸管工具只能吸取PS软件作图区域范围内的颜色,最多加上画布四周的...
- Windows 11 将提供内置颜色选择器工具
-
Windows11内置了颜色选择器,可以扫描并识别屏幕上的颜色并生成颜色代码。此外,微软还利用人工智能技术,让屏幕上的文本扫描和选择变得更加便捷。这两项功能均已在SnippingToolv1...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- libcrypto.so (74)
- linux安装minio (74)
- ubuntuunzip (67)
- vscode使用技巧 (83)
- secure-file-priv (67)
- vue阻止冒泡 (67)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)