典型JSP车间调度问题学习6

根据调度方案绘制Gant图

step1:熟悉绘图命令

line([1 2],[4 4])%画出一条直线

结果如下图

那么我们画Gant图是要有一定宽度的 ,那么线的宽度是可以设定的

line([1 2],[4 4],'lineWidth',2)%线宽为2
line([1 2],[4 4],'lineWidth',4)%线宽为4
line([3 4],[4.5 4.5],'lineWidth',2,'color','red')%线宽为2,且颜色为红色

 如何指定纵坐标的范围呢

line([1 2],[4 4],'lineWidth',2)%线宽为2
line([1 2],[4 4],'lineWidth',4)%线宽为4
line([3 4],[4.5 4.5],'lineWidth',2,'color','red')%线宽为2,且颜色为红色
ylim([3 6])%限制y坐标的范围

step2:编写根据调度方案数据来进行Gant图绘制的程序

X轴的起点和终点就是调度方案中的开始时间(startime),结束时间(endtime)

Y轴就是机器的编号,机器1纵坐标就是1,机器2纵坐标就是2

step3:对gant图进行美化设计:

纵坐标范围设置,ylim

线条的宽度,属性:linewidth

线条颜色设定不同色,属性:color,       

[1]    使用标准颜色实现, y r b
[2]    使用三元组数据来实现相同作业的甘特图形状为同一种颜色

线条对应的作业编号、工序编号,text()

%根据调度方案绘制甘特图程序
function drawGant(schedule)
  rows=size(scheduie,1)%我们先看schedule有多少行
  maxMachId=max(schedule(:,2));%确定最大机器编号
  mycolor=['r' 'g' 'b' 'y' 'c' 'm']%设定每条线的颜色
  figure;
  ylim([0 maxMachId+1]);%让图更美观
  for i=1:rows  %然后每一行画一个图
    x=schedule(i,4:5);
    y=[schedule(i,2) schedule(i,2)];
    line(x,y,‘linwidth’,16,‘color’,mycolor(schedule(i,1)));
    procId=schedule(i,3);
    jobId=schedule(i,1);
    txt=['['int2str(jobId)' 'int2str(procId)']'];
    text(mean(x)-1,y(1),txt);
end

这里作业数量是六种,颜色也是六种 ,那如果有多种作业需要换种方法,让颜色随机处理

%根据调度方案绘制甘特图程序
function drawGant(schedule)
  rows=size(scheduie,1)%我们先看schedule有多少行
  maxMachId=max(schedule(:,2));%确定最大机器编号
  jobQty=max(schedule(:,1))%首先找到作业的数量
  mycolor=rand(jobQty,3)%随机设定每条线的颜色
  figure;
  ylim([0 maxMachId+1]);%让图更美观
  for i=1:rows  %然后每一行画一个图
    x=schedule(i,4:5);
    y=[schedule(i,2) schedule(i,2)];
    line(x,y,‘linwidth’,16,‘color’,mycolor(schedule(i,1),:));%用schedule(i,1)这一行的三个数字作为颜色的三元组
    procId=schedule(i,3);
    jobId=schedule(i,1);
    txt=['['int2str(jobId)' 'int2str(procId)']'];
    text(mean(x)-1,y(1),txt);
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值